[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