Hello David Bremner, now the hint in the subject makes sense ;-) I can perfectly reproduce the crash now.
I compared the arguments from the build log [1] and reduced it until the crash happens and the important part is the "-D BLISS_USE_GMP". Therefore /usr/share/doc/bliss-doc/examples/Makefile could maybe completed with a CXXFLAGS line similar to one below, to avoid that situation. Kind regards, Bernhard [1] https://buildd.debian.org/status/fetch.php?pkg=bliss&arch=amd64&ver=0.73-2&stamp=1542196885&raw=0 root@debian:/usr/share/doc/bliss-doc/examples# git diff diff --git a/Makefile b/Makefile index 2a676ba..d290e31 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,18 @@ default: all LDLIBS = -lbliss -lgmp +#CXXFLAGS = -Wdate-time -D_FORTIFY_SOURCE=2 -DBLISS_COMPILED_DATE="\"Debian \"" -D BLISS_USE_GMP -g -O2 -fstack-protector-strong -Wformat -Werror=format-security +# works + +#CXXFLAGS = -D BLISS_USE_GMP -g -O2 -fstack-protector-strong -Wformat -Werror=format-security +# works + +#CXXFLAGS = -g -O2 -fstack-protector-strong -Wformat -Werror=format-security +# fails + +CXXFLAGS = -D BLISS_USE_GMP +# works + all: build build: $(PROGRAMS)
# Buster amd64 qemu VM 2019-03-26 apt update apt dist-upgrade apt install dpkg-dev devscripts mc systemd-coredump gdb valgrind bliss bliss-doc libbliss-dev bliss-dbgsym libbliss2-dbgsym libgmp10-dbgsym cd /usr/share/doc/bliss-doc/examples make root@debian:/usr/share/doc/bliss-doc/examples# make g++ bliss.cc -lbliss -lgmp -o bliss mkdir /tmp/source/libgmp10/orig -p cd /tmp/source/libgmp10/orig apt source libgmp10 cd ######### wget "https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=923527;filename=foo.in;msg=15" -O foo.in benutzer@debian:~$ /usr/share/doc/bliss-doc/examples/bliss foo.in Speicherzugriffsfehler (Speicherabzug geschrieben) root@debian:~# coredumpctl list TIME PID UID GID SIG COREFILE EXE Tue 2019-03-26 11:23:31 CET 14934 1000 1000 11 present /usr/share/doc/bliss-doc/examples/bliss [ 451.341549] bliss[14934]: segfault at 3fff ip 00007febc293c0f9 sp 00007ffd303fe908 error 6 in libgmp.so.10.3.2[7febc2923000+5e000] [ 451.341558] Code: ff 48 89 c1 e9 55 ff ff ff 0f 1f 84 00 00 00 00 00 48 8d 56 10 e9 b7 70 fe ff 0f 1f 80 00 00 00 00 48 8b 47 08 48 85 f6 78 17 <48> 89 30 0f 95 c0 0f b6 c0 89 47 04 c3 66 2e 0f 1f 84 00 00 00 00 root@debian:~# coredumpctl gdb 14934 PID: 14934 (bliss) UID: 1000 (benutzer) GID: 1000 (benutzer) Signal: 11 (SEGV) Timestamp: Tue 2019-03-26 11:23:31 CET (4min 57s ago) Command Line: /usr/share/doc/bliss-doc/examples/bliss foo.in Executable: /usr/share/doc/bliss-doc/examples/bliss Control Group: /user.slice/user-1000.slice/session-3.scope Unit: session-3.scope Slice: user-1000.slice Session: 3 Owner UID: 1000 (benutzer) Boot ID: 5b54465ced1e488b84113e9382cd085d Machine ID: 32f43b50ac8c4b21941bc0b02f8e7811 Hostname: debian Storage: /var/lib/systemd/coredump/core.bliss.1000.5b54465ced1e488b84113e9382cd085d.14934.1553595811000000.lz4 Message: Process 14934 (bliss) of user 1000 dumped core. Stack trace of thread 14934: #0 0x00007febc293c0f9 __gmpz_set_si (libgmp.so.10) #1 0x00007febc29aac10 _ZN5bliss6BigNum6assignEi (libbliss.so.2) #2 0x00007febc29ada3c _ZN5bliss13AbstractGraph18find_automorphismsERNS_5StatsEPFvPvjPKjES3_ (libbliss.so.2) #3 0x00005561cbde2cd0 main (bliss) #4 0x00007febc245a09b __libc_start_main (libc.so.6) #5 0x00005561cbde21da _start (bliss) GNU gdb (Debian 8.2.1-2) 8.2.1 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/share/doc/bliss-doc/examples/bliss...(no debugging symbols found)...done. [New LWP 14934] Core was generated by `/usr/share/doc/bliss-doc/examples/bliss foo.in'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007febc293c0f9 in __gmpz_set_si () from /usr/lib/x86_64-linux-gnu/libgmp.so.10 (gdb) set width 0 (gdb) set pagination off (gdb) bt #0 0x00007febc293c0f9 in __gmpz_set_si () from /usr/lib/x86_64-linux-gnu/libgmp.so.10 #1 0x00007febc29aac10 in bliss::AbstractGraph::search(bool, bliss::Stats&) () from /usr/lib/x86_64-linux-gnu/libbliss.so.2 #2 0x00007febc29ada3c in bliss::AbstractGraph::find_automorphisms(bliss::Stats&, void (*)(void*, unsigned int, unsigned int const*), void*) () from /usr/lib/x86_64-linux-gnu/libbliss.so.2 #3 0x00005561cbde2cd0 in main () (gdb) Core was generated by `/usr/share/doc/bliss-doc/examples/bliss foo.in'. Program terminated with signal SIGSEGV, Segmentation fault. #0 __gmpz_set_si (dest=dest@entry=0x7ffd303feb20, val=val@entry=1) at ../../mpz/set_si.c:42 42 ../../mpz/set_si.c: Datei oder Verzeichnis nicht gefunden. (gdb) set width 0 (gdb) set pagination off (gdb) directory /tmp/source/libgmp10/orig/gmp-6.1.2+dfsg/debian/source Source directories searched: /tmp/source/libgmp10/orig/gmp-6.1.2+dfsg/debian/source:$cdir:$cwd (gdb) bt #0 __gmpz_set_si (dest=dest@entry=0x7ffd303feb20, val=val@entry=1) at ../../mpz/set_si.c:42 #1 0x00007febc29aac10 in bliss::BigNum::assign (n=1, this=0x7ffd303feb20) at ./include/bliss/bignum.hh:61 #2 bliss::Stats::reset (this=0x7ffd303feb20) at ../graph.hh:70 #3 bliss::AbstractGraph::search (this=0x5561cce140b0, canonical=false, stats=...) at ../graph.cc:638 #4 0x00007febc29ada3c in bliss::AbstractGraph::find_automorphisms (this=0x5561cce140b0, stats=..., hook=<optimized out>, user_param=<optimized out>) at ../graph.cc:1765 #5 0x00005561cbde2cd0 in main () (gdb) down #0 __gmpz_set_si (dest=dest@entry=0x7ffd303feb20, val=val@entry=1) at ../../mpz/set_si.c:42 42 PTR (dest)[0] = vl & GMP_NUMB_MASK; (gdb) list 33 34 void 35 mpz_set_si (mpz_ptr dest, signed long int val) 36 { 37 mp_size_t size; 38 mp_limb_t vl; 39 40 vl = (mp_limb_t) ABS_CAST (unsigned long int, val); 41 42 PTR (dest)[0] = vl & GMP_NUMB_MASK; 43 size = vl != 0; 44 45 #if GMP_NAIL_BITS != 0 46 if (vl > GMP_NUMB_MAX) 47 { 48 MPZ_REALLOC (dest, 2); 49 PTR (dest)[1] = vl >> GMP_NUMB_BITS; 50 size = 2; 51 } 52 #endif 53 54 SIZ (dest) = val >= 0 ? size : -size; 55 } (gdb) disassemble $pc-0x20,$pc+0x20 Dump of assembler code from 0x7febc293c0d9 to 0x7febc293c119: 0x00007febc293c0d9: (bad) 0x00007febc293c0da: test %al,(%rax) 0x00007febc293c0dc: add %al,(%rax) 0x00007febc293c0de: add %al,(%rax) 0x00007febc293c0e0 <__gmpz_set_q+0>: lea 0x10(%rsi),%rdx 0x00007febc293c0e4 <__gmpz_set_q+4>: jmpq 0x7febc29231a0 <__gmpz_tdiv_q@plt> 0x00007febc293c0e9: nopl 0x0(%rax) 0x00007febc293c0f0 <__gmpz_set_si+0>: mov 0x8(%rdi),%rax 0x00007febc293c0f4 <__gmpz_set_si+4>: test %rsi,%rsi 0x00007febc293c0f7 <__gmpz_set_si+7>: js 0x7febc293c110 <__gmpz_set_si+32> => 0x00007febc293c0f9 <__gmpz_set_si+9>: mov %rsi,(%rax) 0x00007febc293c0fc <__gmpz_set_si+12>: setne %al 0x00007febc293c0ff <__gmpz_set_si+15>: movzbl %al,%eax 0x00007febc293c102 <__gmpz_set_si+18>: mov %eax,0x4(%rdi) 0x00007febc293c105 <__gmpz_set_si+21>: retq 0x00007febc293c106 <__gmpz_set_si+22>: nopw %cs:0x0(%rax,%rax,1) 0x00007febc293c110 <__gmpz_set_si+32>: neg %rsi 0x00007febc293c113 <__gmpz_set_si+35>: mov %rsi,(%rax) 0x00007febc293c116 <__gmpz_set_si+38>: mov $0xffffffff,%eax End of assembler dump. (gdb) print dest $1 = (mpz_ptr) 0x7ffd303feb20 (gdb) print $rax $2 = 16383 (gdb) print/x $rax $3 = 0x3fff (gdb) print/x $rdi $4 = 0x7ffd303feb20 (gdb) print *dest $5 = {_mp_alloc = 0, _mp_size = -2147483648, _mp_d = 0x3fff} ################ benutzer@debian:~$ gdb -q --args /usr/share/doc/bliss-doc/examples/bliss foo.in Reading symbols from /usr/share/doc/bliss-doc/examples/bliss...(no debugging symbols found)...done. (gdb) set width 0 (gdb) set pagination off (gdb) directory /tmp/source/libgmp10/orig/gmp-6.1.2+dfsg/debian/source Source directories searched: /tmp/source/libgmp10/orig/gmp-6.1.2+dfsg/debian/source:$cdir:$cwd (gdb) b main Breakpoint 1 at 0x18aa (gdb) run Starting program: /usr/share/doc/bliss-doc/examples/bliss foo.in Breakpoint 1, 0x00005555555558aa in main () (gdb) record (gdb) cont Continuing. [1]+ Angehalten gdb -q --args /usr/share/doc/bliss-doc/examples/bliss foo.in benutzer@debian:~$ fg gdb -q --args /usr/share/doc/bliss-doc/examples/bliss foo.in Process record: failed to record execution log. Program stopped. __gmpz_set_si (dest=dest@entry=0x7fffffffe460, val=val@entry=1) at ../../mpz/set_si.c:42 42 PTR (dest)[0] = vl & GMP_NUMB_MASK; (gdb) disassemble $pc-0x20,$pc+0x20 Dump of assembler code from 0x7ffff7f450d9 to 0x7ffff7f45119: 0x00007ffff7f450d9: (bad) 0x00007ffff7f450da: test %al,(%rax) 0x00007ffff7f450dc: add %al,(%rax) 0x00007ffff7f450de: add %al,(%rax) 0x00007ffff7f450e0 <__gmpz_set_q+0>: lea 0x10(%rsi),%rdx 0x00007ffff7f450e4 <__gmpz_set_q+4>: jmpq 0x7ffff7f2c1a0 <__gmpz_tdiv_q@plt> 0x00007ffff7f450e9: nopl 0x0(%rax) 0x00007ffff7f450f0 <__gmpz_set_si+0>: mov 0x8(%rdi),%rax 0x00007ffff7f450f4 <__gmpz_set_si+4>: test %rsi,%rsi 0x00007ffff7f450f7 <__gmpz_set_si+7>: js 0x7ffff7f45110 <__gmpz_set_si+32> => 0x00007ffff7f450f9 <__gmpz_set_si+9>: mov %rsi,(%rax) 0x00007ffff7f450fc <__gmpz_set_si+12>: setne %al 0x00007ffff7f450ff <__gmpz_set_si+15>: movzbl %al,%eax 0x00007ffff7f45102 <__gmpz_set_si+18>: mov %eax,0x4(%rdi) 0x00007ffff7f45105 <__gmpz_set_si+21>: retq 0x00007ffff7f45106 <__gmpz_set_si+22>: nopw %cs:0x0(%rax,%rax,1) 0x00007ffff7f45110 <__gmpz_set_si+32>: neg %rsi 0x00007ffff7f45113 <__gmpz_set_si+35>: mov %rsi,(%rax) 0x00007ffff7f45116 <__gmpz_set_si+38>: mov $0xffffffff,%eax End of assembler dump. (gdb) print/x $rax $1 = 0x3fff (gdb) display/x $rax 1: /x $rax = 0x3fff (gdb) reverse-stepi 0x00007ffff7f450f7 40 vl = (mp_limb_t) ABS_CAST (unsigned long int, val); 1: /x $rax = 0x3fff (gdb) display/i $pc 2: x/i $pc => 0x7ffff7f450f7 <__gmpz_set_si+7>: js 0x7ffff7f45110 <__gmpz_set_si+32> (gdb) reverse-stepi 0x00007ffff7f450f4 40 vl = (mp_limb_t) ABS_CAST (unsigned long int, val); 1: /x $rax = 0x3fff 2: x/i $pc => 0x7ffff7f450f4 <__gmpz_set_si+4>: test %rsi,%rsi (gdb) 40 vl = (mp_limb_t) ABS_CAST (unsigned long int, val); 1: /x $rax = 0x0 2: x/i $pc => 0x7ffff7f450f0 <__gmpz_set_si>: mov 0x8(%rdi),%rax (gdb) x/1xg $rdi + 8 0x7fffffffe468: 0x0000000000003fff (gdb) watch *0x7fffffffe468 Hardware watchpoint 2: *0x7fffffffe468 (gdb) dele 2 (gdb) set can-use-hw-watchpoints 0 (gdb) watch *0x7fffffffe468 Watchpoint 3: *0x7fffffffe468 (gdb) watch *0x7fffffffe460 Watchpoint 4: *0x7fffffffe460 (gdb) undisp 1 (gdb) reverse-cont Continuing. Watchpoint 3: *0x7fffffffe468 Old value = 16383 New value = 0 0x0000555555555f1a in bliss::BigNum::assign(int) () 2: x/i $pc => 0x555555555f1a <_ZN5bliss6BigNum6assignEi+18>: fstpt (%rax) (gdb) bt #0 0x0000555555555f1a in bliss::BigNum::assign(int) () #1 0x0000555555555f7b in bliss::Stats::reset() () #2 0x0000555555555ff4 in bliss::Stats::Stats() () #3 0x0000555555555c15 in main () ################ set width 0 set pagination off directory /tmp/source/libgmp10/orig/gmp-6.1.2+dfsg/debian/source b main run record cont ############### https://buildd.debian.org/status/fetch.php?pkg=bliss&arch=amd64&ver=0.73-2&stamp=1542196885&raw=0 g++ -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -DBLISS_COMPILED_DATE="\"Debian \"" -D BLISS_USE_GMP -I ./include -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o bliss-bliss.o `test -f 'bliss.cc' || echo '../'`bliss.cc ############### root@debian:/usr/share/doc/bliss-doc/examples# git diff diff --git a/Makefile b/Makefile index 2a676ba..d290e31 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,18 @@ default: all LDLIBS = -lbliss -lgmp +#CXXFLAGS = -Wdate-time -D_FORTIFY_SOURCE=2 -DBLISS_COMPILED_DATE="\"Debian \"" -D BLISS_USE_GMP -g -O2 -fstack-protector-strong -Wformat -Werror=format-security +# works + +#CXXFLAGS = -D BLISS_USE_GMP -g -O2 -fstack-protector-strong -Wformat -Werror=format-security +# works + +#CXXFLAGS = -g -O2 -fstack-protector-strong -Wformat -Werror=format-security +# fails + +CXXFLAGS = -D BLISS_USE_GMP +# works + all: build build: $(PROGRAMS)