RFR: JDK-8152690: main thread does not have native thread name
Yasumasa Suenaga
yasuenag at gmail.com
Wed Mar 30 23:49:56 UTC 2016
Thanks Robbin,
I'm waiting a sponsor and more reviewer :-)
Yasumasa
2016/03/31 5:58 "Robbin Ehn" <robbin.ehn at oracle.com>:
> FYI: I'm not a Reviewer.
>
> /Robbin
>
> On 03/30/2016 10:55 PM, Robbin Ehn wrote:
>
>> Thanks, looks good.
>>
>> /Robbin
>>
>> On 03/30/2016 03:47 PM, Yasumasa Suenaga wrote:
>>
>>> Hi,
>>>
>>> I uploaded new webrev.
>>> Could you review it?
>>>
>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8152690/webrev.01/
>>>
>>>
>>> Thanks,
>>>
>>> Yasumasa
>>>
>>>
>>> On 2016/03/30 19:10, Robbin Ehn wrote:
>>>
>>>> Hi,
>>>>
>>>> On 03/30/2016 11:41 AM, Yasumasa Suenaga wrote:
>>>>
>>>>> Hi Robbin,
>>>>>
>>>>> 2016/03/30 18:22 "Robbin Ehn" <robbin.ehn at oracle.com
>>>>> <mailto:robbin.ehn at oracle.com>>:
>>>>> >
>>>>> > Hi Yasumasa,
>>>>> >
>>>>> >
>>>>> > On 03/25/2016 12:48 AM, Yasumasa Suenaga wrote:
>>>>> >>
>>>>> >> Hi Robbin,
>>>>> >> 2016/03/25 1:51 "Robbin Ehn" <robbin.ehn at oracle.com
>>>>> <mailto:robbin.ehn at oracle.com>
>>>>> >> <mailto:robbin.ehn at oracle.com <mailto:robbin.ehn at oracle.com>>>:
>>>>> >>
>>>>> >> >
>>>>> >> > Hi Yasumasa,
>>>>> >> >
>>>>> >> > I'm not sure why you don't set it:
>>>>> >> >
>>>>> >> > diff -r ded6ef79c770 src/share/vm/runtime/thread.cpp
>>>>> >> > --- a/src/share/vm/runtime/thread.cpp Thu Mar 24 13:09:16 2016
>>>>> +0000
>>>>> >> > +++ b/src/share/vm/runtime/thread.cpp Thu Mar 24 17:40:09 2016
>>>>> +0100
>>>>> >> > @@ -3584,6 +3584,7 @@
>>>>> >> > JavaThread* main_thread = new JavaThread();
>>>>> >> > main_thread->set_thread_state(_thread_in_vm);
>>>>> >> > main_thread->initialize_thread_current();
>>>>> >> > + main_thread->set_native_thread_name("main");
>>>>> >> > // must do this before set_active_handles
>>>>> >> > main_thread->record_stack_base_and_size();
>>>>> >> >
>>>>> main_thread->set_active_handles(JNIHandleBlock::allocate_block());
>>>>> >> >
>>>>> >> > here instead? Am I missing something?
>>>>> >>
>>>>> >> Native thread name is the same to thread name in Thread class.
>>>>> >> It is set in c'tor in Thread or setName().
>>>>> >> If you create new thread in Java app, native thread name will be
>>>>> set at
>>>>> >> startup. However, main thread is already starte in VM.
>>>>> >> Thread name for "main" is set in create_initial_thread().
>>>>> >> I think that the place of setting thrrad name should be the same.
>>>>> >
>>>>> >
>>>>> > Yes, I see your point. But then something like this is nicer, no?
>>>>> >
>>>>> > --- a/src/share/vm/runtime/thread.cpp Tue Mar 29 09:43:05 2016
>>>>> +0200
>>>>> > +++ b/src/share/vm/runtime/thread.cpp Wed Mar 30 10:51:12 2016
>>>>> +0200
>>>>> > @@ -981,6 +981,7 @@
>>>>> > // Creates the initial Thread
>>>>> > static oop create_initial_thread(Handle thread_group, JavaThread*
>>>>> thread,
>>>>> > TRAPS) {
>>>>> > + static const char* initial_thread_name = "main";
>>>>> > Klass* k =
>>>>> SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true,
>>>>> CHECK_NULL);
>>>>> > instanceKlassHandle klass (THREAD, k);
>>>>> > instanceHandle thread_oop =
>>>>> klass->allocate_instance_handle(CHECK_NULL);
>>>>> > @@ -988,8 +989,10 @@
>>>>> > java_lang_Thread::set_thread(thread_oop(), thread);
>>>>> > java_lang_Thread::set_priority(thread_oop(), NormPriority);
>>>>> > thread->set_threadObj(thread_oop());
>>>>> > -
>>>>> > - Handle string = java_lang_String::create_from_str("main",
>>>>> CHECK_NULL);
>>>>> > +
>>>>> > + thread->set_native_thread_name(initial_thread_name);
>>>>> > +
>>>>> > + Handle string =
>>>>> java_lang_String::create_from_str(initial_thread_name, CHECK_NULL);
>>>>> >
>>>>> > JavaValue result(T_VOID);
>>>>> > JavaCalls::call_special(&result, thread_oop,
>>>>>
>>>>> Okay, I will upload new webrev later.
>>>>>
>>>>
>>>> Thanks!
>>>>
>>>>
>>>>> >> > The launcher seem to name itself 'java' and naming this thread
>>>>> just
>>>>> >> > 'main' is confusing to me.
>>>>> >> >
>>>>> >> > E.g. so main thread of the process (and thus the process) is
>>>>> 'java' but
>>>>> >> > first JavaThread is 'main'.
>>>>> >>
>>>>> >> The native main thread in the process is not JavaThread. It is
>>>>> waiting
>>>>> >> for ending of Java main thread with pthread_join().
>>>>> >> set_native_thread_name() is for JavaThread. So I think that we do
>>>>> not
>>>>> >> need to call it for native main thread.
>>>>> >
>>>>> >
>>>>> > Not sure if we can change it anyhow, since we want java and native
>>>>> name to be the same and java thread name might have some dependents.
>>>>> >
>>>>> > The name is visible in e.g. /proc.
>>>>> >
>>>>> > $ ps H -C java -o 'pid tid comm' | head -4
>>>>> > PID TID COMMAND
>>>>> > 6423 6423 java
>>>>> > 6423 6424 main
>>>>> > 6423 6425 GC Thread#0
>>>>> >
>>>>> > It would be nice with something like 'Java Main Thread'.
>>>>>
>>>>> I do not think so.
>>>>> Native main thread might not be a Java launcher - e.g. Apache
>>>>> commons-daemon, JNI application, etc.
>>>>>
>>>>> If you want to change native main thread name, I think that we have to
>>>>> change Java launcher code.
>>>>> Should I include it in new webrev?
>>>>>
>>>>
>>>> No
>>>>
>>>> Thanks again!
>>>>
>>>> /Robbin
>>>>
>>>>
>>>>> Thanks,
>>>>>
>>>>> Yasumasa
>>>>>
>>>>> > Thanks
>>>>> >
>>>>> > /Robbin
>>>>> >
>>>>> >
>>>>> >>
>>>>> >> Thanks,
>>>>> >>
>>>>> >> Yasumasa
>>>>> >>
>>>>> >> > Thanks!
>>>>> >> >
>>>>> >> > /Robbin
>>>>> >> >
>>>>> >> > On 03/24/2016 03:26 PM, Yasumasa Suenaga wrote:
>>>>> >> > > Hi all,
>>>>> >> > >
>>>>> >> > > HotSpot for Linux will set thread name via
>>>>> pthread_setname_np().
>>>>> >> > > However, main thread does not have it.
>>>>> >> > >
>>>>> >> > > All JavaThread have native name, and main thread is
>>>>> JavaThread.
>>>>> >> > > For consistency, main thread should have native thread name.
>>>>> >> > >
>>>>> >> > > I uploaded a webrev. Could you review it?
>>>>> >> > >
>>>>> >> > > http://cr.openjdk.java.net/~ysuenaga/JDK-8152690/webrev.00/
>>>>> >> > >
>>>>> >> > > I cannot access JPRT.
>>>>> >> > > So I need a sponsor.
>>>>> >> > >
>>>>> >> > >
>>>>> >> > > Thanks,
>>>>> >> > >
>>>>> >> > > Yasumasa
>>>>> >> > >
>>>>> >>
>>>>>
>>>>>
More information about the hotspot-runtime-dev
mailing list