From: ts Date: 2003-12-15T22:52:14+09:00 Subject: Re: --enable-pthread broken? >>>>> "Y" == Yukihiro Matsumoto writes: Y> Sorry for being stupid, but rb_trap_immediate is turned off in the Y> restore_context, so thread_timer only set rb_thread_pending to 1 at Y> most during the function execution, thus context switch would not Y> happen even when tb_thread_critical is not set, right? here the case (svg can have the problem very quickly) (gdb) r c.rb Starting program: /home/ts/ruby/ruby-1.8.1/ruby c.rb [New Thread 16384 (LWP 8248)] [New Thread 32769 (LWP 8249)] [New Thread 16386 (LWP 8250)] - 1- 1- 2- 3- 4- 5- 6- 7- 8- 9- 10- 11- 12- 13- 14- 15- 16||||||- 17- 17- 17- 17- 17- 17- 17- 18- 19- 20- 21- 22- 24- 24- 25- 26- 27- 28- 29- 30- 31- 32- 33- 35- 35- 36- 37- 38- 39- 40- 41- 42- 43- 44||||||- 45- 45- 45- 45- 45- 46- 46- 46- 47|- 48|- 49|||||- 50- 51- 51- 52- 52- 52- 52- 53||||- 53- 53- 54- 54- 54- 54- 54- 54- 55- 56- 57- 58- 59- 60- 62- 62- 63|||||||||||- 64- 64- 64- 64- 64- 64- 64- 64- 64- 65- 65- 65- 66- 66- 67- 68- 69- 70- 71- 72- 73- 74- 75- 76- 77- 78||||||||||||||||- 79- 79- 79- 79- 79- 79- 79- 79- 79- 79- 79- 79- 79- 79- 79- 79- 79- 80|- 81||||||||||||||- 82|||- 83|- 84||- 84- 84- 85- 85- 85- 85- 85- 85- 85- 85- 85- 85- 85- 85- 85- 86|- 86- 86- 86- 87- 87- 87- 88||||- 89- 89- 89|||||||||||- 90||- 90||- 91- 91||||||||||||||- 92||- 92- 92- 92|||||||||||||||- 93|||- 93- 93- 93- 93||||||- 93- 93||- 94|- 94- 94|- 94- 94- 94- 94|||||||- 94- 94||- 94|- 94 Program received signal SIGINT, Interrupt. It's blocked : I've given it Ctrl-C [Switching to Thread 16386 (LWP 8250)] 0x40033156 in nanosleep () from /lib/i686/libpthread.so.0 (gdb) info th * 3 Thread 16386 (LWP 8250) 0x40033156 in nanosleep () from /lib/i686/libpthread.so.0 2 Thread 32769 (LWP 8249) 0x420db1a7 in poll () from /lib/i686/libc.so.6 1 Thread 16384 (LWP 8248) 0x420459c6 in setcontext () from /lib/i686/libc.so.6 (gdb) t 1 [Switching to thread 1 (Thread 16384 (LWP 8248))]#0 0x420459c6 in setcontext () from /lib/i686/libc.so.6 (gdb) bt #0 0x420459c6 in setcontext () from /lib/i686/libc.so.6 #1 0x081cc920 in ?? () #2 0x0806217b in stack_extend () at eval.c:8474 (gdb) stepi 24 8427 switch (n) { (gdb) bt #0 rb_thread_switch (n=1) at eval.c:8427 #1 0x08062945 in rb_thread_schedule () at eval.c:8930 #2 0x4003274e in __pthread_sighandler () from /lib/i686/libpthread.so.0 #3 #4 0x420459c6 in setcontext () from /lib/i686/libc.so.6 #5 0x081cc920 in ?? () #6 0x0806217b in stack_extend () at eval.c:8474 (gdb) If you let him continue, the pthreads will block (gdb) c Continuing. Program received signal SIGINT, Interrupt. [Switching to Thread 16386 (LWP 8250)] 0x40033156 in nanosleep () from /lib/i686/libpthread.so.0 (gdb) info th * 3 Thread 16386 (LWP 8250) 0x40033156 in nanosleep () from /lib/i686/libpthread.so.0 2 Thread 32769 (LWP 8249) 0x420db1a7 in poll () from /lib/i686/libc.so.6 1 Thread 16384 (LWP 8248) 0x420459d5 in setcontext () from /lib/i686/libc.so.6 (gdb) t 1 [Switching to thread 1 (Thread 16384 (LWP 8248))]#0 0x420459d5 in setcontext () from /lib/i686/libc.so.6 (gdb) bt #0 0x420459d5 in setcontext () from /lib/i686/libc.so.6 #1 0x08062307 in rb_thread_restore_context (th=0x81cc920, exit=0) at eval.c:106 #2 0x0806217b in stack_extend () at eval.c:8474 (gdb) Guy Decoux