emacs-pretest-bug
[Top][All Lists]
Advanced

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

Re: SIGSEGV in X export display.


From: Michaël Cadilhac
Subject: Re: SIGSEGV in X export display.
Date: Thu, 02 Nov 2006 16:47:33 +0100
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.0.90 (gnu/linux)

Richard Stallman <address@hidden> writes:

> I suggest you debug the next such crash by studying the structure
> of byte_stack_list and what it points to.  Try to identify the
> specific object that is clobbered, and how it is wrong.

>     (gdb) p *stack
>     $6 = {pc = 0x8375629 "", top = 0x6610, bottom = 0xbff3c988,
>       byte_string = 135894490, byte_string_start = 0x8db940c "@\223 \b \b
>       \210 \bD\223 \b8", constants = 1, next = 0xbff3c9a4}
>

> If it was reached through a clobbered pointer, what is the last
> element that is real?  Can you find that in a stack frame in your backtrace?
> What Lisp function is that frame running?

Really, I can't help.  Those crashes append from time to time and are
always different.  My knowledge of this part of the C code is not at
all enough.

Let's have a look at the present crash :

     void
     mark_byte_stack ()
     {
       struct byte_stack *stack;
       Lisp_Object *obj;

       for (stack = byte_stack_list; stack; stack = stack->next)
         {
           /* If STACK->top is null here, this means there's an opcode in
              Fbyte_code that wasn't expected to GC, but did.  To find out
              which opcode this is, record the value of `stack', and walk
              up the stack in a debugger, stopping in frames of Fbyte_code.
              The culprit is found in the frame of Fbyte_code where the
              address of its local variable `stack' is equal to the
              recorded value of `stack' here.  */
           eassert (stack->top);

           for (obj = stack->bottom; obj <= stack->top; ++obj)
===>Crash    mark_object (*obj);

           mark_object (stack->byte_string);
           mark_object (stack->constants);
         }
     }
(gdb) p obj
$15 = (Lisp_Object *) 0x0
(gdb) p stack
$12 = {
  pc = 0x0,
  top = 0x0,
  bottom = 0x0,
  byte_string = 0,
  byte_string_start = 0x0,
  constants = 0,
  next = 0xffffffff
}

And stack is *byte_stack_list->next->next->next->next->next->next.

Wow, I'm sorry but I don't have any idea on HOW (I mean what are the
command to actually type) to debug that.

Do you have any... sequence of command that I can use to help ?

-- 
/!\ My mail address changed, please update your files accordingly.
 |      Michaël `Micha' Cadilhac   |    Le copillage-collage                |
 |         Epita/LRDE Promo 2007   |       tue le programmeur.              |
 |  http://michael.cadilhac.name   |           -- Dictons LRDE              |
 `--  -   JID: address@hidden --'                                   -  --'

Attachment: pgpkE91L2cE_2.pgp
Description: PGP signature


reply via email to

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