Bug#599967: ecl: FTBFS on ia64: Lisp initialization error. / Bad address
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
Reply to: