From: Alex Katebi Date: 2009-02-23T01:51:23+09:00 Subject: Re: Monitor + killing thread => thread in an aborting state --0016e64601e61b69b30463849eb3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit For one thing you should use ruby 1.9 which uses the OS thread instead of native ruby threading. The other is when you kill or cancel thread you need to provide safe areas for your condemned thread to die so resources are releases if any used. Look into pthread about canceling. On Sun, Feb 22, 2009 at 11:34 AM, Christopher Debski < fantom15@poczta.onet.pl> wrote: > 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-# interrupter-# run> > interrupter: kill > interrupter: join > interrupter: sleep 1 > interrupter: new > interrupter: sleep 2 > writer: ok? > interrupter: kill > main: tick writer-# > interrupter-# > main: tick writer-# > interrupter-# > main: tick writer-# > interrupter-# > (repeats infinitely) > > Is it ruby's bug? > See attachment for full program source. > > Regards, > Christopher > > Attachments: > http://www.ruby-forum.com/attachment/3328/rubyMon.txt > > -- > Posted via http://www.ruby-forum.com/. > > --0016e64601e61b69b30463849eb3--