[cmucl-help] Segmentation fault when trying to use the max heap

Raymond Toy toy.raymond at gmail.com
Sun Feb 28 05:45:53 UTC 2016


>>>>> "Chisheng" == Chisheng Huang <cph at chi-square-works.com> writes:

    Chisheng> Raymond Toy <toy.raymond at gmail.com> writes:
    >>>>>>> "Chisheng" == Chisheng Huang <cph at chi-square-works.com> writes:
[snip]
    >> 
    >> Thanks for the report.  I'm guessing that this means that address
    >> space used for the heap overlaps some other important system space.
    >> 
    >> Can you send the output of cat /proc/<pid>/maps for the lisp process
    >> with a heap size of 1500?  That should give a hint at what's going on.
    >> CMUCL expects that the heap can use all of the memory from 0x58100000
    >> to 0xbe000000.  This seems to be true on my Fedora system.
    >> 
    >> What 32-bit linux system are you running on?

    Chisheng> It's Ubuntu 11.10 on a virtual machine (VirtualBox).  The
    Chisheng> /proc/<pid>/maps of a CMUCL process with a heap size of 1500 is 
    Chisheng> attached at the end.  Thank you very much.

[snip]
    Chisheng> 58100000-58102000 rwxp 01cab000 08:01 1416903    /usr/local/cmucl-2016-02/lib/cmucl/lib/lisp-sse2.core
    Chisheng> 58102000-b5d00000 rwxp 00000000 00:00 0 

Ok. The max memory (in x86-validate-linux.h) expects to be able to
allocate memory up to 0xbe000000...

    Chisheng> b7b82000-b7fea000 rw-p 00000000 00:00 0 
    Chisheng> b7ffe000-b8000000 rw-p 00000000 00:00 0 
    Chisheng> bffdf000-c0000000 rw-p 00000000 00:00 0          [stack]

but this map shows that you have something at 0xb7b82000.  This
probably explains why you can't allocate the full 1631 MB that
x86-validate-linux.h thinks are available.  For portability I'll have
to reduce that limit so that the top of the heap is below 0xb7b82000
or so for a max of 1530 MB or so.

Can you verify that -dynamic-space-size 1530 works?

Thanks,

--
Ray



More information about the cmucl-help mailing list