emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Emacs crashes


From: Eli Zaretskii
Subject: Re: Emacs crashes
Date: Wed, 15 Mar 2006 21:49:41 +0200

> From: Nick Roberts <address@hidden>
> Date: Wed, 15 Mar 2006 20:49:55 +1300
> Cc: address@hidden
> 
> (gdb) p* (struct Lisp_String *) 0xa0024e8
> $15 = {
>   size = 4, 
>   size_byte = -1, 
>   intervals = 0x10, 
>   data = 0xa66c79c "\301\b!\207"
> }
> 
> which is what the variable ptr points to and it crashes out on the line:
> 
> MARK_INTERVAL_TREE (ptr->intervals);

I think ptr->intervals is the reason for the crash, because
MARK_INTERVAL_TREE dereferences it, and 0x10 is too small to be a
valid address.

> Here are some values below but I can't see a connection between them.

A simple list of values recorded in last_marked[] won't do.  You need
to correlate it with the innermost frames you see in the backtrace,
and from that correlation figure out the name of the Lisp data
structure that is being marked.  The connection between the values
recorded in last_marked[] will be revealed if you look at the code,
because, e.g., when GC finds a cons, it recursively marks its car and
its cdr.  By looking at the code, you should be able to find this and
other similar connections between the values, like A being a property
of B etc.

> I guess I should try to work out what created (struct Lisp_String *)
> 0xa0024e8.

Not who created it, but what higher-level Lisp data is it part of.
Btw, looking at the value of that string, namely

> (gdb) p* (struct Lisp_String *) 0xa0024e8
> $15 = {
>   size = 4, 
>   size_byte = -1, 
>   intervals = 0x10, 
>   data = 0xa66c79c "\301\b!\207"
> }

It sounds like its data is some bytecode.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]