RFR 8159284: bigapps/Jetty - assert(jfa->last_Java_sp() > sp()) failed with tracing code in use
Coleen Phillimore
coleen.phillimore at oracle.com
Tue Aug 2 15:08:13 UTC 2016
On 8/2/16 10:40 AM, Chris Plummer wrote:
> os::is_first_C_frame() is used by print_native_stack() and
> os::get_native_stack() (NMT) to sanity check the frame walking.
Yes, this uses a different algorithm for native frame walking even
though some of the names of the functions are similar.
Coleen
>
> Chris
>
> On 8/1/16 6:39 PM, dean.long at oracle.com wrote:
>> Upon a closer look, it appears that the backtraces we get for a crash
>> come from print_native_stack() in debug.cpp, and that code uses a
>> slightly different algorithm, so your changes shouldn't affect it.
>>
>> dl
>>
>>
>> On 8/1/16 6:11 PM, dean.long at oracle.com wrote:
>>> Hi Coleen. If I understand correctly, previously we would get
>>> backtraces that end with the first C frame:
>>>
>>> [...]
>>> J 3335 C1 java.lang.Thread.run()V java.base at 9-ea (17 bytes) @
>>> 0xe7fdc480 [0xe7fdc420+0x00000060]
>>> v ~StubRoutines::call_stub
>>> V [libjvm.so+0x66fe39] JavaCalls::call_helper(JavaValue*,
>>> methodHandle const&, JavaCallArguments*, Thread*)+0x2b9
>>> V [libjvm.so+0x931669] os::os_exception_wrapper(void
>>> (*)(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*),
>>> JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x19
>>> V [libjvm.so+0x66eb2b] JavaCalls::call_virtual(JavaValue*, Handle,
>>> KlassHandle, Symbol*, Symbol*, Thread*)+0x13b
>>> V [libjvm.so+0x708069] thread_entry(JavaThread*, Thread*)+0x89
>>> V [libjvm.so+0xaa5434] JavaThread::thread_main_inner()+0xf4
>>> V [libjvm.so+0xaa5589] JavaThread::run()+0x119
>>> V [libjvm.so+0x933cdc] thread_native_entry(Thread*)+0x10c
>>> C [libpthread.so.0+0x6bc9]
>>> C [libc.so.6+0xe2c9e] clone+0x5e
>>>
>>>
>>> but now with your change, won't all backtraces end on the last Java
>>> frame? So the above backtrace would be truncated to:
>>>
>>> [...]
>>> J 3335 C1 java.lang.Thread.run()V java.base at 9-ea (17 bytes) @
>>> 0xe7fdc480 [0xe7fdc420+0x00000060]
>>>
>>>
>>> dl
>>>
>>> On 8/1/16 4:38 PM, Coleen Phillimore wrote:
>>>> Summary: Test condition in assert in frame::safe_for_sender() for
>>>> entry frames and return false.
>>>>
>>>> This bug is for a confidential part of the project that needs more
>>>> robustness checks to verify that frame::sender() can be called.
>>>>
>>>> Also refactored into frame::entry_frame_is_safe() because these
>>>> platforms had the same code for entry frames to determine whether
>>>> it is still safe to trust this frame to call sender(). These
>>>> platforms had also the same assert in sender_for_entry_frame() that
>>>> the sampling code hit.
>>>>
>>>> Tested with our nightly tests on all platforms and bigapps/Jetty.
>>>>
>>>> open webrev at http://cr.openjdk.java.net/~coleenp/8159284.01/webrev
>>>>
>>>> Thanks,
>>>> Coleen
>>>>
>>>
>>
>
More information about the hotspot-dev
mailing list