From: Masao M. <mu...@hi...> - 2004-11-14 09:53:47
|
むとうです。 On Sun, 14 Nov 2004 19:51:05 +0900 KUBO Takehiro <ku...@ji...> wrote: > 久保です。 > > うーむ、まだ出ますか...。 > > たぶん、libgnomecanvasとgtk+でのg_object_refの内部での使い方あたりの > > 違いに問題があるんじゃないかなぁ、と思ってはいるのですが...。 > > GnomeCanvas が削除された後に GnomeCanvasItem が削除されて、 > > - gnome_canvas_item_dispose() > - redraw_if_visible() > - gnome_canvas_request_redraw() > --> GnomeCanvas は削除されているのでwarning > > となっているところまではつきとめました。 > とりあえずは rbgnome-canvas-item.c の citem_intialize() で > g_object_ref(group); > の代りに > g_object_ref(_SELF(self)); > とするとwarningは消えるのですが、これは明らかに間違った対処方法(二重ref) > なのでCVSに入れるわけにはいかない。 他のやつもこの辺が問題だったんですよね。 この現象ってrequest_redrawする前段階に二重にunrefされてるから GnomeCanvasが削除されてるんですよね。 だとすれば、二重refであっても、それが適正な回数であれば問題ないと思います。 問題は適正かどうかなのですが、これはこれで難しそうですね。 この場合のメモリリークは許容範囲内かもしれないですし(^^;)。 もしかしたら他のメソッドでg_object_refをしないといけない場所があるのかも しれませんね。 ちなみに、これって、久保さんの環境だとサンプルでも再現しますか? というのは私の環境ではもうこの現象出ていないんですよね。 > うーむ。今週リリースですよね。 はい。今作業中です。 > 問題ではあるけど coredump するとかいった critical な問題ではないので > known bug としてリリースしてしまっても良いかな。 そうしましょう。 > # 次に私が作業できるのは水曜以降(これから仕事)となるので。m(__)m そ、それはお疲れさまですm(__)m。 -- .:% Masao Mutoh<mu...@hi...> |