SBCL enomem on 686

  • Open
  • quality assurance status badge
Details
One participant
  • Christopher Howard
Owner
unassigned
Submitted by
Christopher Howard
Severity
normal
C
C
Christopher Howard wrote on 13 Feb 17:22 +0100
(name . Bug Guix)(address . bug-guix@gnu.org)
ZcuXR_kJF1FLV-rq@theoden
Hi, I was trying to run SBCL on an older 32-bit laptop, using guix on foreign distro. When I launch SBCL, the REPL dies immediately with this error:

```
os_alloc_gc_space(1,0x9000000,3221225472) failed with ENOMEM
fatal error encountered in SBCL pid 4657 tid 4657:
Can't allocate 0xc0000000 bytes for space 1
```

However, the program does work if I pass in a --dynamic-space-size argument when I launch sbcl. E.g.

```
sbcl --dynamic-space-size 2000
```

So, it seems like some allocation value or define is not being set correctly in the build for 686. SBCL manual only says:

```
‘--dynamic-space-size MEGABYTES’
Size of the dynamic space reserved on startup in megabytes.
Default value is platform dependent.
```

My system information:

```
christopher@q4os-desktop
------------------------
OS: Debian GNU/Linux 10 (buster) i686
Host: CF-30CTQAZBM 001
Kernel: 4.19.0-26-686-pae
Uptime: 21 hours, 54 mins
Packages: 2357 (dpkg), 4 (guix-user)
Shell: bash 5.1.16
Resolution: 1024x768
Terminal: /dev/pts/1
CPU: Genuine Intel L2400 (2) @ 1.667GHz
GPU: Intel Mobile 945GM/GMS, 943/940GML Express
Memory: 219MiB / 3020MiB
```

```
$ guix describe
Generation 2 Feb 12 2024 12:22:05 (current)
guix bb92a4d
branch: master
commit: bb92a4d7bc71197a51eea9075387c5313f299085
```

--
? Christopher Howard
? gemini://gem.librehacker.com

?????? ??? ????? ?? ????? ??? ????
C
C
Christopher Howard wrote on 13 Feb 19:28 +0100
(address . 69106@debbugs.gnu.org)
Zcu06NcU5KCZzUT3@theoden
Just noticed, poking around in the debian sid package, that Debian had to explicitly set

```
export SBCL_ARCH=x86
```

For their i386 build. Wonder if that might be relevant here.

--
Christopher Howard
C
C
Christopher Howard wrote on 13 Feb 21:48 +0100
(address . 69106@debbugs.gnu.org)
ZcvVmLg703F8CbZt@theoden
Hi, the problem is with these lines:

```
,@(if (target-ppc32?)
;; 3072 is too much for this architecture.
`("--dynamic-space-size=2048")
`("--dynamic-space-size=3072"))
```

Package definition simply assumes that all non-ppc32 architectures can handle the larger dynamic space, but apparently not x86. Through experiment, I see the largest dynamic space that works on my old laptop is 2810, but 2048 seems like a more sensible number.

--
Christopher Howard
?