# Monitor + killing thread =\> thread in an aborting state

**URL:** <https://www.ruby-forum.com/t/monitor-killing-thread-thread-in-an-aborting-state/161036>\
**Category:** Ruby\
**Created:** [February 22, 2009, 5:34pm UTC](https://www.ruby-forum.com/t/monitor-killing-thread-thread-in-an-aborting-state/161036 "2009-02-22T17:34:52Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![christoforever](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/6de8d8/32.png) [@christoforever](https://www.ruby-forum.com/u/christoforever)\
**Post date:** [February 22, 2009, 5:34pm UTC](https://www.ruby-forum.com/t/monitor-killing-thread-thread-in-an-aborting-state/161036/1 "2009-02-22T17:34:52Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![christoforever](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/6de8d8/32.png) [@christoforever](https://www.ruby-forum.com/u/christoforever)\
**Post date:** [February 22, 2009, 5:52pm UTC](https://www.ruby-forum.com/t/monitor-killing-thread-thread-in-an-aborting-state/161036/2 "2009-02-22T17:52:54Z")

</div>

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 \<
