Package: guile;
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Mon, 20 Jan 2020 16:35:02 UTC
Severity: important
Merged with 36811, 36812, 39241, 39266, 39988
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 39208 in the body.
You can then email your comments to 39208 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-guile <at> gnu.org
:bug#39208
; Package guile
.
(Mon, 20 Jan 2020 16:35:02 GMT) Full text and rfc822 format available.Ludovic Courtès <ludo <at> gnu.org>
:bug-guile <at> gnu.org
.
(Mon, 20 Jan 2020 16:35:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: bug-Guile <at> gnu.org Subject: [3.0.0] Segfault while building on ARMv7 Date: Mon, 20 Jan 2020 17:33:48 +0100
Hello, Building 3.0.0 with Guix on ARMv7 reproducibly fails: --8<---------------cut here---------------start------------->8--- BOOTSTRAP GUILEC language/cps/loop-instrumentation.go wrote `language/cps/loop-instrumentation.go' BOOTSTRAP GUILEC language/cps/peel-loops.go wrote `language/cps/effects-analysis.go' BOOTSTRAP GUILEC language/cps/prune-top-level-scopes.go wrote `language/cps/licm.go' BOOTSTRAP GUILEC language/cps/reify-primitives.go wrote `language/cps/prune-top-level-scopes.go' BOOTSTRAP GUILEC language/cps/renumber.go wrote `language/cps/peel-loops.go' BOOTSTRAP GUILEC language/cps/rotate-loops.go wrote `language/cps/reify-primitives.go' BOOTSTRAP GUILEC language/cps/optimize.go wrote `language/cps/renumber.go' BOOTSTRAP GUILEC language/cps/simplify.go wrote `language/cps/rotate-loops.go' BOOTSTRAP GUILEC language/cps/self-references.go wrote `language/cps/optimize.go' BOOTSTRAP GUILEC language/cps/slot-allocation.go wrote `language/cps/self-references.go' BOOTSTRAP GUILEC language/cps/spec.go wrote `language/cps/simplify.go' BOOTSTRAP GUILEC language/cps/specialize-primcalls.go wrote `language/cps/spec.go' BOOTSTRAP GUILEC language/cps/specialize-numbers.go /gnu/store/nvkn00kq4x4g5wjjjvjj6rhzs0ihihxl-bash-minimal-5.0.7/bin/bash: line 6: 23019 Segmentation fault (core dumped) GUILE_AUTO_COMPILE=0 ../meta/build-env guild compile --target="arm-unknown-linux-gnueabihf" -O1 -Oresolve-primitives -L "/tmp/guix-build-guile-next-3.0.0.drv-0/guile-3.0.0/module" -L "/tmp/guix-build-guile-next-3.0.0.drv-0/guile-3.0.0/guile-readline" -o "language/cps/specialize-primcalls.go" "../module/language/cps/specialize-primcalls.scm" make[2]: *** [Makefile:1931: language/cps/specialize-primcalls.go] Error 139 make[2]: *** Waiting for unfinished jobs.... wrote `language/cps/slot-allocation.go' wrote `language/cps/specialize-numbers.go' make[2]: Leaving directory '/tmp/guix-build-guile-next-3.0.0.drv-0/guile-3.0.0/bootstrap' make[1]: *** [Makefile:1849: all-recursive] Error 1 --8<---------------cut here---------------end--------------->8--- It seems to always happen while building ‘specialize-primcalls.go’. (See <https://ci.guix.gnu.org/log/8b8c0hxvm9qa5kff168vdr3943cc2s61-guile-next-3.0.0>.) The backtrace is unfortunately not all that readable: --8<---------------cut here---------------start------------->8--- Program terminated with signal SIGSEGV, Segmentation fault. #0 0xf5c67b74 in ?? () [Current thread is 1 (Thread 0xf7fe8010 (LWP 23019))] (gdb) bt #0 0xf5c67b74 in ?? () #1 0xf7f3ffcc in scm_jit_enter_mcode (thread=0xdedc20, mcode=0xf5c67a00 " 8\r\032(-@\360c\203%i\250B\300\362_\203\240`\245m") at jit.c:5725 #2 0xf7093a40 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) info threads Id Target Id Frame * 1 Thread 0xf7fe8010 (LWP 23019) 0xf5c67b74 in ?? () 2 Thread 0xf7894460 (LWP 23042) 0xf7e8f034 in __libc_do_syscall () from /gnu/store/n7c20pjm6q1xq1gqjqzzys1yk9fy7n1k-glibc-2.29/lib/libpthread.so.0 3 Thread 0xf69a5460 (LWP 23045) 0xf7e8f034 in __libc_do_syscall () from /gnu/store/n7c20pjm6q1xq1gqjqzzys1yk9fy7n1k-glibc-2.29/lib/libpthread.so.0 (gdb) frame 0 #0 0xf5c67b74 in ?? () (gdb) disassemble 0xf5c67a00,+500 Dump of assembler code from 0xf5c67a00 to 0xf5c67bf4: 0xf5c67a00: subs r0, #32 0xf5c67a02: subs r5, r1, r0 0xf5c67a04: cmp r5, #40 ; 0x28 0xf5c67a06: bne.w 0xf5c680d0 0xf5c67a0a: ldr r5, [r4, #16] 0xf5c67a0c: cmp r0, r5 0xf5c67a0e: blt.w 0xf5c680d0 0xf5c67a12: str r0, [r4, #8] 0xf5c67a14: ldr r5, [r4, #88] ; 0x58 0xf5c67a16: cmp r5, #0 0xf5c67a18: beq.w 0xf5c68102 0xf5c67a1c: ldrt r6, [r5] 0xf5c67a20: str r6, [r4, #88] ; 0x58 0xf5c67a22: str r5, [r0, #24] 0xf5c67a24: movw r5, #1293 ; 0x50d 0xf5c67a28: movs r6, #0 0xf5c67a2a: str r5, [r0, #16] 0xf5c67a2c: str r6, [r0, #20] 0xf5c67a2e: ldr r5, [r0, #24] 0xf5c67a30: ldr r6, [r0, #16] 0xf5c67a32: str r6, [r5, #0] 0xf5c67a34: ldr r5, [r0, #32] 0xf5c67a36: ldr r5, [r5, #4] 0xf5c67a38: str r5, [r0, #16] […] 0xf5c67b5e: cmp r5, #0 0xf5c67b60: ble.w 0xf5c67fce 0xf5c67b64: ldr r5, [r0, #32] 0xf5c67b66: ldr r5, [r5, #20] 0xf5c67b68: str r5, [r0, #16] 0xf5c67b6a: ldr r5, [r0, #16] 0xf5c67b6c: ldr r5, [r5, #4] 0xf5c67b6e: str r5, [r0, #16] 0xf5c67b70: mov.w r12, #0 => 0xf5c67b74: ldrt r5, [r12] 0xf5c67b78: str r5, [r0, #8] 0xf5c67b7a: ldr r5, [r0, #8] 0xf5c67b7c: ldr r6, [r0, #16] 0xf5c67b7e: cmp r5, r6 0xf5c67b80: bne.w 0xf5c67f80 […] (gdb) info registers r0 0xf7093a20 4144577056 r1 0xf7093a48 4144577096 r2 0x0 0 r3 0xf7a24001 4154605569 r4 0x74e00 478720 r5 0xdedc20 14605344 r6 0x0 0 r7 0xf5c67a00 4123425280 r8 0x0 0 r9 0x0 0 r10 0xf7fc4bdc 4160506844 r11 0xf7fb5000 4160442368 r12 0x0 0 sp 0xfffedc50 0xfffedc50 lr 0xf7f3ffcd -135004211 pc 0xf5c67b74 0xf5c67b74 cpsr 0x200f0030 537854000 fpscr 0x60000000 1610612736 (gdb) frame 1 #1 0xf7f3ffcc in scm_jit_enter_mcode (thread=0xdedc20, mcode=0xf5c67a00 " 8\r\032(-@\360c\203%i\250B\300\362_\203\240`\245m") at jit.c:5725 5725 enter_mcode (thread, mcode); (gdb) info locals No locals. (gdb) p *thread $2 = {next_thread = 0x5, vm = {ip = 0xdecd50, sp = 0x324602ae, fp = 0xdebc50, stack_limit = 0x30d, compare_result = 72 'H', apply_hook_enabled = 130 '\202', return_hook_enabled = 82 'R', next_hook_enabled = 1 '\001', abort_hook_enabled = 192 '\300', disable_mcode = 159 '\237', engine = 166 '\246', unused = 1 '\001', stack_size = 15218, stack_bottom = 0x20d, apply_hook = 0x1528240, return_hook = 0x1a69fc0, next_hook = 0x0, abort_hook = 0x5, stack_top = 0xdecd68, overflow_handler_stack = 0x28f45b3e, registers = 0xdebc58, mra_after_abort = 0x20045 "", trace_level = -140048256}, pending_asyncs = 0x116ab78, block_asyncs = 22184512, freelists = {0x20045, 0xf7a707ec, 0x1162bf8, 0x1528248, 0x5, 0x248360, 0x30999e00, 0xdebc60, 0x20d, 0x1528250, 0x1a69fc0, 0x0, 0x20045, 0xf7a70880, 0x1167440, 0x1528250, 0x5, 0xdecd80, 0x181aface, 0xdebc68, 0x20d, 0x1528258, 0x1a69fc0, 0x0, 0x20045, 0xf7a70880, 0x1167460, 0x1528258, 0x5, 0x248370, 0x91c2f1f, 0xdebc70}, pointerless_freelists = {0x30d, 0x7f1720, 0x1a69fc0, 0x1496, 0x30d, 0xdedd50, 0x96, 0x16, 0x5, 0x789740, 0x3275b29e, 0xdebc78, 0x30d, 0xdedd50, 0x16, 0x3fffffe, 0x30d, 0xdedd50, 0x96, 0x3fe, 0x5, 0xdecd98, 0x3afba8fc, 0xdebc80, 0x30d, 0x7f1720, 0x96, 0x16, 0x20d, 0x1528260, 0x1a69fc0, 0x0}, handle = 0x5, pthread = 14601648, result = 0x38a97220, exited = 14597256, guile_mode = 131141, needs_unregister = -140048256, wake = 0x1162128, sleep_cond = {__data = {{__wseq = 95281925316411917, __wseq32 = {__low = 525, __high = 22184552}}, {__g1_start = 27697088, __g1_start32 = {__low = 27697088, __high = 0}}, __g_refs = {5, 7903072}, __g_size = {67881032, 14597264}, __g1_orig_size = 131141, __wrefs = 4154919040, __g_signals = { 18228776, 22184552}}, __size = "\r\002\000\000h\202R\001\300\237\246\001\000\000\000\000\005\000\000\000`\227x\000H\310\v\004\220\274\336\000E\000\002\000\200\b\247\367(&\026\001h\202R\001", __align = 95281925316411917}, sleep_pipe = {525, 22184560}, dynamic_state = 0xa, dynstack = {base = 0x0, top = 0x5, limit = 0x789780}, continuation_root = 0x2db7da0c, continuation_base = 0xdebc98, base = 0x20d, jit_state = 0xdede20} --8<---------------cut here---------------end--------------->8--- Unfortunately I’m unable to reproduce the bug outside Guix’s build environment, even with ASLR disabled (what guix-daemon does). I wonder if that could be the same issue as <https://issues.guix.gnu.org/issue/39118>. I’ll happily take suggestions as to what debug info would be useful and what I could bisect! Ludo’.
bug-guile <at> gnu.org
:bug#39208
; Package guile
.
(Mon, 20 Jan 2020 17:10:01 GMT) Full text and rfc822 format available.Message #8 received at 39208 <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: 39208 <at> debbugs.gnu.org Subject: Re: bug#39208: [3.0.0] Segfault while building on ARMv7 Date: Mon, 20 Jan 2020 18:09:11 +0100
Ludovic Courtès <ludo <at> gnu.org> skribis: > Unfortunately I’m unable to reproduce the bug outside Guix’s build > environment, even with ASLR disabled (what guix-daemon does). I finally managed to reproduce it with from the failed-build tree: rm -vf bootstrap/language/cps/{slot-allocation,specialize-numbers,specialize-primcalls,spec}.go GUILE_JIT_LOG=4 /run/current-system/profile/bin/linux32 -R make which shows: --8<---------------cut here---------------start------------->8--- jit: entering mcode: 0xf7a5d1c0 jit: exited mcode jit: entering mcode: 0xf7a5d1c0 jit: exited mcode jit: entering mcode: 0xf7956ca0 jit: exited mcode jit: entering mcode: 0xf791a9f0 jit: exited mcode jit: entering mcode: 0xf78b03d0 jit: exited mcode jit: entering mcode: 0xf7a5d1c0 jit: exited mcode jit: entering mcode: 0xf79407bb jit: exited mcode jit: entering mcode: 0xf7a5d1c0 jit: exited mcode jit: entering mcode: 0xf79407bb jit: exited mcode jit: entering mcode: 0xf7a5d1c0 jit: exited mcode jit: vcode: start=0xf5fe95d4,+203 entry=+0 jit: mcode: 0xf5c3eac0,+2288 jit: entering mcode: 0xf5c3eac0 jit: exited mcode jit: vcode: start=0xf5fe9900,+203 entry=+0 jit: mcode: 0xf5c3f3b0,+2288 jit: entering mcode: 0xf5c3f3b0 jit: exited mcode jit: vcode: start=0xf5fe9c2c,+203 entry=+0 jit: mcode: 0xf5c3fca0,+2288 jit: entering mcode: 0xf5c3fca0 jit: exited mcode jit: vcode: start=0xf5fe9f58,+203 entry=+0 jit: mcode: 0xf5c40590,+2288 jit: entering mcode: 0xf5c40590 jit: exited mcode jit: vcode: start=0xf5fea284,+203 entry=+0 jit: mcode: 0xf5c40e80,+2288 jit: entering mcode: 0xf5c40e80 jit: exited mcode jit: vcode: start=0xf5fea5b0,+203 entry=+0 jit: mcode: 0xf5c41770,+2288 jit: entering mcode: 0xf5c41770 jit: exited mcode jit: vcode: start=0xf5fea8dc,+203 entry=+0 jit: mcode: 0xf5c42060,+2288 jit: entering mcode: 0xf5c42060 jit: exited mcode jit: vcode: start=0xf5feac08,+203 entry=+0 jit: mcode: 0xf5c42950,+2288 jit: entering mcode: 0xf5c42950 jit: exited mcode jit: vcode: start=0xf5feaf34,+203 entry=+0 jit: mcode: 0xf5c43240,+2288 jit: entering mcode: 0xf5c43240 jit: exited mcode jit: vcode: start=0xf5feb260,+203 entry=+0 jit: mcode: 0xf5c43b30,+2280 jit: entering mcode: 0xf5c43b30 /gnu/store/nvkn00kq4x4g5wjjjvjj6rhzs0ihihxl-bash-minimal-5.0.7/bin/bash: line 6: 13151 Segmentation fault (core dumped) GUILE_AUTO_COMPILE=0 ../meta/build-env guild compile --target="arm-unknown-linux-gnueabihf" -O1 -Oresolve-primitives -L "/tmp/guix-build-guile-next-3.0.0.drv-0/guile-3.0.0/module" -L "/tmp/guix-build-guile-next-3.0.0.drv-0/guile-3.0.0/guile-readline" -o "language/cps/slot-allocation.go" "../module/language/cps/slot-allocation.scm" make[2]: *** [Makefile:1931: language/cps/slot-allocation.go] Error 139 --8<---------------cut here---------------end--------------->8--- Backtrace: --8<---------------cut here---------------start------------->8--- #0 0xf5c43ca4 in ?? () [Current thread is 1 (Thread 0xf7fe8010 (LWP 13151))] (gdb) bt #0 0xf5c43ca4 in ?? () #1 0xf7f3ffcc in scm_jit_enter_mcode (thread=0x74fe10, mcode=0xf5c43b30 " 8\r\032(-@\360c\203%i\250B\300\362_\203\240`\245m") at jit.c:5725 #2 0x00021048 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) disassemble 0xf5c43b30,+2280 Dump of assembler code from 0xf5c43b30 to 0xf5c44418: 0xf5c43b30: subs r0, #32 0xf5c43b32: subs r5, r1, r0 0xf5c43b34: cmp r5, #40 ; 0x28 0xf5c43b36: bne.w 0xf5c44200 0xf5c43b3a: ldr r5, [r4, #16] 0xf5c43b3c: cmp r0, r5 0xf5c43b3e: blt.w 0xf5c44200 0xf5c43b42: str r0, [r4, #8] 0xf5c43b44: ldr r5, [r4, #88] ; 0x58 0xf5c43b46: cmp r5, #0 0xf5c43b48: beq.w 0xf5c44232 0xf5c43b4c: ldrt r6, [r5] 0xf5c43b50: str r6, [r4, #88] ; 0x58 0xf5c43b52: str r5, [r0, #24] 0xf5c43b54: movw r5, #1293 ; 0x50d 0xf5c43b58: movs r6, #0 […] 0xf5c43c52: and.w r5, r5, #127 ; 0x7f 0xf5c43c56: cmp r5, #13 0xf5c43c58: bne.w 0xf5c4411e 0xf5c43c5c: ldr r5, [r0, #32] 0xf5c43c5e: ldr r5, [r5, #20] 0xf5c43c60: str r5, [r0, #16] 0xf5c43c62: ldr r5, [r0, #16] 0xf5c43c64: ldrt r5, [r5] 0xf5c43c68: str r5, [r0, #16] 0xf5c43c6a: eors r5, r5 0xf5c43c6c: str r5, [r0, #20] 0xf5c43c6e: ldr r5, [r0, #16] 0xf5c43c70: ldr r6, [r0, #20] 0xf5c43c72: lsls r2, r6, #24 0xf5c43c74: lsrs r6, r6, #8 0xf5c43c76: lsrs r5, r5, #8 0xf5c43c78: adds r5, r5, r2 0xf5c43c7a: str r5, [r0, #16] 0xf5c43c7c: str r6, [r0, #20] 0xf5c43c7e: ldr r5, [r0, #16] 0xf5c43c80: ldr r6, [r0, #20] 0xf5c43c82: cmp r6, #0 0xf5c43c84: blt.w 0xf5c440fe 0xf5c43c88: cmp r6, #0 0xf5c43c8a: bne.w 0xf5c43c94 0xf5c43c8e: cmp r5, #0 0xf5c43c90: ble.w 0xf5c440fe 0xf5c43c94: ldr r5, [r0, #32] 0xf5c43c96: ldr r5, [r5, #20] 0xf5c43c98: str r5, [r0, #16] 0xf5c43c9a: ldr r5, [r0, #16] 0xf5c43c9c: ldr r5, [r5, #4] 0xf5c43c9e: str r5, [r0, #16] 0xf5c43ca0: mov.w r12, #0 => 0xf5c43ca4: ldrt r5, [r12] 0xf5c43ca8: str r5, [r0, #8] […] 0xf5c443fc: ands r0, r6 0xf5c443fe: ; <UNDEFINED> instruction: 0xf7a24f00 0xf5c44402: mov pc, r7 0xf5c44404: ands r0, r6 0xf5c44406: ; <UNDEFINED> instruction: 0xf7a24f00 0xf5c4440a: mov pc, r7 0xf5c4440c: ands r0, r6 0xf5c4440e: ; <UNDEFINED> instruction: 0xf7a24f00 0xf5c44412: mov pc, r7 0xf5c44414: ands r0, r6 0xf5c44416: ; <UNDEFINED> instruction: 0xf7a20000 End of assembler dump. (gdb) p $r12 $1 = 0 --8<---------------cut here---------------end--------------->8--- Apparently r12 is JIT_TMP0. Anyway, it seems that I have an environment in which to reproduce and debug it now. Ludo’.
Ludovic Courtès <ludo <at> gnu.org>
to control <at> debbugs.gnu.org
.
(Wed, 22 Jan 2020 14:13:01 GMT) Full text and rfc822 format available.Ludovic Courtès <ludo <at> gnu.org>
:Ludovic Courtès <ludo <at> gnu.org>
:Message #15 received at 39208-done <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> Cc: 39208-done <at> debbugs.gnu.org Subject: Re: bug#39208: [3.0.0] Segfault while building on ARMv7 Date: Wed, 11 Mar 2020 21:21:03 +0100
Hi, Ludovic Courtès <ludo <at> gnu.org> skribis: > Building 3.0.0 with Guix on ARMv7 reproducibly fails: > > BOOTSTRAP GUILEC language/cps/loop-instrumentation.go > wrote `language/cps/loop-instrumentation.go' > BOOTSTRAP GUILEC language/cps/peel-loops.go > wrote `language/cps/effects-analysis.go' > BOOTSTRAP GUILEC language/cps/prune-top-level-scopes.go > wrote `language/cps/licm.go' > BOOTSTRAP GUILEC language/cps/reify-primitives.go > wrote `language/cps/prune-top-level-scopes.go' > BOOTSTRAP GUILEC language/cps/renumber.go > wrote `language/cps/peel-loops.go' > BOOTSTRAP GUILEC language/cps/rotate-loops.go > wrote `language/cps/reify-primitives.go' > BOOTSTRAP GUILEC language/cps/optimize.go > wrote `language/cps/renumber.go' > BOOTSTRAP GUILEC language/cps/simplify.go > wrote `language/cps/rotate-loops.go' > BOOTSTRAP GUILEC language/cps/self-references.go > wrote `language/cps/optimize.go' > BOOTSTRAP GUILEC language/cps/slot-allocation.go > wrote `language/cps/self-references.go' > BOOTSTRAP GUILEC language/cps/spec.go > wrote `language/cps/simplify.go' > BOOTSTRAP GUILEC language/cps/specialize-primcalls.go > wrote `language/cps/spec.go' > BOOTSTRAP GUILEC language/cps/specialize-numbers.go > /gnu/store/nvkn00kq4x4g5wjjjvjj6rhzs0ihihxl-bash-minimal-5.0.7/bin/bash: line 6: 23019 Segmentation fault (core dumped) GUILE_AUTO_COMPILE=0 ../meta/build-env guild compile --target="arm-unknown-linux-gnueabihf" -O1 -Oresolve-primitives -L "/tmp/guix-build-guile-next-3.0.0.drv-0/guile-3.0.0/module" -L "/tmp/guix-build-guile-next-3.0.0.drv-0/guile-3.0.0/guile-readline" -o "language/cps/specialize-primcalls.go" "../module/language/cps/specialize-primcalls.scm" > make[2]: *** [Makefile:1931: language/cps/specialize-primcalls.go] Error 139 > make[2]: *** Waiting for unfinished jobs.... > wrote `language/cps/slot-allocation.go' > wrote `language/cps/specialize-numbers.go' > make[2]: Leaving directory '/tmp/guix-build-guile-next-3.0.0.drv-0/guile-3.0.0/bootstrap' > make[1]: *** [Makefile:1849: all-recursive] Error 1 This also is fixed by commit 7c17655cd3d859bf0c5a86d9782a7788205fc05a (<https://issues.guix.gnu.org/issue/39266>). \o/ Ludo’.
Ludovic Courtès <ludo <at> gnu.org>
to control <at> debbugs.gnu.org
.
(Thu, 12 Mar 2020 16:02:02 GMT) Full text and rfc822 format available.Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Fri, 10 Apr 2020 11:24:04 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.