From: Bruno H. <br...@cl...> - 2004-11-23 22:02:45
|
Sam wrote: > a simple test does catch the bug: > > [1]> (defun test-package (num) > (when (find-package "TEST") (delete-package "TEST")) > (make-package "TEST" :use nil) > (dotimes (i num) (intern (format nil "SYM-~d" i) "TEST")) > (loop :repeat 100 :do > (let ((name (format nil "SYM-~d" (random num)))) > (unless (find-symbol name "TEST") > (error "~S not found" name))))) > TEST-PACKAGE > [2]> (compile 'test-package ) > TEST-PACKAGE ; > NIL ; > NIL > [3]> (time (test-package 10000000)) > > Real time: 161.88853 sec. > Run time: 161.75 sec. > Space: 700735112 Bytes > GC: 218, GC time: 90.44 sec. > NIL > [4]> (time (test-package 100000000)) > > *** - handle_fault error2 ! address = 0xa4c333a8 not in > [0x33974000,0x4c059bc0) ! > SIGSEGV cannot be cured. Fault address = 0xa4c333a8. > Segmentation fault > > > (this is on AMD64) I bumped the max hash table size to 2^32-1 now, when possible. Does it work better now? Bruno |