I'm running FreeBSD 4.8-STABLE and CMUCL 18e,
on ia32 hardware (more specifically, an Athlon).
Until recently CMUCL has worked very nicely for me,
but ever since a recent kernel rebuild it's been failing
in an interesting way.
When I run "lisp", the process immediately grows to
256Mb in size. The RSS grows quite rapidly to about
190Mb, at which point the process dumps core. This
takes about 15 seconds, during the last 10s of which
the HD activity light is mostly on and the machine is
quite unresponsive :-). This machine has 256Mb of
physical memory and plenty of swap.
gdb says:
Program terminated with signal 11, Segmentation fault.
#0 0x1ffff000 in ?? ()
(gdb) backtrace
#0 0x1ffff000 in ?? ()
#1 0x8051ab6 in os_validate (addr=0x10000000 "", len=268431360)
at /home/emarsden/cvs-cmucl/src/lisp/FreeBSD-os.c:95
#2 0x804f2b4 in ensure_space (start=0x10000000, size=268431360)
at /home/emarsden/cvs-cmucl/src/lisp/validate.c:15
#3 0x804f303 in validate () at
/home/emarsden/cvs-cmucl/src/lisp/validate.c:33
#4 0x804ba25 in main (argc=1, argv=0xbfbffa5c, envp=0xbfbffa64)
at /home/emarsden/cvs-cmucl/src/lisp/lisp.c:358
#5 0x804b3bd in _start ()
I haven't checked that it *is* the recent kernel rebuild that
has triggered this behaviour. It's certainly true that the last
time I ran CMUCL before it, it worked, and that the first time
I tried after, it failed. None of the kernel config changes
that I made seem like they should cause problems, but
here's a summary:
- Removed I386_CPU from the list (keeping I486_CPU upwards)
This says: "feel free to build the kernel so that it assumes it's
running on something more modern than an 80386".
- Replaced MATH_EMULATE with GPL_MATH_EMULATE
This says: "if gremlins suddenly take away the floating-point
hardware, use a less broken emulator".
- Added options to set MAXDSIZ, MAXSSIZ, DFLDSIZ to
256Mb
This says: make the maximum data and stack sizes 256Mb.
I think the default is 128Mb.
- Added option USER_LDT
This says: let user code diddle with the local descriptor
table.
- Removed a bunch of devices I don't have
I don't think there's anything there I haven't done before
without causing any problems for CMUCL, but the evidence
would seem to be against me :-).
This looks like a bug somewhere. Is it in my brain? If not,
what should I do next to help track it down? (For instance,
I could recompile the kernel again without the *SIZ options
and see whether the problem goes away. Or I could go and
bother the maintainer of the FreeBSD port and leave the
cmucl-help list alone.)
--
Gareth McCaughan