[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:2816]Portable dumper
- X-ml-count: 2816
- Subject: [MD:2816]Portable dumper
- From: Yoshiki Hayashi <yoshiki@xxxxxxxxxx>
- Date: 17 Jan 2002 12:30:07 +0900
- User-agent: T-gnus/6.15.3 (based on Oort Gnus v0.03) (revision 06)
Shuichi KITAGUCHI <kit@xxxxxxxxxxx> writes:
> 本質には関係ないですが、手元の FreeBSD 上では
>
> ・emacs.c
> #include <sys/stat.h> がなくて、struct stat のサイズなんか知らんで、
> と怒られた。
手元にあるものでは build system を変えたので、emacs.c で
stat は使わなくなりました。
> ・alloc.c
> #include <stdio.h> がなくて、stderr が定義されてないで、と怒られた。
Debug 出力のためだけに stdio.h を include するのも何だかな、
と思ったので、単に abort するようにしました。
今の local と前の patch の差分は次の mail で送ります。
> んで、C-xC-f でファイルを開こうとして、C-i で completion すると、
> 永野さんがおっしゃってたように Fgarbage_collect() で落ちました。
> その core を gdb で見てみましたが、この mark_object() の呼び出しの
> 山を理解できるようになるには、かなり修行が必要そうですね...(^^;
GC の最中に落ちるのは、ほぼ間違いなく GC 以外のどっかが heap
を破壊しているので、mark_object を見てもあんまり情報は得られ
ません。でも、手元では再現しないので、もしよろしければ以下の
ものを実行した結果を教えてください。GC で、ということなので
一番怪しそうなのは unmark_pdumped_objects がちゃんと動いてい
ない、ということですが、これは単なる想像です。
ところで、 ./temacs -q -nw の直後に M-x garbage-collect でも
落ちますか? たぶん、この方がもうちょっときれいな stack trace
が得られると思います。
まず、cd src してから gdb ./temacs core を実行します。
とりあえずどこで落ちているかの情報が欲しいので、bt を実行し
て最後の mark_object の frame を見つけてから frame 3 みたいな
感じでその frame にいったときの出力を見せてください。
Emacs は mark bit を使い回しているので、ちゃんと動くかどうか
はわかりませんが、
p obj
xtype
で Lisp の型がわかるので、xsymbol や xstring などを使って得
られるその object の情報を教えてください。(xsymbol 等は
.gdbinit 参照)
たぶんその object は壊れているので、まともな object が得られ
るまで stack を up していって、各 stack での pobj xtype
xsymbol etc. を実行した結果。
どの object がおかしいのかを見れば少しは原因を推測できそうな
気がしますが、手元では発生しないので何とも言えません。
ところで、永野君の方は OS は何なんでしょう?
# あんまり access できる OS の数は多くないのですが、Solaris
# で動くかどうか試してみます。
--
Yoshiki Hayashi