review request for CR 6361589
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Oct 6 16:17:01 PDT 2010
We should fix it in HS19 also. If we do it this week it will be ready
for next promoted build of 6u23.
Thanks,
Vladimir
Yumin Qi wrote:
> Hi, all
>
> Somehow I missed this email. Yes, Volker is right, this part miss a
> check if _thread is valid.
> We need to fix it under a bug number(even it is a very simple fix). I
> will file a bug for it.
>
> Thanks
> Yumin
>
> On 2010/10/6 11:50, Vladimir Kozlov wrote:
>> Volker,
>>
>> Did you got a respond on this?
>>
>> Thanks,
>> Vladimir
>>
>> Volker Simonis wrote:
>>> Hi Yumin,
>>>
>>> I know that this CR has already been submitted, but I've discovered a
>>> small problem which I think should be fixed. I vmError.cpp you don't
>>> check for '_thread' beeing NULL which can lead to a SIGSEGV if the
>>> VMError object was constructed with a zero thread argument. Instead,
>>> the corresponding if-line should read like the if-lines of the other
>>> steps which use '_thread':
>>>
>>> STEP(135, "(printing target Java thread stack)" )
>>>
>>> // printing Java thread stack trace if it is involved in GC crash
>>> if (_verbose && _thread && (_thread->is_Named_thread())) {
>>>
>>> Thank you and best regards,
>>> Volker
>>>
>>> On Fri, Dec 11, 2009 at 6:10 AM, Yumin Qi <Yumin.Qi at sun.com> wrote:
>>>> Thanks.
>>>>
>>>> I modified the code and submitted again. Please take a look again, will
>>>> commit if it is OK.
>>>>
>>>> Thanks
>>>> Yumin
>>>>
>>>> Coleen Phillimore wrote:
>>>>> Yumin,
>>>>> I've already reviewed a previous version and this still looks great
>>>>> to me.
>>>>> I hope this makes diagnosing crashes during gc much better, rather
>>>>> than
>>>>> having to decode the thread manually as you've been doing for years.
>>>>> Thanks everyone for the additional comments. The later suggested
>>>>> changes
>>>>> are really good.
>>>>>
>>>>> Coleen
>>>>>
>>>>> Yumin Qi wrote:
>>>>>> Thanks for you all the good suggestions:
>>>>>>
>>>>>> 1) update the hierarchy comments --- we miss some there
>>>>>> 2) Use c'tor-d'tor idiom for remembering JavaThread in GC thread
>>>>>> 3) Add one more STEP (135)
>>>>>> 4) update vmStructs so the SA can check this value.
>>>>>>
>>>>>> Thanks
>>>>>> Yumin
>>>>>>
>>>>>>
>>>>>>
>>>>>> David Holmes - Sun Microsystems wrote:
>>>>>>> Hi Yumin,
>>>>>>>
>>>>>>> Can you update the thread hierarchy comments in thread.hpp:
>>>>>>>
>>>>>>> 49 // Class hierarchy
>>>>>>> 50 // - Thread
>>>>>>> 51 // - VMThread
>>>>>>> 52 // - JavaThread
>>>>>>> 53 // - WatcherThread
>>>>>>>
>>>>>>> This seems incomplete anyway so it would be good to update it.
>>>>>>>
>>>>>>> I would also find it useful to add more comments to the NamedThread
>>>>>>> class explaining the role of this new field. It really has
>>>>>>> nothing to do
>>>>>>> with being a "named thread" - but then NamedThread should really
>>>>>>> have been
>>>>>>> called something more general. Pity we can't rename it - can we? :)
>>>>>>>
>>>>>>> In vmError.cpp:
>>>>>>>
>>>>>>> 506 // printing Java thread stack trace if it is involved in GC
>>>>>>> crash
>>>>>>> 507
>>>>>>> 508 if (_verbose && (_thread->is_Named_thread())) {
>>>>>>>
>>>>>>> Can/Should this be a new STEP?
>>>>>>>
>>>>>>> David
>>>>>>>
>>>>>>> Yumin Qi said the following on 12/11/09 08:50:
>>>>>>>> Tom,
>>>>>>>>
>>>>>>>> Thanks, changed as pointed.
>>>>>>>> Sorry I forget to include GC group.
>>>>>>>>
>>>>>>>> Can someone else give a look?
>>>>>>>>
>>>>>>>> http://cr.openjdk.java.net/~minqi/6361589
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Yumin
>>>>>>>>
>>>>>>>> Tom Rodriguez wrote:
>>>>>>>>> Overall this looks pretty nice.
>>>>>>>>>
>>>>>>>>> java_thread_gc isn't a very clear name. Maybe collected_thread or
>>>>>>>>> processed_thread? The comment should describe it's purpose
>>>>>>>>> more explicitly.
>>>>>>>>>
>>>>>>>>> Is this assert really needed?
>>>>>>>>>
>>>>>>>>> + assert(thread != this, "Should not be java thread itself");
>>>>>>>>>
>>>>>>>>> I think you should add is_NamedThread() instead of
>>>>>>>>> distinguishing all
>>>>>>>>> these cases individually.
>>>>>>>>>
>>>>>>>>> If VMThread is now a NamedTread why don't you call set_name
>>>>>>>>> instead of
>>>>>>>>> having it override name again?
>>>>>>>>>
>>>>>>>>> vmError.cpp:
>>>>>>>>>
>>>>>>>>> I think the printing output should look more like this:
>>>>>>>>>
>>>>>>>>> + st->print_cr("JavaThread " PTR_FORMAT " was being
>>>>>>>>> processed
>>>>>>>>> during the crash, id = " UINTX_FORMAT, jt,
>>>>>>>>> jt->osthread()->thread_id());
>>>>>>>>>
>>>>>>>>> tom
>>>>>>>>>
>>>>>>>>> On Dec 9, 2009, at 2:49 PM, Yumin Qi wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Fixed 6361589: Print out stack trace for target thread of GC
>>>>>>>>>> crash
>>>>>>>>>>
>>>>>>>>>> http://cr.openjdk.java.net/~minqi/6361589
>>>>>>>>>>
>>>>>>>>>> Comments: This is a facility to assist for JVM crash analysis. To
>>>>>>>>>> implement this function, it needs record JavaThread which may
>>>>>>>>>> involve crash
>>>>>>>>>> somewhere in GC thread. The place chosen here is NamedThread
>>>>>>>>>> from which all
>>>>>>>>>> GC threads but VMThread derive. I change VMThread's base from
>>>>>>>>>> Thread to
>>>>>>>>>> NamedThread, so the recording of JavaThread covers for GC
>>>>>>>>>> threads and
>>>>>>>>>> VMThread. Once the JavaThread recorded in GC thread seen
>>>>>>>>>> during error
>>>>>>>>>> report, its stack trace be printed out. To test this function,
>>>>>>>>>> add a debug
>>>>>>>>>> flag CrashGCForDumpingJavaThread, once it is set, it will
>>>>>>>>>> crash immediately
>>>>>>>>>> in VMThread or GC Thread to core dump. Note this is for test
>>>>>>>>>> only purpose,
>>>>>>>>>> no defects in involved JavaThread.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>> Yumin
>>>>>>>>>>
>>>>>>>>>
>>>>
>
More information about the hotspot-runtime-dev
mailing list