[Ecls-list] ecl-0.9i build fails on NetBSD/sparc

Eric Radman theman at eradman.com
Wed Aug 16 06:08:19 UTC 2006

On 19:27 Sun 13 Aug     , Juan Jose Garcia-Ripoll wrote:
>    2006/8/13, Eric Radman <[1]theman at eradman.com>:
>      So far ECL has built without issue for me on NetBSD/i386 and
>      NetBSD/amd64, but it does fail on NetBSD/sparc while the ECL core
>      is
>      building the Lisp functions: [...]
>      It appears that it's crashing on SIMPLE-PROGRAM-ERROR, but I'm not
>      sure.
>    I can only advice to build ECL with debug flags (Set CFLAGS at
>    configuration time) and use gdb to debug the compilation process. Just
>    get yourself in the build/ directory, launch gdb, source .gdbinit and
>    type
>    run  <--- this makes ECL run
>    (load "compile")  <-- this is already from the ECL prompt.
>    .gdbinit sets breakpoints in several functions related to errors.
>    TIA,
>    Juanjo

Here's what happens:

(gdb) file ecl_min
Reading symbols from ecl_min...done.
(gdb) run
Starting program: /usr/local/src/ecl-0.9i/build/ecl_min

Program received signal SIGSEGV, Segmentation fault.
0x000d23ec in GC_find_limit (p=0xffdf4 "ïÿì\\", up=0)
    at /usr/local/src/ecl-0.9i/src/gc/os_dep.c:808
808                     GC_noop1((word)(*result));

(gdb) list
803                     if (up) {
804                         result += MIN_PAGE_SIZE;
805                     } else {
806                         result -= MIN_PAGE_SIZE;
807                     }
808                     GC_noop1((word)(*result));
809                 }
810             }
811             GC_reset_fault_handler();
812             if (!up) {

(gdb) print *result
Error accessing memory address 0xf3f00: Invalid argument.

Maybe this is actually correct program behavior, since the entire function
GC_find_limit() seems to be about testing some kind of memory limit.
GC_setup_temporary_fault_handler() tells me this is supposed to be caught after
setting a signal handler, and it's not. Maybe an OS bug?

Looks like it's test is *way* out of range:

(gdb) print *(result - 100000)
$13 = 69 'E'
(gdb) print *(result - 50000)
Error accessing memory address 0xe7bb0: Invalid argument.

Eric Radman

More information about the ecl-devel mailing list