RFR: 7102541: Implement os::set_native_thread_name() on Windows and Linux

David Holmes david.holmes at oracle.com
Mon Oct 13 00:19:24 UTC 2014


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