[Ecls-list] Boehm-Weiser GC on OpenBSD

Juan Jose Garcia Ripoll lisp at arrakis.es
Tue Mar 15 07:50:20 UTC 2005


[Cross-posted to the ECL mailing list]

Hi,

my name is Juanjo and I am the maintainer of a Common-Lisp 
implementation called ECL (http://ecls.sf.net). For several years we 
have been using the Boehm-Weiser garbage collector successfully on 
several platforms (Linux x86/Alpha/PPC, Solaris/Sparc, OSX/PPC, Windows...)

However, our port to the OpenBSD platform fails already at 
initialization time, when we call GC_init(). More precisely, as you'll 
see below, the GC library fails when doing the first garbage collection 
in GC_init(). I could set GC_dont_precollect to 1, but then the 
collector quickly runs out of memory.

We are using v6.4 of the garbage collector, the library is configured 
with "--disable-shared --disable-threads" and I have tried both using 
GC_no_dls=1 and GC_no_dls=0 (Actually the former is preferred because we 
our interpreter garbage collects DLLs).

Any hints?

TIA,

Juanjo

--------------

Excerpt from GDB's output when running our interpreter. If somebody is 
interested, he can grab the latest code from CVS 
(http://sourceforge.net/cvs/?group_id=30035), do "./configure" and 
"make". The process will break while running "ecl_min", which is a 
minimal version of our common-lisp environment, used for compiling and 
bootstrapping the rest:

x86-openbsd1:~/ecls/build$ uname -a
OpenBSD x86-openbsd1.cf.sourceforge.net 3.4 GENERIC#18 i386

x86-openbsd1:~/ecls/build$ gdb ecl_min
GNU gdb 4.16.1
Copyright 1996 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain 
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-unknown-openbsd3.4"...

(gdb) run

Program received signal SIGSEGV, Segmentation fault.
0x1c05536d in GC_find_limit (p=0x3c017640 "\230\002¿Ï", up=0)
    at /home/users/j/jj/jjgarcia/ecls/src/gc/os_dep.c:811
811                     GC_noop1((word)(*result));
(gdb) cont

Program received signal SIGSEGV, Segmentation fault.
0x1c05536d in GC_find_limit (
    p=0xcfbf00fc "´û\001< \001¿Ï\236C\005\034°`\001<0z\001<D\002¿Ï", up=1)
    at /home/users/j/jj/jjgarcia/ecls/src/gc/os_dep.c:811
811                     GC_noop1((word)(*result));
(gdb) cont

Program received signal SIGSEGV, Segmentation fault.
0x1c052122 in GC_mark_from (mark_stack_top=0x3c0280a8, 
mark_stack=0x3c0280a8,
    mark_stack_limit=0x3c0300a8)
    at /home/users/j/jj/jjgarcia/ecls/src/gc/mark.c:759
759               deferred = *limit;
(gdb) cont

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.





More information about the ecl-devel mailing list