Issue #15178 has been updated by jeremyevans0 (Jeremy Evans).


I agree with your analysis.  Looking at the NetBSD man page for pthread_setname_np (https://netbsd.gw.com/cgi-bin/man-cgi?pthread_setname_np++NetBSD-current), the format string is clearly the 2nd argument and not the third.  The only reason this hasn't caused problems is that few thread names are going to use printf(3) format specifiers.  I've added a pull request to fix this: https://github.com/ruby/ruby/pull/3492

----------------------------------------
Bug #15178: Wrong paramaters passing to pthread_setname_np(3)
https://bugs.ruby-lang.org/issues/15178#change-87328

* Author: taca (Takahiro Kambe)
* Status: Open
* Priority: Normal
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
Ruby 2.6.0-preview2の動作を調べている途中で見つけました。

[Bug #9586]の修正r45713で、NetBSDの場合のpthread_setname_np(3)の引数を修正しています。
ここは第2引数と第3引数を入れ替えるのではなく、単に二重引用符を適切にquoteするだけとすべき
だったのではないでしょうか。

また、実際にthread_pthread.cで`SET_CURRENT_THREAD_NAME`を介してpthread_setname_np(3)が
呼び出される状況を理解していないのですが、指定する名前は`PTHREAD_MAX_NAMELEN_NP`を超える
ことはないと思って良いのでしょうか。(`PTHREAD_MAX_NAMELEN_NP`の値は32です。)

---Files--------------------------------
configure.ac.diff (645 Bytes)


-- 
https://bugs.ruby-lang.org/