# The thread problem in ruby imap

**URL:** <https://www.ruby-forum.com/t/the-thread-problem-in-ruby-imap/156863>\
**Category:** Ruby\
**Created:** [January 4, 2009, 2:46pm UTC](https://www.ruby-forum.com/t/the-thread-problem-in-ruby-imap/156863 "2009-01-04T14:46:48Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![feeling3\_4](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ecb155/32.png) [@feeling3\_4](https://www.ruby-forum.com/u/feeling3_4)\
**Post date:** [January 4, 2009, 2:46pm UTC](https://www.ruby-forum.com/t/the-thread-problem-in-ruby-imap/156863/1 "2009-01-04T14:46:48Z")

</div>

hi, all

my application is about ruby imap, it depends on daemons lib and runs  
as a background job. when it fetches the mails from gmail, it will throw  
the error below randomly:

2008-12-30 11:37:04 ERROR failed to process message 6@11: stopping only  
thread  
note: use sleep to stop forever  
backtrace at Tue Dec 30 11:37:04 -0800 2008:  
/usr/lib/ruby/1.8/monitor.rb:102:in `stop' /usr/lib/ruby/1.8/monitor.rb:102:in`wait’  
/usr/lib/ruby/1.8/net/imap.rb:954:in `get_tagged_response' /usr/lib/ruby/1.8/net/imap.rb:1014:in`send\_command’  
/usr/lib/ruby/1.8/monitor.rb:238:in `synchronize' /usr/lib/ruby/1.8/net/imap.rb:999:in`send\_command’  
/usr/lib/ruby/1.8/net/imap.rb:392:in `select' /usr/lib/ruby/1.8/monitor.rb:238:in`synchronize’  
/usr/lib/ruby/1.8/net/imap.rb:390:in `select' /usr/lib/ruby/gems/1.8/gems/daemons-1.0.10/lib/daemons/application.rb:176:in`load’  
/usr/lib/ruby/gems/1.8/gems/daemons-1.0.10/lib/daemons/application.rb:176:in  
`start_load' /usr/lib/ruby/gems/1.8/gems/daemons-1.0.10/lib/daemons/application.rb:253:in`start’  
/usr/lib/ruby/gems/1.8/gems/daemons-1.0.10/lib/daemons/controller.rb:69:in  
`run' /usr/lib/ruby/gems/1.8/gems/daemons-1.0.10/lib/daemons.rb:139:in`run’  
/usr/lib/ruby/gems/1.8/gems/daemons-1.0.10/lib/daemons/cmdline.rb:105:in  
`call' /usr/lib/ruby/gems/1.8/gems/daemons-1.0.10/lib/daemons/cmdline.rb:105:in`catch\_exceptions’  
/usr/lib/ruby/gems/1.8/gems/daemons-1.0.10/lib/daemons.rb:138:in `run’

the ruby version is 1.8.5.

any ideas? thank you!

---

<div class="post-metadata">

**Author:** ![feeling3\_4](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ecb155/32.png) [@feeling3\_4](https://www.ruby-forum.com/u/feeling3_4)\
**Post date:** [January 4, 2009, 3:13pm UTC](https://www.ruby-forum.com/t/the-thread-problem-in-ruby-imap/156863/2 "2009-01-04T15:13:33Z")

</div>

Wen Lan wrote:

> hi, all
> 
> my application is about ruby imap, it depends on daemons lib and runs  
> as a background job. when it fetches the mails from gmail, it will throw  
> the error below randomly:

I’ve noticed some really odd threading behavior in net/imap too. I think  
it needs a bit of a threading overhaul. We have at least one reported  
bug in JRuby that seems to be related to bad use of mutexes:

[http://jira.codehaus.org/browse/JRUBY-2950](http://jira.codehaus.org/browse/JRUBY-2950)

This could be the same thing, but perhaps we’re not detecting that it’s  
the only thread stopping (since we don’t have as rigid control over  
threads).

- Charlie

---

<div class="post-metadata">

**Author:** ![feeling3\_4](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ecb155/32.png) [@feeling3\_4](https://www.ruby-forum.com/u/feeling3_4)\
**Post date:** [January 5, 2009, 3:27am UTC](https://www.ruby-forum.com/t/the-thread-problem-in-ruby-imap/156863/3 "2009-01-05T03:27:50Z")

</div>

Charles Oliver N. wrote:

> Wen Lan wrote:
> 
> > hi, all
> > 
> > my application is about ruby imap, it depends on daemons lib and runs  
> > as a background job. when it fetches the mails from gmail, it will throw  
> > the error below randomly:
> 
> I’ve noticed some really odd threading behavior in net/imap too. I think  
> it needs a bit of a threading overhaul. We have at least one reported  
> bug in JRuby that seems to be related to bad use of mutexes:
> 
> [http://jira.codehaus.org/browse/JRUBY-2950](http://jira.codehaus.org/browse/JRUBY-2950)
> 
> This could be the same thing, but perhaps we’re not detecting that it’s  
> the only thread stopping (since we don’t have as rigid control over  
> threads).
> 
> - Charlie

Charlieï¼Œ thank you for your reply!

the error is about ruby monitor implementation or imap? what do you  
think?

---

<div class="post-metadata">

**Author:** ![feeling3\_4](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ecb155/32.png) [@feeling3\_4](https://www.ruby-forum.com/u/feeling3_4)\
**Post date:** [January 5, 2009, 11:39am UTC](https://www.ruby-forum.com/t/the-thread-problem-in-ruby-imap/156863/4 "2009-01-05T11:39:44Z")

</div>

Wen Lan wrote:

> Charlieï¼Œ thank you for your reply!
> 
> the error is about ruby monitor implementation or imap? what do you  
> think?

Well, looking at imap makes my head hurt, so I’m going to say it’s a  
problem in imap. I’m fairly confident in both the JRuby and Ruby Mutex  
implementations, since they’re not particularly complicated. But I’m not  
at all confident in the imap code.

- Charlie

---

<div class="post-metadata">

**Author:** ![feeling3\_4](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ecb155/32.png) [@feeling3\_4](https://www.ruby-forum.com/u/feeling3_4)\
**Post date:** [January 5, 2009, 11:54am UTC](https://www.ruby-forum.com/t/the-thread-problem-in-ruby-imap/156863/5 "2009-01-05T11:54:43Z")

</div>

Charles Oliver N. wrote:

> Wen Lan wrote:
> 
> > Charlieï¼Œ thank you for your reply!
> > 
> > the error is about ruby monitor implementation or imap? what do you  
> > think?
> 
> Well, looking at imap makes my head hurt, so I’m going to say it’s a  
> problem in imap. I’m fairly confident in both the JRuby and Ruby Mutex  
> implementations, since they’re not particularly complicated. But I’m not  
> at all confident in the imap code.
> 
> - Charlie

Charlie, if you look at the imap implementation in ruby1.8 and ruby1.9,  
you’ll find that the code(imap.rb) between 2 versions are not so  
different.but the treading and monitor between 2 versions change a lot.

i’m very familiar with the imap code, and i had added IDEL command to  
ruby imap(ruby1.8) implementaton in my last project. so i think this  
error is all about threading.
