Bug#599967: ecl: FTBFS on ia64: Lisp initialization error. / Bad address

Samuel Thibault sthibault at debian.org
Fri Dec 31 17:47:12 UTC 2010


Cyril Brulebois, le Tue 12 Oct 2010 15:27:44 +0200, a écrit :
> | ;;; Loading src:lsp;helpfile.lsp
> | Internal or unrecoverable error in:
> | 
> | Lisp initialization error.
> | 
> |   [14: Bad address]
> | /bin/bash: line 4:  3868 Aborted                 ECLDIR=`pwd`/ ./ecl_min compile
> | make[2]: *** [bin/ecl] Error 134

strace file shows:

open("/home/sthibault/ecl-10.3.1/src/lsp/helpfile.lsp", O_RDONLY) = 6
mprotect(0x6000000000968000, 16384, PROT_READ|PROT_WRITE) = 0
lseek(6, 0, SEEK_SET)                   = 0
read(6, ";;;;  -*- Mode: Lisp; Syntax: Co"..., 8192) = 8192
mprotect(0x6000000000968000, 16384, PROT_READ|PROT_WRITE) = 0
mprotect(0x600000000096c000, 16384, PROT_READ|PROT_WRITE) = 0
...
mprotect(0x6000000000978000, 16384, PROT_READ|PROT_WRITE) = 0
mprotect(0x60000000008bc000, 16384, PROT_READ|PROT_WRITE) = 0
mprotect(0x600000000025c000, 16384, PROT_READ|PROT_WRITE) = 0
mprotect(0x6000000000254000, 262144, PROT_READ) = 0
mprotect(0x6000000000294000, 262144, PROT_READ) = 0
mprotect(0x60000000002d4000, 4669440, PROT_READ) = 0
mprotect(0x6000000000748000, 3424256, PROT_READ) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [INT], 8) = 0
--- SIGSEGV (Segmentation fault) @ 4000000000196f61 (6000000000914f70) ---
mprotect(0x6000000000914000, 16384, PROT_READ|PROT_WRITE) = 0
rt_sigreturn()                          = ? (mask now [INT ILL ABRT FPE])
--- SIGSEGV (Segmentation fault) @ 4000000000197010 (60000000008daf38) ---
mprotect(0x60000000008d8000, 16384, PROT_READ|PROT_WRITE) = 0
rt_sigreturn()                          = ? (mask now [INT ILL ABRT FPE])
...
mprotect(0x6000000000954000, 16384, PROT_READ|PROT_WRITE) = 0
mprotect(0x60000000008f8000, 16384, PROT_READ|PROT_WRITE) = 0
read(6, 0x6000000000969000, 8192)       = -1 EFAULT (Bad address)

Apparently, parsing helpfile.lsp triggers a GC, which marks the whole
memory as read-only, and the subsequent read thus fails with EFAULT,
which ecl is not able to deal with. On i386, such GC doesn't happen,
thus no issue.

Samuel





More information about the pkg-common-lisp-devel mailing list