Build failure on ia64
| Project: | GNU Smalltalk |
| Component: | VM |
| Category: | bug |
| Priority: | normal |
| Assigned: | Unassigned |
| Status: | fixed |
Hello,
please find at [0] the test suite failure on a Debian GNU/Linux ia64 box.
I can provide similar files for the arm[1] architecture.
Regards,
Thomas
[0] http://thomas.g.girard.free.fr/gst/gst_ia64_failure.tar.gz
[1] http://buildd.debian.org/fetch.cgi?pkg=gnu-smalltalk;ver=2.3.6-1;arch=ar...
Updates
Would you please: 1) attach the 008/testsuite.log file for ARM to this bug report; 2) check if 2.95e exhibits the same behavior on either ia64 or ARM?
If it does not, I will close this as wontfix (which means you should zap those two tests, floatmath.st and random-bench.st, from the Debian builds).
Thanks!
Unfortunately gst 2.95e SIGSEGV on ia64 while launching the testsuite on AnsiLoad.st.
(I have tried compiling it with embedded libffi4 and libsigsegv, then Debian versions; I get the same error)
Here's the stacktrace:
Starting program: /home/tgg/smalltalk-2.95e/gst -SI /home/tgg/smalltalk-2.95e/tests/gst.im AnsiLoad.st
Program received signal SIGSEGV, Segmentation fault.
_gst_dictionary_add (dictionaryOOP=0x2000000000ba5030,
associationOOP=0x2000000000baf1d0) at dict.c:1845
1845 SET_ASSOCIATION_VALUE (associationOOP, value);
(gdb) bt full
#0 _gst_dictionary_add (dictionaryOOP=0x2000000000ba5030,
associationOOP=0x2000000000baf1d0) at dict.c:1845
index = <value optimized out>
dictionary = (gst_object) 0x200000000065f018
dict = (gst_dictionary) 0x200000000065f018
#1 0x40000000000245d0 in add_smalltalk (
globalName=0x400000000012fa38 "UserFileBasePath",
globalValue=0x2000000000bab610) at dict.c:1051
No locals.
#2 0x4000000000024cf0 in init_runtime_objects () at dict.c:1060
No locals.
#3 0x400000000002cd00 in _gst_init_dictionary_on_image_load (
prim_table_matches=true) at dict.c:1301
No locals.
#4 0x40000000000639b0 in _gst_load_from_file (fileName=<value optimized out>)
at save.c:503
imageFd = 6
#5 0x400000000000b3c0 in _gst_initialize (
kernel_dir=0x600000000004c070 "/home/tgg/smalltalk-2.95e/tests/kernel",
image_file=0x60000ffffe04bbef "gst.im", flags=0) at files.c:482
p = <value optimized out>
currentDirectory = <value optimized out>
home = <value optimized out>
str = 0x2000000000850010 "\t"
abortOnFailure = true
rebuild_image_flags = 0
#6 0x4000000000009280 in main (argc=,
argv=0x60000ffffe04b9d8) at main.c:369
result = <value optimized out>
file = <value optimized out>
It's not clear for me what's causing this, the real SIGSEGV might be hidden by libsigsegv mechanism.
Regards,
Thomas
| Title: | Test suite failure on ia64 | » Test suite failure on ia64 (and arm) |
Here's the 008/testsuite.log floating point failure on arm, using GNU Smalltalk 2.95f without GMP:
# -*- compilation -*-
8. testsuite.at:34: testing ...
{ (cd /home/tgg/smalltalk-2.95f/tests && gst -I /home/tgg/smalltalk-2.95f/gst.im -r floatmath.st 2>&1); echo exit 0 > retcode; } | tr -d '\r' | tee stdout; . retcode
./testsuite.at:34: { (cd $abs_srcdir && gst $image_path -r floatmath.st 2>&1); echo exit $? > retcode; } | tr -d '\r' | tee stdout; . retcode
--- expout 2007-11-28 21:08:32.000000000 +0000
+++ /home/tgg/smalltalk-2.95f/tests/testsuite.dir/at-stdout 2007-11-28 21:11:04.000000000 +0000
@@ -204,60 +204,60 @@
returned value is Array new: 2 "<0>"
Execution begins...
-true->10000000000000000.0
-returned value is 1.00000d+16
+ true->1.515286054759102d-39
+returned value is 1.51529d-39
Execution begins...
true->1.0e16
returned value is 1.00000e+16
Execution begins...
-true->12345000000000000.0
-returned value is 1.23450d+16
+ true->3.006489402863112d-126
+returned value is 3.00649d-126
Execution begins...
true->1.2345e16
returned value is 1.23450e+16
Execution begins...
-true->1.25
-returned value is 1.25000
+ true->5.301103987073279d-315
+returned value is 5.30110d-315
Execution begins...
-true->10.0
-returned value is 10.0000
+ true->5.316645948432888d-315
+returned value is 5.31665d-315
Execution begins...
-true->17.7674749
-returned value is 17.7675
+ true->7.589651990989644d-19
+returned value is 7.58965d-19
Execution begins...
-true->0.12345
-returned value is 0.123450
+ true->5.023618302256151d80
+returned value is 5.02362d+80
Execution begins...
-true->0.0000000012345
-returned value is 1.23450d-09
+ true->2.651121397168246d228
+returned value is 2.65112d+228
Execution begins...
true->1.2345e-9
returned value is 1.23450e-09
Execution begins...
-true->0.83205029433784
-returned value is 0.832050
+ true->-1.606067126442053d233
+returned value is -1.60607d+233
Execution begins...
-true->0.832050294337844
-returned value is 0.832050
+ true->-1.606101239388417d233
+returned value is -1.60610d+233
Execution begins...
-true->0.55470019622523
-returned value is 0.554700
+ true->-2.081522168527702d-153
+returned value is -2.08152d-153
Execution begins...
-true->0.554700196225229
-returned value is 0.554700
+ true->-2.081511926055385d-153
+returned value is -2.08151d-153
Execution begins...
true
8. testsuite.at:34: 8. floatmath.st (testsuite.at:34): FAILED (testsuite.at:34)
The ARM failure should be fixed with the current devo. I don't know about ia64 but I don't think so.
| Title: | Test suite failure on ia64 (and arm) | » Build failure on ia64 |
gst 2.95h still fail to build on ia64.
Here's a detailed backtrace, compiled with -O0:
- 0 0x20000000000e2670 in _gst_dictionary_add (
dictionaryOOP=0x2000000000ed9030, associationOOP=0x2000000000ee3200)
at dict.c:1845
index = 417
association = (gst_association) 0x2000000000b68030
dictionary = (gst_object) 0x2000000000972f08
dict = (gst_dictionary) 0x2000000000972f08
value = (OOP) 0x2000000000edf410
incPtr = 0- 1 0x20000000000dbde0 in add_smalltalk (
globalName=0x20000000002d6b10 "UserFileBasePath", globalValue=0x2000000000edf410) at dict.c:1051
No locals.
- 2 0x20000000000dbfb0 in init_runtime_objects () at dict.c:1060
No locals.
- 3 0x20000000000def30 in _gst_init_dictionary_on_image_load (
prim_table_matches=true) at dict.c:1301
ci = (const class_definition *) 0x200000000030b048- 4 0x20000000001784b0 in load_snapshot (imageFd=3) at save.c:505
header = {dummy = "#! /usr/bin/gst -aI\n", '\0' ,
signature = "GSTIm", unused = 0 '\0', flags = 2 '\002', version = 155496,
oopTableSize = 50918, edenSpaceSize = 3145728, survSpaceSize = 131072,
oldSpaceSize = 4194304, big_object_threshold = 4096,
grow_threshold_percent = 80, space_grow_rate = 30, num_free_oops = 15665,
ot_base = 2305843009229258752, prim_table_md5 = {6894763595054953207,
7097622193709478444}}
prim_table_matches = 1
base = 0x20000000008ac000 <Address 0x20000000008ac000 out of bounds>
end = 0x2000000000b65ab8 <Address 0x2000000000b65ab8 out of bounds>- 5 0x2000000000178010 in _gst_load_from_file (
fileName=0x6000000000009360 "/home/tgg/smalltalk-2.95h/tests/gst.im")
at save.c:451
loaded = false
imageFd = 3- 6 0x200000000008e970 in _gst_initialize (
kernel_dir=0x6000000000009330 "/home/tgg/smalltalk-2.95h/tests/kernel",
image_file=0x60000fffffd53947 "gst.im", flags=0) at files.c:482
currentDirectory = 0x6000000000008010 "/home/tgg/smalltalk-2.95h/tests"
home = 0x60000fffffd53f4d "/home/tgg"
str = 0x6000000000009360 "/home/tgg/smalltalk-2.95h/tests/gst.im"
loadBinary = true
abortOnFailure = true
rebuild_image_flags = 0- 7 0x200000000008b7a0 in gst_initialize (kernel_dir=0x0,
image_file=0x60000fffffd53927 "/home/tgg/smalltalk-2.95h/tests/gst.im", flags=0) at gstpub.c:134
No locals.
- 8 0x4000000000002c40 in main (argc=4, argv=0x60000fffffd536e8) at main.c:372
result = 325352
file = (struct loaded_file *) 0x1So, if I understand correctly, the gst.im file produced during "make" (not "make check") just cannot be loaded; if this is the case the bug is in saving the image. Can you send it to me? I can try to understand the problem on an x86-64 machine.
Hm, no, you're right that this SIGSEGV is meant to be trapped by libsigsegv. It is not the cause of the crash. You can try this instead
b abort handle SIGSEGV noprint run
and post the new backtrace. Sending the gst.im file to me is nevertheless a good idea (if you have two, one in smalltalk-2.95h and one in smalltalk-2.95h/tests, send both). Thanks.
Images of ia64 are available here.
It's indeed very likely an image saving problem: the crash occurs on the image that was saved in tests/ after SUnit was loaded, and a snapshot is taken. Besides, if I run make check, some test pass anyway.
I was not able to generate another backtrace: the abort breakpoint does not seem to be hit, and the program exits. (By the way, I've just seen you provide nice macros in .gdbinit. I will try to use them next time.)
Here's the excerpt of the build log when it fails on ia64:
Making check in tests make[1]: Entering directory `/home/tgg/smalltalk-2.95h/tests' make gst.im make[2]: Entering directory `/home/tgg/smalltalk-2.95h/tests' echo "PackageLoader fileInPackage: #SUnit. ObjectMemory snapshot: 'gst.im'" | ./gst --image=../gst.im - "Global garbage collection... done" Loading package SUnit "Global garbage collection... done" cd . && /home/tgg/smalltalk-2.95h/tests/gst -S --image=/home/tgg/smalltalk-2.95h/tests/gst.im AnsiLoad.st /bin/sh: line 1: 10387 Segmentation fault (core dumped) /home/tgg/smalltalk-2.95h/tests/gst -S --image=/home/tgg/smalltalk-2.95h/tests/gst.im AnsiLoad.st make[2]: *** [gst.im] Error 139 make[2]: Leaving directory `/home/tgg/smalltalk-2.95h/tests' make[1]: *** [check-am] Error 2 make[1]: Leaving directory `/home/tgg/smalltalk-2.95h/tests' make: *** [check-recursive] Error 1
If I run make check again, I eventually get:
## ------------------------------- ## ## GNU Smalltalk 2.95h test suite. ## ## ------------------------------- ## Regression tests. 1: arrays.st ok 2: classes.st ok 3: blocks.st ok 4: sets.st ok 5: processes.st ok 6: exceptions.st ok 7: intmath.st ok 8: floatmath.st FAILED (testsuite.at:34) 9: dates.st ok 10: objects.st ok 11: strings.st ok 12: chars.st ok 13: objdump.st ok 14: delays.st ok 15: geometry.st ok 16: cobjects.st ok 17: compiler.st ok 18: fileext.st ok 19: mutate.st ok 20: untrusted.st ok 21: getopt.st ok 22: quit.st ok Other simple tests. 23: ackermann.st ok 24: ary3.st ok 25: except.st ok 26: fibo.st ok 27: hash.st ok 28: hash2.st ok 29: heapsort.st ok 30: lists.st ok 31: lists1.st ok 32: lists2.st ok 33: matrix.st ok 34: methcall.st ok 35: nestedloop.st ok 36: objinst.st ok 37: prodcons.st ok 38: random-bench.st FAILED (testsuite.at:66) 39: sieve.st ok 40: strcat.st ok Basic packages. 41: SUnit ok 42: Parser ok ANSI compliancy tests. 43: ArrayANSITest FAILED (testsuite.at:75) 44: ArrayFactoryANSITest FAILED (testsuite.at:76) 45: BagANSITest FAILED (testsuite.at:77) 46: BagFactoryANSITest FAILED (testsuite.at:78) 47: BooleanANSITest FAILED (testsuite.at:79) 48: ByteArrayANSITest FAILED (testsuite.at:80) 49: ByteArrayFactoryANSITest FAILED (testsuite.at:81) 50: CharacterANSITest FAILED (testsuite.at:82) 51: CharacterFactoryANSITest FAILED (testsuite.at:83) 52: DateAndTimeANSITest FAILED (testsuite.at:84) 53: DateAndTimeFactoryANSITest FAILED (testsuite.at:85) 54: DictionaryANSITest FAILED (testsuite.at:86) 55: DictionaryFactoryANSITest FAILED (testsuite.at:87) 56: DurationANSITest FAILED (testsuite.at:88) 57: DurationFactoryANSITest FAILED (testsuite.at:89) 58: DyadicValuableANSITest FAILED (testsuite.at:90) 59: ErrorANSITest FAILED (testsuite.at:91) 60: ErrorClassANSITest FAILED (testsuite.at:92) 61: ExceptionANSITest FAILED (testsuite.at:93) 62: ExceptionClassANSITest FAILED (testsuite.at:94) 63: ExceptionSetANSITest FAILED (testsuite.at:95) 64: FailedMessageANSITest FAILED (testsuite.at:96) 65: FileStreamFactoryANSITest FAILED (testsuite.at:97) 66: FloatANSITest FAILED (testsuite.at:98) 67: FloatCharacterizationANSITest FAILED (testsuite.at:99) 68: FractionANSITest FAILED (testsuite.at:100) 69: FractionFactoryANSITest FAILED (testsuite.at:101) 70: IdentityDictionaryANSITest FAILED (testsuite.at:102) 71: IdentityDictionaryFactoryANSITest FAILED (testsuite.at:103) 72: IntegerANSITest FAILED (testsuite.at:104) 73: IntervalANSITest FAILED (testsuite.at:105) 74: IntervalFactoryANSITest FAILED (testsuite.at:106) 75: MessageNotUnderstoodANSITest FAILED (testsuite.at:107) 76: MessageNotUnderstoodSelectorANSITest FAILED (testsuite.at:108) 77: MonadicBlockANSITest FAILED (testsuite.at:109) 78: NilANSITest FAILED (testsuite.at:110) 79: NiladicBlockANSITest FAILED (testsuite.at:111) 80: NotificationANSITest FAILED (testsuite.at:112) 81: NotificationClassANSITest FAILED (testsuite.at:113) 82: ObjectANSITest FAILED (testsuite.at:114) 83: ObjectClassANSITest FAILED (testsuite.at:115) 84: OrderedCollectionANSITest FAILED (testsuite.at:116) 85: OrderedCollectionFactoryANSITest FAILED (testsuite.at:117) 86: ReadFileStreamANSITest FAILED (testsuite.at:118) 87: ReadStreamANSITest FAILED (testsuite.at:119) 88: ReadStreamFactoryANSITest FAILED (testsuite.at:120) 89: ReadWriteStreamANSITest FAILED (testsuite.at:121) 90: ReadWriteStreamFactoryANSITest FAILED (testsuite.at:122) 91: ScaledDecimalANSITest FAILED (testsuite.at:123) 92: SelectorANSITest FAILED (testsuite.at:124) 93: SetANSITest FAILED (testsuite.at:125) 94: SetFactoryANSITest FAILED (testsuite.at:126) 95: SortedCollectionANSITest FAILED (testsuite.at:127) 96: SortedCollectionFactoryANSITest FAILED (testsuite.at:128) 97: StringANSITest FAILED (testsuite.at:129) 98: StringFactoryANSITest FAILED (testsuite.at:130) 99: SymbolANSITest FAILED (testsuite.at:131) 100: TranscriptANSITest FAILED (testsuite.at:132) 101: WarningANSITest FAILED (testsuite.at:133) 102: WarningClassANSITest FAILED (testsuite.at:134) 103: WriteFileStreamANSITest FAILED (testsuite.at:135) 104: WriteStreamANSITest FAILED (testsuite.at:136) 105: WriteStreamFactoryANSITest FAILED (testsuite.at:137) 106: ZeroDivideANSITest FAILED (testsuite.at:138) 107: ZeroDivideFactoryANSITest FAILED (testsuite.at:139) Other packages. 108: Complex ok 109: Continuations ok 110: DBD-MySQL skipped (testsuite.at:144) 111: DBD-SQLite ok 112: DebugTools ok 113: DhbNumericalMethods ok 114: Digest ok 115: GDBM ok 116: Iconv ok 117: Sport ok 118: ZLib ok
| Status: | active | » fixed |
fixed in patch-690
