山本です。

>> すみません、まだ落ちます。
>
>再現する条件を教えてもらえますか。

miniruby *.rb とか、引数でワイルドカード展開をさせると落ちます。

>>   1. ALLOC_N や malloc なんかも GC を発生させる可能性があるので、
>>      もう、どんな関数も ruby_init 前に呼び出すのは危険な気がする。
>
>malloc()は発生させません。init_env()でも何も考えずにALLOC_Nを使っ
>てしまってました。

すみません、xmalloc と混同してました。

ただ、ALLOC_N も便利な面があるので、メモリ関数だけは失敗したときに
if (!ruby_running) rb_bug とかするのはどうでしょうか。

実は、glob_helper に渡される

    int flags,
    int (*func)(const char *, VALUE),
    VALUE arg

を構造体にまとめて、status もこれに入れて、ついでに警告表示関数も
func 同様これに入れるというアイデアがあったのですが、ALLOC をどうするか
でネックになっていました。

# とりあえず ALLOC のことは忘れて、私も組んでみようと思います。