[PING] RFR: JDK-8152690: main thread does not have native thread name
David Holmes
david.holmes at oracle.com
Wed Apr 13 12:56:54 UTC 2016
Hi Yasumasa,
On 11/04/2016 7:25 PM, Yasumasa Suenaga wrote:
> PING: Could you review and sponsor it?
>
>> http://cr.openjdk.java.net/~ysuenaga/JDK-8152690/webrev.01/
Please see my updates to the bug (sorry have been on vacation). This
needs to be done in the launcher to be correct as we do not set the name
of threads that attach via JNI, which includes the main thread.
David
>
> Thanks,
>
> Yasumasa
>
>
> On 2016/03/31 8:49, Yasumasa Suenaga wrote:
>> Thanks Robbin,
>>
>> I'm waiting a sponsor and more reviewer :-)
>>
>> Yasumasa
>>
>> 2016/03/31 5:58 "Robbin Ehn" <robbin.ehn at oracle.com
>> <mailto: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>
>> <mailto: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>>
>> >> <mailto: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