Now I found it!

########################################
(pool "bad.db")
(do 200 (new T) (gc))
########################################

If you put this into a file named "bad.l", and call

   $ bin/picolisp bad.l
   Segmentation fault

This crashes reproducibly when "bin/picolisp" was compiled with GCC
4.2.3 (Ubuntu 4.2.3-2ubuntu7), and the -O2 option. It runs fine when it
was compiled on other systems I have access to (all with older versions
of GCC), or with the -O1 option.


I suspect that faulty code was generated for 'new', because 'do' does
not modify the heap, and a crash in 'gc' is usually only an indicator
for a corrupted heap.

I'll investigate the code for 'new' more closely now.

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:[EMAIL PROTECTED]

Reply via email to