[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:14736] Re: Bug#117685: xpostit: reproducable segfaults
- From: Taketoshi Sano <kgh12351@xxxxxxxxxxx>
- Subject: [debian-devel:14736] Re: Bug#117685: xpostit: reproducable segfaults
- Date: Thu, 6 Dec 2001 03:44:59 +0900
- X-dispatcher: imput version 991025(IM133)
- X-fingerprint: A1A0 F2D0 9C5D 7D61 DBA1 1507 D0B3 F3D0 AE31 C009
- X-ml-info: If you have a question, send e-mail with the body "help" (without quotes) to the address debian-devel-ctl@debian.or.jp; help=<mailto:debian-devel-ctl@debian.or.jp?body=help>
- X-ml-name: debian-devel
- X-mlserver: fml [fml 3.0pl#17]; post only (only members can post)
- References: <E15yf7i-0003AT-00@xxxxxxxxxxxxx> <20011031.143858.74756412.sano@@danyasun.standalone.local.test> <20011105.222218.07646362.sano@@danyasun.standalone.local.test>
- Message-id: <y5an10xaepr.fsf@xxxxxxxxxxxxxxxxxxxx>
- X-mail-count: 14736
- User-agent: Semi-gnus/6.10.12 SEMI/1.12.1 ([JR] Nonoichi) FLIM/1.12.7 (Yþzaki) Emacs/20.7 (i386-debian-linux-gnu) MULE/4.0 (HANANOEN)
佐野@浜松です。これも続報。
on "Tue, 6 Nov 2001 01:45:54 +0900', I wrote:
> xpostit を Debian に upload したんですが、
> 「新規メモ作成」→「消滅」を二回繰り返すと
> Segmentation Fault で落ちるというバグレポートを
> もらいました。
Bug#117685 です。
> で、ちょっと調べてみたんですが、2.2 (potato) の 3.3.6 環境では
> 同じ操作をしても全然問題ありません。が、たしかに unstable/sid の
> 4.1.0 環境で試してみると、libxaw6/libxaw7 のどちらでコンパイル
> しても落ちます。ただし落ちる場所はライブラリによって違うようです。
>
> gdb で step 実行して追いかけてみると、xpostit のコード自体を
> 実行している時ではなく、ライブラリのコードを実行している時に
> 落ちているようなので、どうも X 関係のライブラリに問題の原因が
> あるのではないかと疑っているのですが、ちょっとまだ正体を
> 突き止めるところまでいっていません。
XFree86 の 3.3.6 と 4.1.0 をソースから build して
libXaw と libXt を -ggdb オプション付けて生成したものと
xpostit をリンクして調べてみたところ、
1) 落ちる箇所は Xaw7 の場合 TextAction.c の TextFocusOut() で
while (shell) {
if (XtIsShell(shell))
break;
shell = XtParent(shell);
}
として XtIsShell(shell) で
shell->core.widget_class->core_class.class_inited
を調べようとするが、この時何故か shell->core 以下が
破壊されていて、widget_class にアクセスできず、その
ために SegFault する
2) 試しに xpostit の note.c で ConfirmDestroy() の
中から呼び出している
XtDestroyWidget(pn->pn_shellwidget);
をコメントアウトすると、SegFault は発生しない。
しかし、この場合
「新規メモ作成」→「保存せずに destroy」
を繰り返すと、使用メモリーが増えていく。
たぶん memory leak しているものと思われる。
3) XFree86 v3.3.6 の libXaw とリンクしていた場合、
libXt など他のライブラリについては unstable/sid の
環境で通常のパッケージから提供されるものとリンク
していても、Segfault は発生しない。しかし、この時
「新規メモ作成」→「保存せずに destroy」
を繰り返すと、上記のように XtDestroyWidget() を
コメントアウトした時ほど顕著ではないが、やはり
徐々に使用メモリーが増えていく。
確証は無いが v3.3.6 の時から既に memory leak していた ?
というところまでは追いかけました
(先日の NLUG 勉強会で野首さんと雑談しながら :)
で、そのあと時間が取れなくてタッチしてないんですが、
上記を眺めて何か思い出したことがあるとか、思い当たる
節があるという方がいらっしゃいましたら、情報をお願いします。
(元の職場の本棚を探したら、Motif 版の "X Toolkit
Intrinsics Programming Manual" (ただし対象は X11R4) と
"The X Window System in a Nutshell" (対象は X11R4&5) が
見つかったので、これでも読んで勉強しようかと借りては
きたものの、時間が取れずに積ん読状態 ^^;;)
--
# (わたしのおうちは浜松市、アカウミガメのふるさとの街)
<kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)