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

[MD:2820]Portable dumper



僕の手元は、Linux kernel 2.2.19, gcc 3.0.3, GNU binutils 2.11.2 です。
たぶん CVS の外では最新だと思います。

At 17 Jan 2002 12:47:12 +0900,
Yoshiki Hayashi wrote:
> しまった、焦ってぼけました。これ、patch にもれがあるのではな
> くて、最近の GNU binutils の LD だと、LDFLAGS に
> -znocombreloc を追加する必要があるのでした。もしかして、お二
> 人とも temacs を消して、LDFLAGS に追加して build しなおすと
> 直ったりしますでしょうか?

ダメです。src の下で make clean ; rm emacs.dmp して Makefile の 
LDFLAGS に -znocombreloc を追加し、make してできた temacs で
./temacs -q -no-site-file -batch -f garbage-collect すると100%落ちます。

落ちる個所は同じで、mark_object の一番外側の
switch (SWITCH_ENUM_CAST (XGCTYPE (obj))) の case を全部すり抜けて 
default: の abort(); で死んでいます。

少し遡った結果はこれです。
# buffer local variable なのかなあ。


(gdb) up
#1  0x080e2ae9 in mark_object (argptr=0xbff8c) at alloc.c:2317
2317          abort ();
(gdb) p obj
$1 = 2147483647
(gdb) xtype
Lisp_Type_Limit
0
(gdb) up
#2  0x080e295d in mark_object (argptr=0x44f24) at alloc.c:2208
2208            mark_object (&ptr->function);
(gdb) p obj
$2 = 786308
(gdb) xtype
Lisp_Int
0
(gdb) up
#3  0x080e2a39 in mark_object (argptr=0xc23c0) at alloc.c:2253
2253                mark_object (&ptr->buffer);
(gdb) p obj
$3 = 537153308
(gdb) xtype
Lisp_Misc
Lisp_Misc_Buffer_Local_Value
(gdb) up
#4  0x080e294f in mark_object (argptr=0xeb2d4) at alloc.c:2207
2207            mark_object ((Lisp_Object *) &ptr->value);
(gdb) p obj
$5 = 795580
(gdb) xtype
Lisp_Int
0
(gdb) up
#5  0x080e2910 in mark_object (argptr=0xc22ec) at alloc.c:2195
2195                mark_object (&ptr1->contents[i]);
(gdb) p obj
$6 = 0
(gdb) xtype
Lisp_Int
0
(gdb) up
#6  0x080e295d in mark_object (argptr=0xeb294) at alloc.c:2208
2208            mark_object (&ptr->function);
(gdb) p obj
$7 = 795364
(gdb) xtype
Lisp_Int
0
(gdb) up
#7  0x080e2910 in mark_object (argptr=0xc22d4) at alloc.c:2195
2195                mark_object (&ptr1->contents[i]);
(gdb) p obj
$8 = 1
(gdb) xtype
Lisp_Int
0
(gdb) up
#8  0x080e295d in mark_object (argptr=0xeac60) at alloc.c:2208
2208            mark_object (&ptr->function);
(gdb) p obj
$9 = 795340
(gdb) xtype
Lisp_Int
0