Hi
I am using ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32].
I have made a small program, to see whether killing thread is safe, when
it is using a monitor.
I have 3 threads:
-writer, which changes global resource guarded by monitor
-interrupter, which kills and spawns writer in a loop
-main, which only monitors other threads
After a few seconds my program hangs, because kill method does not
return. Main thread says that the writer thread is in an aborting state.
Sample output:
writer: ok?
main: tick writer-#<Thread:0x3b4b1e run> interrupter-#<Thread:0x1a80aea
run>
interrupter: kill
interrupter: join
interrupter: sleep 1
interrupter: new
interrupter: sleep 2
writer: ok?
interrupter: kill
main: tick writer-#<Thread:0x1b66b06 aborting>
interrupter-#<Thread:0x1a80aea run>
main: tick writer-#<Thread:0x1b66b06 aborting>
interrupter-#<Thread:0x1a80aea run>
main: tick writer-#<Thread:0x1b66b06 aborting>
interrupter-#<Thread:0x1a80aea run>
(repeats infinitely)
Is it ruby’s bug?
See attachment for full program source.
Regards,
Christopher