続 Boehm GC


Boehm GC の続き。

GC Warning: Finalization cycle involving 57204347

GC動作中にこの warning が大量に出る。
finalize.c の ↓か。

if (!GC_is_marked(real_ptr)) {
  GC_MARKED_FOR_FINALIZATION(real_ptr);
  GC_MARK_FO(real_ptr, curr_fo -> fo_mark_proc);
  if (GC_is_marked(real_ptr)) {
    WARN("Finalization cycle involving %lx\n", real_ptr);
  }
}


んー。なんだろうか。
real_ptr = 57204347 なのだけど Mona OS的にはそのようなリニアアドレスはありえないな。(参照したら死ぬと思う。)
ぐぐってみると、Gauche と shiroさんに辿り着く。(他に日本語の情報はない)。

02/09/18 06:08:37 PDT) satoru ただいま作っているメールフィルタを実行すると

GC Warning: Finalization cycle involving 84bb580

という警告が出力されたりされなかったりしされます。 この警告を防ぐにはどうしたらよいものでしょう。

* Shiro: 0.6.3では解消されます。 応急処置としては、src/port.c:104の GC_REGISTER_FINALIZERマクロ呼び出しを GC_REGISTER_FINALIZER_NO_ORDERにしてみて下さい。 (他にも直すべきところがあるんですが、そこが原因でwarningが出るケースが 一番多いと思います)。

ちょっと今回のケースとは違いそう。
あとで Boehm GC を見直そう。
今日はこのあたりにしてサウンド対応をデバッグしよう。