Hi Alex,

I encountered the following problem with GC:

===

$ gdb ~/picolisp/bin/picolisp ~/picolisp/core
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /lib32/libc.so.6...done.
Loaded symbols for /lib32/libc.so.6
Reading symbols from /lib32/libm.so.6...done.
Loaded symbols for /lib32/libm.so.6
Reading symbols from /lib32/libdl.so.2...done.
Loaded symbols for /lib32/libdl.so.2
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2

warning: Lowest section in system-supplied DSO at 0xffffe000 is .hash at 
ffffe0b4
Program terminated with signal 11, Segmentation fault.
[New process 13100]
#0  0x080525d8 in gc (c=131072) at gc.c:68
68               if (num(val(p->car)) & 1)
(gdb) 

===

The same problem happens in v2.3.3 and v2.3.4 but v2.3.2 works fine.

My code leading to this is something that reads a csv file and parses
the data into a picolisp db, roughly:

===

(in "my.csv"
   (setq @Nr 1)
   (until (eof)
      (let (L (mapcar pack (mapcar clip (split (line) "|")))
            @Nm ...
            ...)
         (when @Nm
            (inc '@Nr)
            (eval (fill '(obj ((+MyObj) nr @Nr) nm @Nm ...)))))))
(commit)

===

If I add:

(gc 10) # avoid segfault

at the beginning of the script, it works.

Not sure what is going on exactly but some change in v2.3.3 must have
broken gc.  Looks like too much garbage is killing picolisp;-(

Cheers,

Tomas
-- 
UNSUBSCRIBE: mailto:[EMAIL PROTECTED]

Reply via email to