From: hirura Date: 2018-06-19T22:31:38+09:00 Subject: [ruby-core:87522] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError Thank you for letting me know how to touch gdb. The below is the output, it seems that sleeper and living_thread_num have reasonable values. ~~~ (gdb) t 1 [Switching to thread 1 (Thread 0x7f46c51c8700 (LWP 827))] #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 185 in ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (gdb) up 3 #3 0x000055bec706df9a in thread_join_sleep (arg=140725177158608) at thread.c:932 932 native_sleep(th, 0); (gdb) p th->vm $1 = (rb_vm_t *) 0x55bec8085f20 (gdb) p th->vm->sleeper $2 = 2 (gdb) p th->vm->living_thread_num $3 = 3 (gdb) (gdb) t 3 [Switching to thread 3 (Thread 0x7f46c37aa700 (LWP 841))] #0 pthread_cond_timedwait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:225 225 ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: No such file or directory. (gdb) up 3 #2 0x000055bec7069920 in native_sleep (th=0x55bec8468fa0, timeout_rel=0x7f46c37a7b50) at thread_pthread.c:1073 1073 native_cond_timedwait(cond, lock, &timeout); (gdb) p th->vm $1 = (rb_vm_t *) 0x55bec8085f20 (gdb) p th->vm->sleeper $2 = 2 (gdb) p th->vm->living_thread_num $3 = 3 (gdb) (gdb) t 4 [Switching to thread 4 (Thread 0x7f46c35a8700 (LWP 842))] #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 185 in ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (gdb) up 2 #2 0x000055bec7069907 in native_sleep (th=0x55bec8425390, timeout_rel=0x0) at thread_pthread.c:1071 1071 rb_native_cond_wait(cond, lock); (gdb) p th->vm $1 = (rb_vm_t *) 0x55bec8085f20 (gdb) p th->vm->sleeper $2 = 2 (gdb) p th->vm->living_thread_num $3 = 3 (gdb) ~~~ Nextly, I will try the same code with limited CPU cores, and will try patching vm_core.h. Unsubscribe: