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

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

bug#2403: 23.0.90; emacs bootstrap under AIX hangs at lisp/international


From: Stefan Monnier
Subject: bug#2403: 23.0.90; emacs bootstrap under AIX hangs at lisp/international/characters.el
Date: Thu, 26 Feb 2009 15:47:41 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.90 (gnu/linux)

> I digged a little bit deeper to this problem. temacs is in an endless
> loop in the following for loop in the alloca.c file:

> --- alloca.c:5101 ---
> #if (GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS \
>      || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS)
>   mark_stack ();
> #else
>   {
>     register struct gcpro *tail;
> =>  for (tail = gcprolist; tail; tail = tail->next)
>       for (i = 0; i < tail->nvars; i++)
>         mark_object (tail->var[i]);
>   }
> #endif
> ---------------------
> If I examine the values in gdb then I see that the second element of
> gcprolist points to itself in the next element. That's why emacs loops.

> Any idea how to fix that?

No idea.  This should never happen, obviously.  The gcprolist (and its
elements) should only ever be touched by the macros GCPRO<n> and
UNGCPRO, so the only thing that comes to mind is that someone does
GCPRO1 twice in the same block.
You may want to add some

   eassert(gcprolist != &gcpro<n>);

to the GCPRO macros which may catch the bug.  Alternatively, if you look
at the backtrace, the problematic uses of GCPRO<n> should be nearby.

Of course, maybe the problem really is one of the stack being clobbered.


        Stefan






reply via email to

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