[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:7083] Meadow がクラッシュします



ほりぐちです.

> 発生条件などは分かりませんが同じアドレスで 2 回落ちました。
> 以下のコマンド出力からすると expose_window() のどこかで落ちるものと思わ
> れます。描画まわりの修正の影響かもしれません。
> 
> $ nm -n Meadow.exe
> (snip)
> 0103b43b T _cancel_mouse_face
> 0103b493 t _expose_area
> 0103b928 t _expose_line
> 0103ba38 t _expose_window
> 0103c02e t _expose_window_tree
> 0103c0b4 T _expose_frame
> 0103c1e0 T _syms_of_xdisp

 多分, http://www.meadowy.org/meadow/ticket/253 だと思います. 慣れ
ると10秒ほどで落とせるようになります^^;

 これはメインスレッドで tooltip のウィンドウの初期化中に上記のルー
トから投げ込んだ tooltip消去のメッセージが処理されてしまうために
frame のデータが妙な状態になってしまうのが原因です.

 対処としては mw32_create_tip_frame で tip_frame を設定していたの
をやめて, x-show-tip の最後にもって行こうと思っています.

 場所はもはやよくわからないのですが(他の修正もたまっているので. 分
離しなきゃ)以下のような感じです.


m32fns.c のどこか
=====
-    /* Set tip_frame here, so that */
-    tip_frame = frame;
     call1 (Qface_set_after_frame_default, frame);
=====
   tip_timer = call3 (intern ("run-at-time"), timeout, Qnil,
 		     intern ("x-hide-tip"));
 
+  if (tip_frame != Qnil)		/* Is this happen ? */
+    Fdelete_frame (frame, Qnil);	/* No room to exist */
+  else
+    tip_frame = frame;
+
   UNGCPRO;
   return unbind_to (count, Qnil);
 }
====

-- 
ほりぐちきょうたろう