RFR: 7102541: Implement os::set_native_thread_name() on Windows and Linux
Staffan Larsen
staffan.larsen at oracle.com
Mon Oct 13 15:51:33 UTC 2014
I’ve tagged the bug to add a release note - just need to provide the text for it.
Thomas: I can sponsor the fix if you send me a “hg export” changeset with the correct check-in comments.
Thanks,
/Staffan
On 12 okt 2014, at 17:19, David Holmes <david.holmes at oracle.com> wrote:
> On 12/10/2014 7:15 PM, Thomas Stüfe wrote:
>> As for Linux, I think one could even dynamically probe for the
>> largest
>> allowed thread name at the start of the VM (calling
>> pthread_setname_np
>> with ever-smaller names until it stops saying ERANGE). That way
>> we could
>> retain downward compatibility while still profit from larger names
>> should the glibc people decide to enlarge that name buffer. But
>> again,
>> that may be over engineered.
>>
>>
>> This is likely to be a discrete range rather than a continuous one -
>> I don't expect to find different linux versions each choosing a
>> different value.
>>
>>
>> The same binary could run on both old and new Linux machines with
>> different task name length limits. It would be nice to have the VM
>> automatically adapt to future improvements while retaining downward
>> compatibility.
>>
>> After reading up a bit on Gerards glibc feature request
>> https://sourceware.org/bugzilla/show_bug.cgi?format=multiple&id=16578,
>> it seems that pthread lib on Linux implements thread naming by using
>> kernel task names; task names are limited by TASK_COMM_LEN. It is
>> possible to increase that define, but there are bug reports out that
>> increasing TASK_COMM_LEN caused memory corruptions. So I concede that
>> while it is possible that the pthread name length may change, it is not
>> probable.
>>
>> My main concern is that some very commonly used threading libraries
>> will encounter this 15 char limit eg:
>>
>> ForkJoinPool.commonPool-__worker-<N>
>> pool-<N>-thread-<M>
>>
>> and custom Executors and FJPools tend to use even longer name.
>>
>>
>> This is true and you are right. I think the feature is still useful
>> enough, not so much for java developers but for OpenJDK developers, who
>> are much more likely to debug natively and for whom a common case is to
>> quickly identify OpenJDK special threads (Vm Thread, GC threads etc) in
>> a forest of common java threads.
>>
>> It is also useful for cases where the libjvm.so is embedded into another
>> launcher as "just another library", and you want to tell apart jvm
>> threads from threads which have nothing to do with the jvm.
>>
>> As for missing documentation, this should be already a problem
>> now, as
>> the function is implemented on one platform and the other
>> platforms are
>> stubbed out? I don't see how the change would change that.
>>
>>
>> At the moment the missing documentation concerns only one platform.
>> Now it concerns three platforms that all (potentially) behave
>> differently; with a fourth and fifth potentially on the way. So I
>> think the documentation issue needs to resolved.
>>
>>
>> I agree with you and if you tell me the format and/or where to put it, I
>> can write a short documentation.
>
> I would like to see a release note entry; though that is an Oracle specific entity :( Not sure where else this can be readily documented - suggestions welcome.
>
> Thanks,
> David
>
>> Thanks, Thomas
More information about the hotspot-dev
mailing list