From: Rei.Odaira@... Date: 2014-06-12T01:33:46+00:00 Subject: [ruby-core:63113] [ruby-trunk - Bug #9884] thread_pthread.c assumes pthread_t is a scalar type Issue #9884 has been updated by Rei Odaira. I was looking at this page: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html ~~~ IEEE Std 1003.1-2001/Cor 2-2004, item XBD/TC2/D6/26 is applied, adding pthread_t to the list of types that are not required to be arithmetic types, thus allowing pthread_t to be defined as a structure. ~~~ ---------------------------------------- Bug #9884: thread_pthread.c assumes pthread_t is a scalar type https://bugs.ruby-lang.org/issues/9884#change-47177 * Author: Rei Odaira * Status: Closed * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: ruby 2.2.0dev (2014-05-30 trunk 46238) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- Many code lines in `thread_pthread.c` assume `pthread_t` is a scalar type. For example, ~~~ thread_debug("ubf_select_each (%p)\n", (void *)th->thread_id); ~~~ and ~~~ if (!timer_thread_id) { ~~~ I don't think the standard guarantees `pthread_t` is a scalar type. z/OS defines `pthread_t` as a struct, and there seem to be other such environments. https://sourceware.org/pthreads-win32/faq.html I understand it could be too cumbersome to rewrite the source, assuming `pthread_t` might not be a scalar, and actually I am not sure what would be the best way to rewrite it, but I appreciate it if you guys could think of it for the maximum portability. If needed, I am willing to list the source lines to be rewritten. ---Files-------------------------------- opaque_thread_id.patch (7.63 KB) -- https://bugs.ruby-lang.org/