>>>>> "J" == Joseph McDonald <joe / vpop.net> writes:

J> begin
J>   key = ftok __FILE__, 1

[...]

J>   while (s =  msq.recv 100, 100)

 at this step, recv will receive an interrupt and sysvipc will call
 rb_sys_fail() 

J>     puts "got: #{s}"
J>   end
  
J>   # remove the queue
J> ensure

 ruby begin to execute the ensure block, but after the first node it test
if it has received an interrupt and because it's true it exit the block
(longjmp) 

J>   puts "ensure block"
J>   msq.remove
J> end

J> ^C./junker.rb:27: Interrupt
   ^^^^^^^^^^^^^^^^

 This explain the line number.

J> in at_exit block

 then it execute the at_exit proc.


Guy Decoux