In the following example:

  def recursion(n)
    if n == 0 then
      1
    else
      (n * recursion(n-1)) **2 
    end
  end

  th1 = Thread.new {
    print recursion (50)
  }
  th1.priority = -5
  th2 = Thread.new {
    sleep .1
    th1.kill()
  }
  th2.priority = 4
  th1.join()

thread th2 should kill th1, but this is not the case!

BUT if
  def recursion(n)
    x = 0
    while 1 do
      x = x + 1
    end
  end

th1 is correctly killed!

Any reason for this misbehavior?
Clemens