[PATCH] cygwin_internal methods to get/set thread name

Jon Turney jon.turney@dronecode.org.uk
Fri Dec 22 13:30:00 GMT 2017

On 22/12/2017 09:48, Mark Geisert wrote:
> I'd still like to get a vote of acceptance for what I've called the 
> "courtesy" code in cygthread.cc, cygthread::name method.  The method is 
> called with a Windows tid and that tid is looked up in the table of 
> cygthreads.  If found, you immediately have the thread's name.  I added 
> code on the failure path for the case where tid represents a pthread.  
> If it does, the pthread's name is retrieved into the result buffer.
> This would be useful in straces of any application whose pthreads issue 
> Cygwin syscalls: It means the strace log has messages referring to 
> pthreads by their names and not by "unknown 0x###" as at present.  It 
> was a help while debugging my "aio library built in userspace using 
> pthreads" that shall never be mentioned again ;-).  But somebody else 
> coding or debugging their own multi-threaded app will run into this need 
> eventually.

Yeah, there's definitely a piece missing if pthread names aren't being 
reported correctly in strace output.

I'd suggest it might be a bit cleaner to have a utility function used by 
strace::vsprntf() to get the thread name, which tries cygthread::name() 
or pthread_getname_np(), rather than having cygthread::name() be the 
only part of cygthread which knows about pthreads...

Other uses of cygthread::name() need inspecting to see if they need to 
change or not.  Given [1], I think CW_GETTHREADNAME should stay as it is.

[1] https://cygwin.com/ml/cygwin/2009-05/msg00263.html

More information about the Cygwin-patches mailing list