#349 build fails with gcc-4.1 on ia64

build problems
Sam Steingold
clisp (525)
Peter Van Eynde

export CC="/usr/bin/gcc-4.1 -g -D SAFETY=3 -D
NO_TRIVIALMAP -falign-functions=4"
rm -rf debian/build/ ; ./configure debian/build
--prefix=$HOME/clisp/t/ --fsstnd=debian
--with-module=clx/mit-clx && (cd debian/build &&
./makemake --prefix=$HOME/clisp/t --fsstnd=debian
--with-readline --with-gettext
--without-dynamic-ffi --with-module=clx/mit-clx
> Makefile ) && make -C debian/build/

I get:
echo '(setq *clhs-root-default*
"http://www.lisp.org/HyperSpec/")' >> config.lisp
./lisp.run -B . -N locale -Efile UTF-8 -Eterminal UTF-8
-Emisc 1:1 -norc -m 1400KW -x "(and (load
\"init.lisp\") (sys::%saveinitmem) (ext::exit))
(ext::exit t)"
make: *** [interpreted.mem] Aborted

recompiling with -g and in gdb I see:
Program received signal SIGABRT, Aborted.
0xa000000000010621 in __kernel_syscall_via_break ()
(gdb) backtrace
#0 0xa000000000010621 in __kernel_syscall_via_break ()
#1 0x20000000001e3fd0 in raise () from
#2 0x20000000001e6b00 in abort () from
#3 0x400000000000c660 in gc_mark (obj=<value optimized
out>) at spvw_gcmark.d:250
#4 0x400000000002ff20 in gar_col_normal () at
#5 0x4000000000035120 in do_gar_col_simple () at
#6 0x400000000022a2d0 in with_gc_statistics
(fun=@0x400000000031cc60: 0x4000000000035100
<do_gar_col_simple>) at predtype.d:3137
#7 0x400000000001a170 in make_space_gc (need=72,
heap_ptr=<value optimized out>,
stack_ptr=0x60000fffffadf590) at spvw_garcol.d:2405
#8 0x400000000001c710 in allocate_vector (len=7) at
#9 0x400000000001cb90 in initmem () at subrkw.d:7
#10 0x400000000002c250 in main (argc=22, argv=0x16) at

(gdb) up
#1 0x20000000001e3fd0 in raise () from
(gdb) up
#2 0x20000000001e6b00 in abort () from
(gdb) up
#3 0x400000000000c660 in gc_mark (obj=<value optimized
out>) at spvw_gcmark.d:250
250 /*NOTREACHED*/ abort();
(gdb) info locals
No locals.
(gdb) info frame
Stack level 3, frame at 0x60000fffffadeb80:
pc = 0x400000000000c660 in gc_mark
(spvw_gcmark.d:250); saved pc 0x400000000002ff20
called by frame at 0x60000fffffadeea0, caller of frame
at 0x60000fffffadeb80
source language c.
Arglist at 0x60000fffffadeb80, args: obj=<value
optimized out>
Locals at 0x60000fffffadeb80, Saved registers:
at 0x600007ffffffe328, at 0x600007ffffffe330, at
0x600007ffffffe338, at 0x600007ffffffe340, at
at 0x600007ffffffe350, at 0x600007ffffffe358, at
0x600007ffffffe360, at 0x600007ffffffe368, at
at 0x600007ffffffe378, at 0x600007ffffffe380, at
0x600007ffffffe388, at 0x600007ffffffe390, at
at 0x600007ffffffe3a0, at 0x600007ffffffe3a8, at
0x600007ffffffe3b0, at 0x600007ffffffe3b8, at
at 0x600007ffffffe3c8, at 0x600007ffffffe3d0, at
0x600007ffffffe3d8, at 0x600007ffffffe3e0, at
at 0x600007ffffffe3f0, ip at 0x600007ffffffe3e0, cfm
at 0x600007ffffffe3e8, pfs at 0x600007ffffffe3e8, ec at
r32 at 0x600007ffffffe328, r33 at 0x600007ffffffe330,
r34 at 0x600007ffffffe338, r35 at 0x600007ffffffe340,
r36 at 0x600007ffffffe348,
r37 at 0x600007ffffffe350, r38 at 0x600007ffffffe358,
r39 at 0x600007ffffffe360, r40 at 0x600007ffffffe368,
r41 at 0x600007ffffffe370,
r42 at 0x600007ffffffe378, r43 at 0x600007ffffffe380,
r44 at 0x600007ffffffe388, r45 at 0x600007ffffffe390,
r46 at 0x600007ffffffe398,
r47 at 0x600007ffffffe3a0, r48 at 0x600007ffffffe3a8,
r49 at 0x600007ffffffe3b0, r50 at 0x600007ffffffe3b8,
r51 at 0x600007ffffffe3c0,
r52 at 0x600007ffffffe3c8, r53 at 0x600007ffffffe3d0,
r54 at 0x600007ffffffe3d8, r55 at 0x600007ffffffe3e0,
r56 at 0x600007ffffffe3e8,
r57 at 0x600007ffffffe3f0
(gdb) up
#4 0x400000000002ff20 in gar_col_normal () at
/* symbol_tab */
(gdb) info locals
gcstart_time = {tv_sec = 0, tv_usec = 0}
sigblock_mask = {__val = {134217728, 0 <repeats 15 times>}}
all_weakpointers = <value optimized out>
gcend_space = <value optimized out>
gcstart_space = 0

Recompiling with adding -O0 to the CFLAGS and removing
the -O option makes the build work.


  • Logged In: YES

    Sorry I forgot the mention that this is version 2.38 on

  • Logged In: YES

    I can second this on openSuSE 10.1. Also on IA64 and
    with gcc 4.1.0. Just to say it, the binary "foo" crashes
    in IA64 done during `make check'
    or `make check-exec-image'.

    The last successfull read is the read of the rheader in
    spvw_memfile.d:1518 with the size of 16, the next read with
    128MB fails in unixaux.d:352. With this extrem large read,
    the mmaps of executable are broken and the runtime linker
    is fooled by this.

    Note with an unlimited stack size I get the message

    ./foo: initialization file
    `/usr/src/packages/BUILD/clisp-2.38/ia64-suse-linux/foo' was
    not created by this version of CLISP runtime

    which is not that what I want ;)

    Is there an approach to do the clisp object stuff hardware
    independent, that means that the layout of mappings of the
    architecture can be changed on the fly without breaking clisp?

  • Sam Steingold
    Sam Steingold

    • assigned_to: haible --> sds
    • status: open --> closed-fixed
  • Sam Steingold
    Sam Steingold

    Logged In: YES

    thank you for your bug report.
    the bug has been fixed in the CVS tree.
    you can either wait for the next release (recommended)
    or check out the current CVS tree (see http://clisp.cons.org\)
    and build CLISP from the sources (be advised that between
    releases the CVS tree is very unstable and may not even build
    on your platform).