RFR: JDK-8145788: JVM crashes with -XX:+EnableTracing
David Holmes
david.holmes at oracle.com
Wed Jan 6 06:36:19 UTC 2016
Pinging the serviceability tracing experts please!
David
On 24/12/2015 12:25 AM, Yasumasa Suenaga wrote:
> Hi David,
>
>>> 1. Initialize JavaThread before calling apply_ergo() in create_vm().
>>
>> That is not likely to be an option - it would likely be far too
>> disruptive to the initialization sequence.
>
> Agree. Thus I choose 2.
>
>> We will have to wait for the tracing experts to have a good look at
>> this.
>
> I'm waiting that the tracing experts join this discussion.
>
>
> Thanks,
>
> Yasumasa
>
>
> On 2015/12/23 13:20, David Holmes wrote:
>> Hi Yasumasa,
>>
>> On 23/12/2015 11:49 AM, Yasumasa Suenaga wrote:
>>> Hi David,
>>>
>>> I've added callstack when JVM crashed:
>>> https://bugs.openjdk.java.net/browse/JDK-8145788?focusedCommentId=13880225&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13880225
>>
>> Thanks for that.
>>
>>> This crash occurrs in Arguments::apply_ergo() in Threads::create_vm().
>>> apply_ergo() calls before JavaThread initialization.
>>>
>>> I think that TraceEvent can avoid crash with two approach:
>>>
>>> 1. Initialize JavaThread before calling apply_ergo() in create_vm().
>>
>> That is not likely to be an option - it would likely be far too
>> disruptive to the initialization sequence.
>>
>>> 2. Avoid crash at TraceEvent when it is called before JavaThread initialization.
>>
>> Or don't call it at all.
>>
>> We will have to wait for the tracing experts to have a good look at
>> this. We end up in code that is not expecting to be run before more of
>> the VM is initialized, so we have to look at what else may be being
>> assumed and then decide whether to handle the situation or avoid it.
>>
>> Thanks,
>> David
>>
>>>
>>> Thanks,
>>>
>>> Yasumasa
>>>
>>>
>>> On 2015/12/22 21:19, David Holmes wrote:
>>>> On 19/12/2015 1:50 AM, Yasumasa Suenaga wrote:
>>>>> Hi all,
>>>>>
>>>>> I encountered JVM crash when I passed -XX:+EnableTracing.
>>>>>
>>>>> I checked core image, it crashed in EventBooleanFlagChanged::writeEvent()
>>>>> which is called by Arguments::apply_ergo() because thread had not been
>>>>> initialized. (JVM seems to log changing GC algorithm to G1.)
>>>>
>>>> This seems like a logic error to me - something is trying to happen too
>>>> early during VM initialization. We need to look at exactly what we are
>>>> trying to do here, not just work around the crash.
>>>>
>>>> David
>>>> -----
>>>>
>>>>> writeEvent() uses ResourceMark. Default constructor of ResourceMark uses
>>>>> ResourceArea in current thread. So ResourceMark in writeEvent() should
>>>>> pass valid ResourceArea.
>>>>>
>>>>> I think this issue is in traceEventClasses.xsl .
>>>>> However, my environment (GCC 5.3.1 on Fedora23) cannot build it because
>>>>> -Werror=maybe-uninitialized was occurred.
>>>>> So I also fixed them together.
>>>>>
>>>>> I've uploaded webrev. Could you review it?
>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8145788/webrev.00/
>>>>>
>>>>> I'm jdk9 committer, however I cannot access JPRT.
>>>>> So I need a sponsor.
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Yasumasa
>>>>>
More information about the serviceability-dev
mailing list