sfcgal fails to build from source with g++-6 on i386
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gcc-6 (Ubuntu) |
New
|
Undecided
|
Unassigned | ||
sfcgal (Ubuntu) |
Incomplete
|
Undecided
|
Unassigned |
Bug Description
https:/
fails with
Leaving test module "UnitTestSFCGAL"; testing time: 29181162us
*** No errors detected
*** Error in `/«PKGBUILDDIR»
======= Backtrace: =========
/lib/i386-
/lib/i386-
/lib/i386-
/usr/lib/
/usr/lib/
/usr/lib/
/lib/i386-
/lib/i386-
/lib/i386-
/«PKGBUILDDIR»
if one builds with Debug mode, and -O0 the build fails to links due to incorrect declaration & initialization of the static const class member. (Or move initialisation to individual .cpp files and keep only declaration in the header to make sure INVALID_INDEX can be used as both lvalue and rvalue).
A trivial patch can fix that:
--- sfcgal-
+++ sfcgal-
@@ -44,7 +44,7 @@ public:
typedef size_t VertexIndex;
typedef size_t FaceIndex;
typedef std::map< Coordinate, VertexIndex > CoordinateMap ;
- static const size_t INVALID_INDEX = size_t( -1 ) ; // would use std::numeric_
+ enum integrals { INVALID_INDEX = size_t( -1 ) } ;
// an edge is inserted with vtx ordered by the first polygon we treat,
// we search the edge with reverse ordered vtx indexes.
// as a result, an inconsistent orientation between polygons can be spotted by
With that compilation succeeds, and test-suite also passes.
So it does indicate that enabling optimisations results in test-suite failure. Running that under a debuger, only shows that boost-unit-test hits a (double?) free upon tear-down / after exiting a testsuite.
/tmp/sfcgal-
Leaving test module "UnitTestSFCGAL"; testing time: 11412502us
*** No errors detected
*** Error in `/tmp/sfcgal-
======= Backtrace: =========
/lib/i386-
/lib/i386-
/lib/i386-
/usr/lib/
/usr/lib/
/usr/lib/
/lib/i386-
/lib/i386-
/lib/i386-
/tmp/sfcgal-
======= Memory map: ========
56555000-56900000 r-xp 00000000 00:28 40093 /tmp/sfcgal-
56901000-56907000 r--p 003ab000 00:28 40093 /tmp/sfcgal-
56907000-56908000 rw-p 003b1000 00:28 40093 /tmp/sfcgal-
56908000-56994000 rw-p 00000000 00:00 0 [heap]
f6700000-f6721000 rw-p 00000000 00:00 0
f6721000-f6800000 ---p 00000000 00:00 0
f68bd000-f68d0000 rw-p 00000000 00:00 0
f68d0000-f68d5000 r-xp 00000000 00:28 2413 /usr/lib/
f68d5000-f68d6000 r--p 00004000 00:28 2413 /usr/lib/
f68d6000-f68d7000 rw-p 00005000 00:28 2413 /usr/lib/
f68d7000-f68d9000 r-xp 00000000 00:28 2400 /usr/lib/
f68d9000-f68da000 r--p 00001000 00:28 2400 /usr/lib/
f68da000-f68db000 rw-p 00002000 00:28 2400 /usr/lib/
f68db000-f68dc000 rw-p 00000000 00:00 0
f68dc000-f68ec000 r-xp 00000000 00:28 9034 /usr/lib/
f68ec000-f68ed000 r--p 0000f000 00:28 9034 /usr/lib/
f68ed000-f68ee000 rw-p 00010000 00:28 9034 /usr/lib/
f68ee000-f68f3000 r-xp 00000000 00:28 7635 /usr/lib/
f68f3000-f68f4000 r--p 00004000 00:28 7635 /usr/lib/
f68f4000-f68f5000 rw-p 00005000 00:28 7635 /usr/lib/
f68f5000-f6919000 r-xp 00000000 00:28 2426 /usr/lib/
f6919000-f691a000 r--p 00023000 00:28 2426 /usr/lib/
f691a000-f691b000 rw-p 00024000 00:28 2426 /usr/lib/
f691b000-f691f000 r-xp 00000000 00:28 11367 /usr/lib/
f691f000-f6920000 r--p 00003000 00:28 11367 /usr/lib/
f6920000-f6921000 rw-p 00004000 00:28 11367 /usr/lib/
f6921000-f6939000 r-xp 00000000 00:28 11393 /usr/lib/
f6939000-f693a000 ---p 00018000 00:28 11393 /usr/lib/
f693a000-f693b000 r--p 00018000 00:28 11393 /usr/lib/
f693b000-f693c000 rw-p 00019000 00:28 11393 /usr/lib/
f693c000-f693d000 rw-p 00000000 00:00 0
f693d000-f6a83000 r-xp 00000000 00:28 2700 /usr/lib/
f6a83000-f6a84000 ---p 00146000 00:28 2700 /usr/lib/
f6a84000-f6a85000 r--p 00146000 00:28 2700 /usr/lib/
f6a85000-f6a87000 rw-p 00147000 00:28 2700 /usr/lib/
f6a87000-f6a88000 rw-p 00000000 00:00 0
f6a88000-f6a89000 r-xp 00000000 00:28 11352 /usr/lib/
f6a89000-f6a8a000 r--p 00000000 00:28 11352 /usr/lib/
f6a8a000-f6a8b000 rw-p 00001000 00:28 11352 /usr/lib/
f6a8b000-f6a90000 r-xp 00000000 00:28 11430 /usr/lib/
f6a90000-f6a91000 r--p 00004000 00:28 11430 /usr/lib/
f6a91000-f6a92000 rw-p 00005000 00:28 11430 /usr/lib/
f6a92000-f6a94000 r-xp 00000000 00:28 7598 /usr/lib/
f6a94000-f6a95000 r--p 00001000 00:28 7598 /usr/lib/
f6a95000-f6a96000 rw-p 00002000 00:28 7598 /usr/lib/
f6a96000-f6aa9000 r-xp 00000000 00:28 2717 /usr/lib/
f6aa9000-f6aaa000 r--p 00012000 00:28 2717 /usr/lib/
f6aaa000-f6aab000 rw-p 00013000 00:28 2717 /usr/lib/
f6aab000-f6aac000 rw-p 00000000 00:00 0
f6aac000-f6abf000 r-xp 00000000 00:28 11336 /usr/lib/
f6abf000-f6ac0000 ---p 00013000 00:28 11336 /usr/lib/
f6ac0000-f6ac2000 r--p 00013000 00:28 11336 /usr/lib/
f6ac2000-f6ac8000 rwxp 00015000 00:28 11336 /usr/lib/
f6ac8000-f6ac9000 r-xp 00000000 00:28 7609 /usr/lib/
f6ac9000-f6aca000 r--p 00000000 00:28 7609 /usr/lib/
f6aca000-f6acb000 rw-p 00001000 00:28 7609 /usr/lib/
f6acb000-f6ad0000 r-xp 00000000 00:28 11419 /usr/lib/
f6ad0000-f6ad1000 ---p 00005000 00:28 11419 /usr/lib/
f6ad1000-f6ad2000 r--p 00005000 00:28 11419 /usr/lib/
f6ad2000-f6ad3000 rw-p 00006000 00:28 11419 /usr/lib/
f6ad3000-f6ad5000 r-xp 00000000 00:28 11406 /usr/lib/
f6ad5000-f6ad6000 r--p 00001000 00:28 11406 /usr/lib/
f6ad6000-f6ad7000 rw-p 00002000 00:28 11406 /usr/lib/
f6ad7000-f6ad9000 r-xp 00000000 00:28 11380 /usr/lib/
f6ad9000-f6ada000 r--p 00001000 00:28 11380 /usr/lib/
f6ada000-f6adb000 rw-p 00002000 00:28 11380 /usr/lib/
f6adb000-f6adc000 rw-p 00000000 00:00 0
f6adc000-f6b02000 r-xp 00000000 00:28 1361 /lib/i386-
f6b02000-f6b03000 ---p 00026000 00:28 1361 /lib/i386-
f6b03000-f6b05000 r--p 00026000 00:28 1361 /lib/i386-
f6b05000-f6b06000 rw-p 00028000 00:28 1361 /lib/i386-
f6b06000-f6b70000 r-xp 00000000 00:28 11543 /usr/lib/
f6b70000-f6b72000 r--p 00069000 00:28 11543 /usr/lib/
f6b72000-f6b77000 rwxp 0006b000 00:28 11543 /usr/lib/
f6b77000-f6b7e000 r-xp 00000000 08:22 37753073 /lib/i386-
f6b7e000-f6b7f000 r--p 00006000 08:22 37753073 /lib/i386-
f6b7f000-f6b80000 rw-p 00007000 08:22 37753073 /lib/i386-
f6b80000-f6b99000 r-xp 00000000 08:22 37753431 /lib/i386-
f6b99000-f6b9a000 r--p 00018000 08:22 37753431 /lib/i386-
f6b9a000-f6b9b000 rw-p 00019000 08:22 37753431 /lib/i386-
f6b9b000-f6d61000 r-xp 00000000 00:28 34710 /usr/lib/
f6d61000-f6d6a000 r--p 001c5000 00:28 34710 /usr/lib/
f6d6a000-f6d6b000 rw-p 001ce000 00:28 34710 /usr/lib/
f6d6b000-f6d6c000 rw-p 00000000 00:00 0
f6d6c000-f6d85000 r-xp 00000000 08:22 37753071 /lib/i386-
f6d85000-f6d86000 r--p 00018000 08:22 37753071 /lib/i386-
f6d86000-f6d87000 rw-p 00019000 08:22 37753071 /lib/i386-
f6d87000-f6d89000 rw-p 00000000 00:00 0
f6d89000-f6d8f000 r-xp 00000000 00:28 34052 /usr/lib/
f6d8f000-f6d90000 ---p 00006000 00:28 34052 /usr/lib/
f6d90000-f6d91000 r--p 00006000 00:28 34052 /usr/lib/
f6d91000-f6d92000 rw-p 00007000 00:28 34052 /usr/lib/
f6d92000-f708d000 r-xp 00000000 00:28 34697 /usr/lib/
f708d000-f708e000 ---p 002fb000 00:28 34697 /usr/lib/
f708e000-f7097000 r--p 002fb000 00:28 34697 /usr/lib/
f7097000-f7098000 rw-p 00304000 00:28 34697 /usr/lib/
f7098000-f71a4000 r-xp 00000000 00:28 34699 /usr/lib/
f71a4000-f71a8000 r--p 0010b000 00:28 34699 /usr/lib/
f71a8000-f71a9000 rw-p 0010f000 00:28 34699 /usr/lib/
f71a9000-f7224000 r-xp 00000000 00:28 11390 /usr/lib/
f7224000-f7225000 ---p 0007b000 00:28 11390 /usr/lib/
f7225000-f7226000 r--p 0007b000 00:28 11390 /usr/lib/
f7226000-f7227000 rw-p 0007c000 00:28 11390 /usr/lib/
f7227000-f7228000 rw-p 00000000 00:00 0
f7228000-f722b000 r-xp 00000000 08:22 37753060 /lib/i386-
f722b000-f722c000 r--p 00002000 08:22 37753060 /lib/i386-
f722c000-f722d000 rw-p 00003000 08:22 37753060 /lib/i386-
f722d000-f73dc000 r-xp 00000000 08:22 37753055 /lib/i386-
f73dc000-f73dd000 ---p 001af000 08:22 37753055 /lib/i386-
f73dd000-f73df000 r--p 001af000 08:22 37753055 /lib/i386-
f73df000-f73e0000 rw-p 001b1000 08:22 37753055 /lib/i386-
f73e0000-f73e3000 rw-p 00000000 00:00 0
f73e3000-f73ff000 r-xp 00000000 00:28 2416 /lib/i386-
f73ff000-f7400000 r--p 0001b000 00:28 2416 /lib/i386-
f7400000-f7401000 rw-p 0001c000 00:28 2416 /lib/i386-
f7401000-f7454000 r-xp 00000000 08:22 37753061 /lib/i386-
f7454000-f7455000 r--p 00052000 08:22 37753061 /lib/i386-
f7455000-f7456000 rw-p 00053000 08:22 37753061 /lib/i386-
f7456000-f75cc000 r-xp 00000000 00:28 2995 /usr/lib/
f75cc000-f75d2000 r--p 00175000 00:28 2995 /usr/lib/
f75d2000-f75d3000 rw-p 0017b000 00:28 2995 /usr/lib/
f75d3000-f75d7000 rw-p 00000000 00:00 0
f75d7000-f7661000 r-xp 00000000 08:22 37754829 /usr/lib/
f7661000-f7662000 r--p 00089000 08:22 37754829 /usr/lib/
f7662000-f7663000 rw-p 0008a000 08:22 37754829 /usr/lib/
f7663000-f76ce000 r-xp 00000000 08:22 37754902 /usr/lib/
f76ce000-f76cf000 r--p 0006a000 08:22 37754902 /usr/lib/
f76cf000-f76d0000 rw-p 0006b000 08:22 37754902 /usr/lib/
f76d0000-f76f3000 r-xp 00000000 00:28 11385 /usr/lib/
f76f3000-f76f4000 r--p 00022000 00:28 11385 /usr/lib/
f76f4000-f76f5000 rw-p 00023000 00:28 11385 /usr/lib/
f76f5000-f7734000 r-xp 00000000 00:28 26248 /usr/lib/
f7734000-f7736000 r--p 0003e000 00:28 26248 /usr/lib/
f7736000-f7737000 rw-p 00040000 00:28 26248 /usr/lib/
f7737000-f77e1000 r-xp 00000000 00:28 11416 /usr/lib/
f77e1000-f77e2000 ---p 000aa000 00:28 11416 /usr/lib/
f77e2000-f77e4000 r--p 000aa000 00:28 11416 /usr/lib/
f77e4000-f77e5000 rw-p 000ac000 00:28 11416 /usr/lib/
f77e5000-f77e7000 rw-p 00000000 00:00 0
f77e7000-f7fb2000 r-xp 00000000 00:28 39955 /tmp/sfcgal-
f7fb2000-f7fc0000 r--p 007ca000 00:28 39955 /tmp/sfcgal-
f7fc0000-f7fc1000 rw-p 007d8000 00:28 39955 /tmp/sfcgal-
f7fc1000-f7fc2000 rw-p 00000000 00:00 0
f7fc2000-f7fc3000 r-xp 00000000 08:22 37754648 /usr/lib/
f7fc3000-f7fc4000 r--p 00000000 08:22 37754648 /usr/lib/
f7fc4000-f7fc5000 rw-p 00001000 08:22 37754648 /usr/lib/
f7fd3000-f7fd6000 rw-p 00000000 00:00 0
f7fd6000-f7fd8000 r--p 00000000 00:00 0 [vvar]
f7fd8000-f7fd9000 r-xp 00000000 00:00 0 [vdso]
f7fd9000-f7ffb000 r-xp 00000000 08:22 37753048 /lib/i386-
f7ffb000-f7ffc000 rw-p 00000000 00:00 0
f7ffc000-f7ffd000 r--p 00022000 08:22 37753048 /lib/i386-
f7ffd000-f7ffe000 rw-p 00023000 08:22 37753048 /lib/i386-
Program received signal SIGABRT, Aborted.
0xf7fd8be9 in __kernel_vsyscall ()
(gdb) bt full
#0 0xf7fd8be9 in __kernel_vsyscall ()
No symbol table info available.
#1 0xf7258e49 in __GI_raise (sig=6) at ../sysdeps/
resultvar = <optimized out>
resultvar = <optimized out>
pid = 19907
selftid = 19907
#2 0xf725a3a7 in __GI_abort () at abort.c:89
save_stage = 2
act = {__sigaction_
sigs = {__val = {32, 0 <repeats 31 times>}}
#3 0xf72942dc in __libc_message (do_abort=2, fmt=0xf738cab4 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/
ap = <optimized out>
fd = 4
on_2 = <optimized out>
list = <optimized out>
nlist = <optimized out>
cp = <optimized out>
written = <optimized out>
#4 0xf729a227 in malloc_printerr (action=<optimized out>, str=0xf738cb8c "free(): corrupted unsorted chunks", ptr=<optimized out>, ar_ptr=0xf73df780 <main_arena>) at malloc.c:5004
buf = "5695daa0"
cp = <optimized out>
ar_ptr = 0xf73df780 <main_arena>
ptr = <optimized out>
str = 0xf738cb8c "free(): corrupted unsorted chunks"
action = <optimized out>
#5 0xf729aae1 in _int_free (av=0xf73df780 <main_arena>, p=<optimized out>, have_lock=0) at malloc.c:3865
size = <optimized out>
fb = <optimized out>
nextchunk = <optimized out>
nextsize = <optimized out>
nextinuse = <optimized out>
prevsize = <optimized out>
bck = <optimized out>
fwd = <optimized out>
errstr = <optimized out>
locked = <optimized out>
__func__ = "_int_free"
#6 0xf74c6518 in operator delete(void*) () from /usr/lib/
No symbol table info available.
#7 0xf778536b in __gnu_cxx:
at /usr/include/
No locals.
#8 std::allocator_
at /usr/include/
No locals.
#9 std::_Rb_
at /usr/include/
No locals.
#10 std::_Rb_
at /usr/include/
No locals.
#11 std::_Rb_
at /usr/include/
No locals.
#12 std::_Rb_
locator<
at /usr/include/
No locals.
#13 std::_Rb_
at /usr/include/
No locals.
#14 std::_Rb_
at /usr/include/
No locals.
#15 std::_Rb_
at /usr/include/
No locals.
#16 std::_Rb_
at /usr/include/
No locals.
#17 std::_Rb_
at /usr/include/
No locals.
#18 0xf7784bcc in std::_Rb_
at /usr/include/
No locals.
#19 std::_Rb_
at /usr/include/
No locals.
#20 std::map<unsigned long, boost::
this=0xf77e5c38 <boost:
No locals.
#21 boost::
at ./boost/
No locals.
#22 0xf725b933 in __run_exit_handlers (status=0, listp=0xf73df3dc <__exit_funcs>, run_list_
atfct = <optimized out>
onfct = <optimized out>
cxafct = <optimized out>
#23 0xf725b98f in __GI_exit (status=0) at exit.c:104
No locals.
#24 0xf7245603 in __libc_start_main (main=0x566499e0 <main(int, char**)>, argc=1, argv=0xffffd624, init=0x56875a50 <__libc_csu_init>, fini=0x56875ab0 <__libc_csu_fini>, rtld_fini=
stack_
result = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -146935808, -146935808, 0, -1202387646, 257248083}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0xffffd620, 0xf7fd9000}, data = {prev = 0x0,
#25 0x56649ac2 in _start ()
No symbol table info available.
I am confused as to what is going on.
Changed in sfcgal (Ubuntu): | |
status: | Fix Released → Triaged |
==2697== Warning: client switching stacks? SP change: 0x600f280 --> 0xfec0a100 e=121655680 or greater algorithm_ IntersectionTes t/testFileInter sectionTest" : memory access violation at address: 0xbbb1d800: no mapping at fault address 1.3.0/test/ unit/SFCGAL/ algorithm/ IntersectionTes t.cpp(227) : last checkpoint 1.3.0/test/ unit/SFCGAL/ algorithm/ IntersectionTes t.cpp(67) : Leaving test case "testFileInters ectionTest" ; testing time: 69400776us 1.3.0/test/ unit/SFCGAL/ algorithm/ IntersectionTes t.cpp(65) : Leaving test suite "SFCGAL_ algorithm_ IntersectionTes t"; testing time: 69402508us
==2697== to suppress, use: --max-stackfram
unknown location(0): fatal error: in "SFCGAL_
/tmp/sfcgal-
Test is aborted
/tmp/sfcgal-
Test is aborted
/tmp/sfcgal-
Test is aborted
Leaving test module "UnitTestSFCGAL"; testing time: 93720212us
Probably things are asynchronous and going out of scope =( *sigh*