Re: segfaults on several non-x86 architectures
Publié : dim. juin 25, 2017 7:41 pm
All 30 tests pass for me on a ppc64el machine, without needing the flag I just mentioned. Thanks for the fix!
Xcas: un logiciel libre de calcul formel
https://xcas.univ-grenoble-alpes.fr/forum/
https://xcas.univ-grenoble-alpes.fr/forum/viewtopic.php?f=4&t=1785
Code : Tout sélectionner
(sid_arm64-dchroot)infinity0@asachi:~/giac$ src/icas
Reading symbols from /home/infinity0/giac/src/.libs/lt-icas...done.
(gdb) run
Starting program: /home/infinity0/giac/src/.libs/lt-icas
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
giac::gen::~gen (this=0xffffaaaaaac51550, __in_chrg=<optimized out>) at gen.h:659
659 if ( type>_DOUBLE_ && type!=_FLOAT_
(gdb) bt
#0 giac::gen::~gen (this=0xffffaaaaaac51550, __in_chrg=<optimized out>) at gen.h:659
#1 0x0000ffffb7d50394 in giac::symbolic::~symbolic (this=0xffffaaaaaac51548, __in_chrg=<optimized out>) at gen.h:1419
#2 giac::ref_symbolic::~ref_symbolic (this=0xffffaaaaaac51540, __in_chrg=<optimized out>) at gen.h:1448
#3 giac::gen::delete_gen (this=<optimized out>) at gen.cc:1417
#4 0x0000ffffb7571650 in __static_initialization_and_destruction_0 (__priority=65535, __initialize_p=1) at prog.cc:9240
#5 0x0000ffffb7fdfb20 in ?? () from /lib/ld-linux-aarch64.so.1
#6 0x0000ffffb8000198 in ?? ()
Backtrace stopped: not enough registers or memory available to unwind further
(gdb) p $_siginfo._sifields._sigfault.si_addr
$1 = (void *) 0xffaaaaaac51550
(gdb) info inferiors
Num Description Executable
* 1 process 21921 /home/infinity0/giac/src/.libs/lt-icas
(gdb) shell grep stack /proc/21921/maps
fffffffdf000-1000000000000 rw-p 00000000 00:00 0 [stack]
(gdb) shell cat /proc/21921/maps
aaaaaaaaa000-aaaaaabf7000 r-xp 00000000 fe:00 16787964 /home/infinity0/giac/src/.libs/lt-icas
aaaaaac07000-aaaaaac0a000 r--p 0014d000 fe:00 16787964 /home/infinity0/giac/src/.libs/lt-icas
aaaaaac0a000-aaaaaac12000 rw-p 00150000 fe:00 16787964 /home/infinity0/giac/src/.libs/lt-icas
aaaaaac12000-aaaaaac6b000 rw-p 00000000 00:00 0 [heap]
ffffb5b6c000-ffffb5b73000 rw-p 00000000 00:00 0
ffffb5b73000-ffffb5b84000 r-xp 00000000 fe:00 17569526 /lib/aarch64-linux-gnu/libbsd.so.0.8.5
[.. etc ..]
ffffb73fb000-ffffb7f6f000 r-xp 00000000 fe:00 16787949 /home/infinity0/giac/src/.libs/libgiac.so.0.0.0
ffffb7f6f000-ffffb7f7e000 ---p 00b74000 fe:00 16787949 /home/infinity0/giac/src/.libs/libgiac.so.0.0.0
ffffb7f7e000-ffffb7fa5000 r--p 00b73000 fe:00 16787949 /home/infinity0/giac/src/.libs/libgiac.so.0.0.0
ffffb7fa5000-ffffb7fb0000 rw-p 00b9a000 fe:00 16787949 /home/infinity0/giac/src/.libs/libgiac.so.0.0.0
ffffb7fb0000-ffffb7fd2000 rw-p 00000000 00:00 0
ffffb7fd2000-ffffb7fee000 r-xp 00000000 fe:00 17568572 /lib/aarch64-linux-gnu/ld-2.24.so
ffffb7fef000-ffffb7ff1000 rw-p 00000000 00:00 0
ffffb7ff9000-ffffb7ffc000 rw-p 00000000 00:00 0
ffffb7ffc000-ffffb7ffd000 r--p 00000000 00:00 0 [vvar]
ffffb7ffd000-ffffb7ffe000 r-xp 00000000 00:00 0 [vdso]
ffffb7ffe000-ffffb7fff000 r--p 0001c000 fe:00 17568572 /lib/aarch64-linux-gnu/ld-2.24.so
ffffb7fff000-ffffb8001000 rw-p 0001d000 fe:00 17568572 /lib/aarch64-linux-gnu/ld-2.24.so
fffffffdf000-1000000000000 rw-p 00000000 00:00 0 [stack]
Code : Tout sélectionner
27c27
< #define x86_64 1
---
> #define x86_64
Code : Tout sélectionner
--- a/check/TP16-sol.cas.out1
+++ b/check/TP16-sol.cas.out1
@@ -48,7 +48,7 @@
"Done",
[-sqrt(13)-1,sqrt(13)-1,4],
y^2+6*sqrt(13)+18,y^2-6*sqrt(13)+18,y^2,
--sqrt(6)*I*sqrt(sqrt(13)+3),sqrt(6)*I*sqrt(sqrt(13)+3),-sqrt(6)*sqrt(sqrt(13)-3),sqrt(6)*sqrt(sqrt(13)-3),0,
+sqrt(6)*I*sqrt(sqrt(13)+3),-sqrt(6)*I*sqrt(sqrt(13)+3),-sqrt(6)*sqrt(sqrt(13)-3),sqrt(6)*sqrt(sqrt(13)-3),0,
"No such variable u",
x^2+1/4*y^2+1/9*z^2-1,
x^2+y^2+z^2-u,
Code : Tout sélectionner
#! /bin/sh
unset LANG
../src/icas TP16-sol.cas > TP16.tst
diff TP16.tst TP16-sol.cas.out1 || diff TP16.tst TP16-sol.cas.out2