Any ideas about why the following code hangs in 1.8 (under WinXP) but works fine in 1.6. (This is a major simplification of some Ctrl-C handling from a larger project. I don't just have a thing against cats.) The run results are below. Thanks. (Please let me know if this was more suitable for ruby_core.) ----- dog.rb ------------------------------------- at_exit { puts "Dog: at_exit" trap("SIGINT") { puts "Dog: killing cat..." Cat.die puts "Dog: cat whacked." } Cat.run puts "Dog: cat runs no more." } ----- cat.rb ------------------------------------- require "dog" module Cat def Cat.run @@done = false until @@done puts "Cat: yawn" sleep(2) end puts "Cat: eehhkk." end def Cat.die @@done = true puts "Cat: eeeiiiiyyyeee!" end end ----- results ------------------------------------ > \ruby-1.6.8\bin\ruby.exe -v cat.rb ruby 1.6.8 (2002-12-24) [i586-mswin32] Dog: at_exit Cat: yawn Cat: yawn [I press Ctrl+c] Dog: killing cat... Cat: eeeiiiiyyyeee! Dog: cat whacked. Cat: eehhkk. Dog: cat runs no more. > \ruby-1.8.2\bin\ruby.exe -v cat.rb ruby 1.8.2 (2004-07-29) [i386-mswin32] Dog: at_exit Cat: yawn Cat: yawn Cat: yawn [I press Ctrl+c] Dog: killing cat... Cat: eeeiiiiyyyeee! Dog: cat whacked. [and here we stay forever.] __________________________________ Do you Yahoo!? Read only the mail you want - Yahoo! Mail SpamGuard. http://promotions.yahoo.com/new_mail