GNU bug report logs - #45214
guile segfaults on 32-bit big-endian targets

Previous Next

Package: guile;

Reported by: John Paul Adrian Glaubitz <glaubitz <at> physik.fu-berlin.de>

Date: Sat, 12 Dec 2020 21:27:01 UTC

Severity: normal

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: John Paul Adrian Glaubitz <glaubitz <at> physik.fu-berlin.de>
To: bug-guile <at> gnu.org
Cc: Helge Deller <deller <at> gmx.de>, John David Anglin <dave.anglin <at> bell.net>,
 Andreas Schwab <schwab <at> linux-m68k.org>,
 Michael Karcher <debian <at> mkarcher.dialup.fu-berlin.de>
Subject: guile segfaults on 32-bit big-endian targets
Date: Sat, 12 Dec 2020 22:26:07 +0100
Hello!

As reported in [1], guile segfaults on 32-bit big-endian targets with:

guild compile --target="hppa-unknown-linux-gnu"                \
          -W0 -O1              \
  -L "/<<PKGBUILDDIR>>/module"                         \
  -L "/<<PKGBUILDDIR>>/guile-readline"			\
  -o "language/tree-il/eta-expand.go" "../module/language/tree-il/eta-expand.scm"
make[4]: *** [Makefile:1927: language/tree-il/eta-expand.go] Segmentation fault
make[4]: *** Waiting for unfinished jobs....
make[4]: *** [Makefile:1927: language/tree-il/debug.go] Segmentation fault
make[4]: *** [Makefile:1927: language/tree-il/analyze.go] Segmentation fault
still going
make[4]: *** [Makefile:1927: language/tree-il/effects.go] Segmentation fault
make[4]: Leaving directory '/<<PKGBUILDDIR>>/bootstrap'
make[3]: *** [Makefile:1851: all-recursive] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: *** [Makefile:1737: all] Error 2
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: *** [debian/rules:192: override_dh_auto_build] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:104: build-arch] Error 2
dpkg-buildpackage: error: debian/rules build-arch subprocess returned exit status 2

Full build log in [2]. This affects hppa, m68k and powerpc (32-bit).

Backtrace:

#0  0x006e3e9c in scm_sum (x=x <at> entry=0x0, y=0x6) at numbers.c:7569
7569      else if (SCM_BIGP (x))
[Current thread is 1 (Thread 0xf7c34480 (LWP 529732))]
(gdb) bt
#0  0x006e3e9c in scm_sum (x=x <at> entry=0x0, y=0x6) at numbers.c:7569
#1  0x006cd498 in add_immediate (a=0x0, b=<optimized out>) at intrinsics.c:80
#2  0x00749818 in vm_regular_engine (thread=0xf7971e00) at vm-engine.c:1583
#3  0x0074c2f4 in scm_call_n (proc=proc <at> entry=0xeffbf148, argv=argv <at> entry=0x0, 
nargs=nargs <at> entry=0) at vm.c:1608
#4  0x006a70fc in scm_call_0 (proc=proc <at> entry=0xeffbf148) at eval.c:490
#5  0x006d39d8 in scm_primitive_load_path (args=<optimized out>) at load.c:1259
#6  0x006d3f28 in scm_c_primitive_load_path (filename=filename <at> entry=0x776458 
"ice-9/boot-9") at load.c:1275
#7  0x006c9310 in scm_load_startup_files () at init.c:222
#8  0x006c96a8 in scm_i_init_guile (base=base <at> entry=0xffecfb18) at init.c:505
#9  0x0073b858 in scm_i_init_thread_for_guile (base=base <at> entry=0xffecfb18, 
dynamic_state=dynamic_state <at> entry=0x0) at threads.c:570
#10 0x0073ba1c in scm_i_init_thread_for_guile (dynamic_state=0x0, 
base=0xffecfb18) at threads.c:677
#11 with_guile (base=0xffecfb18, data=0xffecfb38) at threads.c:638
#12 0x003e17e4 in GC_call_with_stack_base () from 
/usr/lib/powerpc-linux-gnu/libgc.so.1
#13 0x0073bfb8 in scm_i_with_guile (dynamic_state=<optimized out>, 
data=0xffecfb28, func=0x6c90c0 <invoke_main_func>) at threads.c:688
#14 scm_with_guile (func=func <at> entry=0x6c90c0 <invoke_main_func>, 
data=data <at> entry=0xffecfb58) at threads.c:694
#15 0x006c93c8 in scm_boot_guile (argc=argc <at> entry=16, 
argv=argv <at> entry=0xffecfe14, main_func=main_func <at> entry=0x800950 <inner_main>, 
closure=closure <at> entry=0x0) at init.c:290
#16 0x00800754 in main (argc=16, argv=0xffecfe14) at guile.c:95
(gdb)

I assume the crash has got something to do how values are packed and unpacked
into the SCM object type. I have not been able to find the problem yet myself,
unfortunately which is why I am reporting this issue here.

For anyone willing to debug this, access to a fast POWER machine running a
big-endian Debian unstable can be obtained through the GCC compile farm [3].

Thanks,
Adrian

> [1] https://lists.gnu.org/archive/html/guile-devel/2020-12/msg00003.html
> [2] https://buildd.debian.org/status/fetch.php?pkg=guile-3.0&arch=hppa&ver=3.0.4-3&stamp=1607546304&raw=0
> [3] https://gcc.gnu.org/wiki/CompileFarm

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz <at> debian.org
`. `'   Freie Universitaet Berlin - glaubitz <at> physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913




This bug report was last modified 3 years and 254 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.