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

Re: [MD:5080] Re: resize frame



藤井です。

From: "M.Fujii" <boochang@xxxxxxxxxxxx>
Subject: Re: [MD:5080] Re: resize frame
Date: Sat, 12 Jun 2004 23:53:48 +0900 (JST)
Message-ID: <20040612.235348.01362426.boochang@xxxxxxxxxxxx>
> > ぜひとも手元で再現させたいので、再現するときの設定(BDF など)を教
> > えてもらえますか?
> 
> とりあえず私の BDF フォント設定をコンパクトにしたものを添付します。BDF 
> ファイルについても必要であればお送りします。

この現象に関連すると思われる箇所を見付けました。

本当に関連しているのかどうか私としては判断がつきかねるので、発見に至る
過程について簡単に触れます。

まず、以下のような現象が発生していることから、ring-bell-function を実
行している最中に何らかのエラーが発生していると推測しました。

>	- タイトルバーが反転しつづけることがある

# ring-bell-function に設定されている処理を実行している間は一時的に
# ring-bell-function は nil になるので、その時に再び ring_bell() が呼
# ばれていると考えたのです。

そこで、何のエラーが発生しているかを確認するために、GDB を使って
Vring_bell_function が nil の状態で ring_bell() が呼び出されている直後
に attach して状態を見てみました。このときに、"Can't view file" という
エラーが発生していることを確認しました。

このメッセージで grep した結果からブレークポイントを設定し、再現手順を
行なうことにより、mw32_init_bdf_font()@mw32_mw32bdf.c で 
MapViewOfFile() が失敗していることを確認しました。

「何かリソースがリークしているかも」と思ってソースを見ていると、
mw32_free_bdf_font() で UnmapViewOfFile の呼び出しがおかしい箇所を見付
けました。

UnmapViewOfFile の引数にマップされたビューのアドレスではなく、File
mapping のハンドルが指定されています。

============================================================
--- src/mw32bdf.c.orig	2003-06-28 08:54:06.000000000 +0900
+++ src/mw32bdf.c	2004-06-13 10:15:50.926625000 +0900
@@ -294,7 +294,7 @@
   font_char *pch;
   cache_bitmap *pcb;
 
-  UnmapViewOfFile(fontp->hfilemap);
+  UnmapViewOfFile(fontp->font);
   CloseHandle(fontp->hfilemap);
   CloseHandle(fontp->hfile);
 
============================================================

報告した現象の対策として上記の修正で十分かどうかは分かりませんが、上記
の修正した後は C-g 押しっぱなしにしても今のところ現象は発生していませ
ん。

以上、ご報告まで。

--
藤井 正行 / Masayuki FUJII ( boochang@xxxxxxxxxxxx )