[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: abort in garbage collection (when loading an image)
From: |
Richard Stallman |
Subject: |
Re: abort in garbage collection (when loading an image) |
Date: |
Mon, 07 Apr 2003 22:31:58 -0400 |
(gdb) p last_marked[last_marked_index-1]
$6 = (int *) 0x921ef84
This address is the same as the argptr to mark_object() from the
backtrace.
(gdb) p argptr
$7 = (int *) 0x921ef84
Look at the definition of union Lisp_Object in lisp.h. the value of
*argptr is 0xa91eaa68. The type field there is 2. This is therefore
a Misc.
The correct way to use xtype, xmiscfree, and all the others
is to print THE OBJECT VALUE and then use the x command:
p *argptr
xtype
xmiscfree
The commands all apply to $. This is stated in etc/DEBUG.
The fact that the misc object was of type Lisp_Misc_Free
is probably the immediate cause of the bug. Look at the code
executing in this frame, and you'll see.
#2 0x08119fd5 in mark_object (argptr=0x921ef84) at alloc.c:4846
So the question is, how did such an object become part of live Lisp
data? You need to trace back the chain of pointers that led to this
object. That's where last_marked is useful.
#4 0x08118dae in mark_memory (start=0xbffea38c, end=0xbffff9e4) at
alloc.c:3557
marks parts of the stack. Can you find which stack frame it is marking?
What is that value really supposed to mean?