e$B$1$$$8$e!w$$$7$D$+$G$9e(B.
In [ruby-dev:30598] the message: “[ruby-dev:30598] Re: [BUG] waitpid for
ruby-trunk”, on Mar/16 12:47(JST)
Nobuyoshi N. writes:
e$B$J$+$@$G$9!#e(B
Linux 2.4e$B$G$7$g$&$+!#e(B2.6e$B$@$H@5>o$K=*N;$7$^$9!#e(B
e$B$=$NDL$j$G$9e(B.
e$B$?$V$s!"e(Bpthread_kill()e$B$,@5$7$$Aj<j$KFO$$$F$J$$$s$8$c$J$$$+$HA[e(B
e$BA|$7$^$9$,!#e(B
-DTHREAD_DEBUG=-1e$B$r$D$1$F%3%s%Q%$%k$7$F!"@hF,$Ke(B
Thread.DEBUG = true
e$B$r$$$l$F%F%9%H$7$F$_$F$/$@$5$$!#e(B
Thread.DEBUG= e$B$O$J$$$H%(%i!<$,=P$^$7$?e(B. Thread::DEBUG = 1
e$B$G<B9T$7$^$7e(B
e$B$?e(B.
-DTHREAD_DEBUG=1 e$B$Oe(Bminirubye$B$^$G$K$7$H$$$?$[$&$,L5Fq!#e(B
e$B2?$H$J$/M}2re(B(^^;
e$B7k2L$O0J2<$N46$8$G$9e(B. e$B$3$l$G$o$+$j$^$9e(B?
e$B$A$J$_$K%F%9%H%9%/%j%W%H$OJQ99e(B
e$B$7$F$$$Fe(B:
p1 = fork{exec “sleep”, “10”}
p2 = fork{exec “sleep”, “10”}
e$B$H$J$C$F$$$^$9e(B.
–
emperor:/home/keiju/var/src/var.lib/ruby/RubyBase/ruby-trunk# ./ruby
/tmp/test-waitpid.rb
0x4000 - rb_thread_wait_fd_rw(5, read)
0x4000 - enter blocking region (0x81748d8)
0x4000 - leave blocking region (0x81748d8)
0x4000 - rb_thread_wait_fd_rw(5, read): done
0x4000 - rb_thread_wait_fd_rw(5, read)
0x4000 - enter blocking region (0x81748d8)
0x4000 - leave blocking region (0x81748d8)
0x4000 - rb_thread_wait_fd_rw(5, read): done
0x4000 - create - stack size: 524288
0x4000 - create: 0x8181510 (0)0x4000 - create - stack size: 524288
0x8003 - thread start: 0x8181510
0xc004 - thread start: 0x8186178
0x4000 - create: 0x8186178 (0)0x4000 - rb_thread_schedule
0x4000 - rb_thread_alone: 3
0x4000 - rb_thread_schedule/switch start
0x8003 - thread start (get lock): 0x8181510
0x8003 - rb_thread_wait_fd_rw(1, write)
0x8003 - enter blocking region (0x8181510)
0xc004 - thread start (get lock): 0x8186178
0xc004 - rb_thread_wait_fd_rw(1, write)
0xc004 - enter blocking region (0x8186178)
0x8003 - leave blocking region (0x8181510)
0x8003 - rb_thread_schedule
0x8003 - rb_thread_alone: 3
0x8003 - rb_thread_schedule/switch start
0x4000 - rb_thread_schedule/switch done
0x4000 - native_sleep 20
0x4000 - native_sleep: pthread_cond_timedwait start (1174018444,
497774000)
0x8003 - rb_thread_schedule/switch done
0x8003 - rb_thread_wait_fd_rw(1, write): done
wait p#1
wait p#2
0x8003 - enter blocking region (0x8181510)
0x8003 - leave blocking region (0x8181510)
0x8003 - rb_thread_wait_fd_rw(1, write)
0x8003 - enter blocking region (0x8181510)
0x8003 - leave blocking region (0x8181510)
0x8003 - rb_thread_wait_fd_rw(1, write): done
#<Errno::ECHILD: No child processes>
0x8003 - thread end: 0x8181510
0xc004 - leave blocking region (0x8186178)
0xc004 - rb_thread_wait_fd_rw(1, write): done
0xc004 - enter blocking region (0x8186178)
0xc004 - leave blocking region (0x8186178)
0xc004 - rb_thread_wait_fd_rw(1, write)
0xc004 - enter blocking region (0x8186178)
0xc004 - leave blocking region (0x8186178)
0xc004 - rb_thread_schedule
0xc004 - rb_thread_alone: 2
0xc004 - rb_thread_schedule/switch start
0xc004 - rb_thread_schedule/switch done
0xc004 - rb_thread_wait_fd_rw(1, write): done
#<Errno::ECHILD: No child processes>
0xc004 - thread end: 0x8186178
__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—