summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy McFadden <fadden@android.com>2010-02-03 07:21:14 -0800
committerAndy McFadden <fadden@android.com>2010-02-03 13:31:34 -0800
commita9a9ec185cec61f90ab5e1126e8c5c7a1e6b0013 (patch)
treeae0d6c4c9953c8f6068b1ac76c557143f4c0542d
parentcdc0d3c98667a292bf49696d18e961f9648d40bd (diff)
downloadlibcore-a9a9ec185cec61f90ab5e1126e8c5c7a1e6b0013.zip
libcore-a9a9ec185cec61f90ab5e1126e8c5c7a1e6b0013.tar.gz
libcore-a9a9ec185cec61f90ab5e1126e8c5c7a1e6b0013.tar.bz2
Fix stack overflow edge case.
When a stack overflows, Dalvik allows the stack to expand into a "reserved" area, so that it has enough room to create and initialize the StackOverflowError object. While the stack is expanded we also do the search for an appropriate "catch" block, which may require resolving some exception classes. As it happens, things go badly when the "catch" resolution throws an exception. The VM tries to shrink the stack back down after the second exception is finished, rather than waiting for the initial SOE to finish. Since we still have some additional frames on the stack, we're still occupying the "reserved" area, and the VM aborts when it detects the situation. This changes the stack cleanup to wait until the SOE is being dealt with. For bug 2398031.
0 files changed, 0 insertions, 0 deletions