Subject: Re: bug#2403: 23.0.90; emacs bootstrap under AIX hangs at lisp/international/characters.el

From: Harald Maier <[email-masked]>
Date: Wed, 11 Mar 2009 06:32:12 +0100

Dan Nicolaescu <[email-masked]> writes:

> Harald Maier <[email-masked]> writes:
>
>   > Dan Nicolaescu <[email-masked]> writes:
>   > 
>   > > Another idea: there is a bug being discussed on the list about loading
>   > > international/characters.
>   > > Can you please try removing this line:
>   > >  (load "international/characters")
>   > > from emacs/lisp/loadup.el
>   > > and see if that helps?
>   > 
>   > Yes, that helps and byte compiling of all the other lisp packages seems
>   > fine.
>
> A fix was installed yesterday for international/characters.  Can you
> please try uncommenting (load "international/characters") and see if it
> works better now?

Hello Dan,

unfortunately, it doesn't work. TEmacs still is in an infinite loop to
due a cyclic reference in the file "alloc.c". The gcpro data type below
points to itself in the next element (see too my previous report).

Eli pointed out that this is maybe a problem with the stack size. I
increased the stack size but the problem still exists. Stefan suggested
to put in some "eassert" but I don't have a clue where to put in this
assertion functions.

The questions are why does it happen only under AIX 5.2/5.3 and why does
it happen in characters.el. If I take out loading characters.el, emacs
builds and also the "terminal" emacs seems to work.

Harald

Program received signal SIGTSTP, Stopped (user).
[Switching to Thread 1]
Fgarbage_collect () at alloc.c:5108
(gdb) bt
#0  Fgarbage_collect () at alloc.c:5108
#1  0x10060214 in Ffuncall (nargs=3, args=0x2ff20bf4) at eval.c:2978
#2  0x10060a0c in call2 (fn=14, arg1=540510209, arg2=540510209) at
eval.c:2847
#3  0x1007881c in map_charset_for_dump (c_function=0,
function=540705105, arg=792, from=7, to=544894764) at charset.c:712
#4  0x10078be0 in map_charset_chars (c_function=0, function=540705105,
arg=792, charset=0x204d37c8, from=8481, to=32382) at charset.c:766
#5  0x10079058 in Fmap_charset_chars (function=540705105,
charset=541497681, arg=792, from_code=540510209, to_code=540510209) at
charset.c:861
#6  0x1005f484 in Feval (form=545329461) at eval.c:2389
#7  0x100156a8 in readevalloop (readcharfun=540553732, stream=0x0,
sourcename=544177635, evalfun=@0x2014e068: 0x1005ee58 <Feval>,
printflag=0, unibyte=0, readfun=540510209, start=540510209,
end=540510209) at lread.c:1782
#8  0x10015cc8 in Feval_buffer (buffer=14, printflag=540510209,
filename=544219395, unibyte=540510209, do_allow_print=539058292) at
lread.c:1845
#9  0x1005f484 in Feval (form=541151925) at eval.c:2389
#10 0x1005fb68 in Fprogn (args=541152005) at eval.c:449
#11 0x10063770 in Flet (args=541151645) at eval.c:1089
#12 0x1005f690 in Feval (form=541151565) at eval.c:2322
#13 0x100610a4 in Funwind_protect (args=541152013) at eval.c:1353
#14 0x1005f690 in Feval (form=541151557) at eval.c:2322
#15 0x1005fb68 in Fprogn (args=541152085) at eval.c:449
#16 0x10063994 in FletX (args=541151381) at eval.c:1033
#17 0x1005f690 in Feval (form=541153189) at eval.c:2322
#18 0x1005fb68 in Fprogn (args=541150261) at eval.c:449
#19 0x10063b70 in Fif (args=541153069) at eval.c:398
#20 0x1005f690 in Feval (form=541153029) at eval.c:2322
#21 0x1005fb68 in Fprogn (args=541150269) at eval.c:449
#22 0x1005fe54 in funcall_lambda (fun=541150277, nargs=4,
arg_vector=0x2ff21690) at eval.c:3224
#23 0x100606d0 in Ffuncall (nargs=5, args=0x20442969) at eval.c:3101
#24 0x10060908 in call4 (fn=14, arg1=540510209, arg2=540510209, arg3=7,
arg4=544894764) at eval.c:2894
#25 0x10016ca8 in Fload (file=544222387, noerror=540510209,
nomessage=540510209, nosuffix=538291768, must_suffix=25) at lread.c:1205
#26 0x1005f484 in Feval (form=545333781) at eval.c:2389
#27 0x100156a8 in readevalloop (readcharfun=540671769,
stream=0xf05423a0, sourcename=540843795, evalfun=@0x2014e068: 0x1005ee58
<Feval>, printflag=0, unibyte=0, readfun=540510209, start=540510209,
end=540510209) at lread.c:1782
#28 0x10016ecc in Fload (file=540843667, noerror=1, nomessage=540510209,
nosuffix=0, must_suffix=24) at lread.c:1252
#29 0x1005f484 in Feval (form=540495077) at eval.c:2389
#30 0x1008bc04 in top_level_2 () at keyboard.c:1366
#31 0x1005e3d4 in internal_condition_case (bfun=@0x20152184: 0x1008bbec
<top_level_2>, handlers=540581009, hfun=@0x2015216c: 0x10090750
<cmd_error>) at eval.c:1511
#32 0x100903bc in top_level_1 () at keyboard.c:1374
#33 0x1005e510 in internal_catch (tag=14, func=@0x20152190: 0x10090384
<top_level_1>, arg=540510209) at eval.c:1247
#34 0x10090490 in command_loop () at keyboard.c:1329
#35 0x10090990 in recursive_edit_1 () at keyboard.c:951
#36 0x10090b48 in Frecursive_edit () at keyboard.c:1013
#37 0x10002d34 in main (argc=540671625, argv=0x2ff2219c) at emacs.c:1852

Lisp Backtrace:
"map-charset-chars" (0x2ff20da8)
"eval-buffer" (0x2ff20f80)
"let" (0x2ff210d8)
"unwind-protect" (0x2ff211d8)
"let*" (0x2ff21358)
"if" (0x2ff214b0)
"load-with-code-conversion" (0x2ff21690)
"load" (0x2ff218d8)
"load" (0x2ff21bf8)

(gdb) p tail
$1 = (struct gcpro *) 0x2ff20c4c
(gdb) p *tail
$2 = {
  next = 0x2ff20c4c, 
  var = 0x2ff20c48, 
  nvars = 1
}

--- alloc.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