Hi,
Is it safe to write NULL to 'frame->stack_trace_element' anywhere
outside of Java_java_lang_Throwable_nativeGetStackTraceList()?
If not, why do we need to keep these (apart from efficiency)?
If so, is it furthermore safe to write arbitrary values to
'frame->stack_trace_element' anywhere outside of
[...]nativeGetStackTraceList()?
Thanks,
Chris
P.S. It is a bit of a long story. Quickly: if a parent speculative
thread throws an exception, but the exception is caught and handled by
the parent without touching the frame that the child was forked in, we
don't need to kill the child. However, there may be pointers to cached
stackTraceElement's on the stack in the parent as a result of calling
Throwable.getStackTrace(), and this invalidates the speculation that the
stack after return from a method call is identical to the stack before
return from a method call.
|