山本です。

[ruby-core:4775][ruby-talk:140401] で問題になっている
undefined method `[]' for nil:NilClass (NoMethodError)
ですが、[ruby-talk:140537] のパッチで動いているようです。
コミットしてもいいでしょうか?

なぜこのエラーが出るかですが、profiler.rb は

  return Profiler__::start_profile # :dummy で無視される
  call A
  call B
  return B
  return A
  ....

のように call から始まることを前提にしているのですが、ある条件では

  return Profiler__::start_profile # :dummy で無視される
  return C
  call A
  call B
  ....

のように return から始まることがあるからです。

/////////////////////////////////////////////////////

実は [ruby-talk:140537] はスレッドに対応してなくて、
スレッドに対応したものが [ruby-talk:140548] になります。

たぶんあのままではまずくて

  critical = Thread.critical
  Thread.critical = true

  ....

  Thread.critical = critical

とする必要がありそうですが、こちらのほうがいいでしょうか?