助田です。

ちょっとよくわからないので教えてください。

cygwin環境で、make test-all TESTS=win32ole
とすると以下のようにBUGになりました。

/work/svn/ruby/trunk/test/win32ole/test_win32ole_event.rb:129: \
[BUG] object allocation during garbage collection phase
  ...

test_win32ole_event.rb の 129行目はGC.startをコールしているだけです。

タイミング的には、

    * gc.c (rb_newobj): prohibit call of rb_newobj() during gc when
      USE_VALUE_CACHE is not defined (normal case).

の変更が入ってからなのですが、この変更が悪いとは考えにくいので、
WIN32OLE_EVENTの実装の方に元々問題があったんじゃないかと疑っています。
ただ、どこが悪いのか、今のところ見当がつきません。

GC.startがコールされたところで、このBUGが発生するのは
拡張ライブラリとして、どういう実装をした場合が考えられるでしょうか?

あと、[BUG]の出力が延々繰り返される動きが気になってます。

  WIN32OLE_EVENTは鬼門だ。
  助田 雅紀