Fix build failure on i386.
As reported by Dimitri John Ledkov in Launchpad Bug #1610076 SFCGAL fails to build with g++-6 on i386 (which is also affecting the GCC-6/ICU 57/Boost 1.61 transitions in Debian):
https://launchpad.net/ubuntu/+source/sfcgal/1.3.0-2build1/+build/10559466
fails with
Leaving test module "UnitTestSFCGAL"; testing time: 29181162us *** No errors detected *** Error in `/«PKGBUILDDIR»/obj-i686-linux-gnu/test/unit/unit-test-SFCGAL': free(): corrupted unsorted chunks: 0xf8ee64b8 *** ======= Backtrace: ========= /lib/i386-linux-gnu/libc.so.6(+0x672d7)[0xf66662d7] /lib/i386-linux-gnu/libc.so.6(+0x6d227)[0xf666c227] /lib/i386-linux-gnu/libc.so.6(+0x6dae1)[0xf666cae1] /usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x18)[0xf6899518] /usr/lib/i386-linux-gnu/libboost_unit_test_framework.so.1.61.0(_ZNSt8_Rb_treeImSt4pairIKmN5boost9unit_test12test_resultsEESt10_Select1stIS5_ESt4lessImESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E+0x135)[0xf6b573a5] /usr/lib/i386-linux-gnu/libboost_unit_test_framework.so.1.61.0(+0x4dbcc)[0xf6b56bcc] /lib/i386-linux-gnu/libc.so.6(+0x2e933)[0xf662d933] /lib/i386-linux-gnu/libc.so.6(+0x2e98f)[0xf662d98f] /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0x103)[0xf6617603] /«PKGBUILDDIR»/obj-i686-linux-gnu/test/unit/unit-test-SFCGAL(+0xf4ad2)[0xf74bfad2]
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-1.3.0.orig/src/algorithm/connection.h +++ sfcgal-1.3.0/src/algorithm/connection.h @@ -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_limits< size_t >::max() if it were constant, or SIZE_MAX if it were easier to find. + 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-1.3.0/test/unit/SFCGAL/triangulate/Triangulate2DZTest.cpp(30): Leaving test suite "SFCGAL_triangulate_Triangulate2DZTest"; testing time: 4408us Leaving test module "UnitTestSFCGAL"; testing time: 11412502us *** No errors detected *** Error in `/tmp/sfcgal-1.3.0/obj-i686-linux-gnu/test/unit/unit-test-SFCGAL': free(): corrupted unsorted chunks: 0x5695daa0 *** ======= Backtrace: ========= /lib/i386-linux-gnu/libc.so.6(+0x672d7)[0xf72942d7] /lib/i386-linux-gnu/libc.so.6(+0x6d227)[0xf729a227] /lib/i386-linux-gnu/libc.so.6(+0x6dae1)[0xf729aae1] /usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x18)[0xf74c6518] /usr/lib/i386-linux-gnu/libboost_unit_test_framework.so.1.61.0(_ZNSt8_Rb_treeImSt4pairIKmN5boost9unit_test12test_resultsEESt10_Select1stIS5_ESt4lessImESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E+0xfb)[0xf778536b] /usr/lib/i386-linux-gnu/libboost_unit_test_framework.so.1.61.0(+0x4dbcc)[0xf7784bcc] /lib/i386-linux-gnu/libc.so.6(+0x2e933)[0xf725b933] /lib/i386-linux-gnu/libc.so.6(+0x2e98f)[0xf725b98f] /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0x103)[0xf7245603] /tmp/sfcgal-1.3.0/obj-i686-linux-gnu/test/unit/unit-test-SFCGAL(+0xf4ac2)[0x56649ac2] ======= Memory map: ======== 56555000-56900000 r-xp 00000000 00:28 40093 /tmp/sfcgal-1.3.0/obj-i686-linux-gnu/test/unit/unit-test-SFCGAL 56901000-56907000 r--p 003ab000 00:28 40093 /tmp/sfcgal-1.3.0/obj-i686-linux-gnu/test/unit/unit-test-SFCGAL 56907000-56908000 rw-p 003b1000 00:28 40093 /tmp/sfcgal-1.3.0/obj-i686-linux-gnu/test/unit/unit-test-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/i386-linux-gnu/libXdmcp.so.6.0.0 f68d5000-f68d6000 r--p 00004000 00:28 2413 /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0 f68d6000-f68d7000 rw-p 00005000 00:28 2413 /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0 f68d7000-f68d9000 r-xp 00000000 00:28 2400 /usr/lib/i386-linux-gnu/libXau.so.6.0.0 f68d9000-f68da000 r--p 00001000 00:28 2400 /usr/lib/i386-linux-gnu/libXau.so.6.0.0 f68da000-f68db000 rw-p 00002000 00:28 2400 /usr/lib/i386-linux-gnu/libXau.so.6.0.0 f68db000-f68dc000 rw-p 00000000 00:00 0 f68dc000-f68ec000 r-xp 00000000 00:28 9034 /usr/lib/i386-linux-gnu/libdrm.so.2.4.0 f68ec000-f68ed000 r--p 0000f000 00:28 9034 /usr/lib/i386-linux-gnu/libdrm.so.2.4.0 f68ed000-f68ee000 rw-p 00010000 00:28 9034 /usr/lib/i386-linux-gnu/libdrm.so.2.4.0 f68ee000-f68f3000 r-xp 00000000 00:28 7635 /usr/lib/i386-linux-gnu/libXxf86vm.so.1.0.0 f68f3000-f68f4000 r--p 00004000 00:28 7635 /usr/lib/i386-linux-gnu/libXxf86vm.so.1.0.0 f68f4000-f68f5000 rw-p 00005000 00:28 7635 /usr/lib/i386-linux-gnu/libXxf86vm.so.1.0.0 f68f5000-f6919000 r-xp 00000000 00:28 2426 /usr/lib/i386-linux-gnu/libxcb.so.1.1.0 f6919000-f691a000 r--p 00023000 00:28 2426 /usr/lib/i386-linux-gnu/libxcb.so.1.1.0 f691a000-f691b000 rw-p 00024000 00:28 2426 /usr/lib/i386-linux-gnu/libxcb.so.1.1.0 f691b000-f691f000 r-xp 00000000 00:28 11367 /usr/lib/i386-linux-gnu/libxcb-dri2.so.0.0.0 f691f000-f6920000 r--p 00003000 00:28 11367 /usr/lib/i386-linux-gnu/libxcb-dri2.so.0.0.0 f6920000-f6921000 rw-p 00004000 00:28 11367 /usr/lib/i386-linux-gnu/libxcb-dri2.so.0.0.0 f6921000-f6939000 r-xp 00000000 00:28 11393 /usr/lib/i386-linux-gnu/libxcb-glx.so.0.0.0 f6939000-f693a000 ---p 00018000 00:28 11393 /usr/lib/i386-linux-gnu/libxcb-glx.so.0.0.0 f693a000-f693b000 r--p 00018000 00:28 11393 /usr/lib/i386-linux-gnu/libxcb-glx.so.0.0.0 f693b000-f693c000 rw-p 00019000 00:28 11393 /usr/lib/i386-linux-gnu/libxcb-glx.so.0.0.0 f693c000-f693d000 rw-p 00000000 00:00 0 f693d000-f6a83000 r-xp 00000000 00:28 2700 /usr/lib/i386-linux-gnu/libX11.so.6.3.0 f6a83000-f6a84000 ---p 00146000 00:28 2700 /usr/lib/i386-linux-gnu/libX11.so.6.3.0 f6a84000-f6a85000 r--p 00146000 00:28 2700 /usr/lib/i386-linux-gnu/libX11.so.6.3.0 f6a85000-f6a87000 rw-p 00147000 00:28 2700 /usr/lib/i386-linux-gnu/libX11.so.6.3.0 f6a87000-f6a88000 rw-p 00000000 00:00 0 f6a88000-f6a89000 r-xp 00000000 00:28 11352 /usr/lib/i386-linux-gnu/libX11-xcb.so.1.0.0 f6a89000-f6a8a000 r--p 00000000 00:28 11352 /usr/lib/i386-linux-gnu/libX11-xcb.so.1.0.0 f6a8a000-f6a8b000 rw-p 00001000 00:28 11352 /usr/lib/i386-linux-gnu/libX11-xcb.so.1.0.0 f6a8b000-f6a90000 r-xp 00000000 00:28 11430 /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0 f6a90000-f6a91000 r--p 00004000 00:28 11430 /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0 f6a91000-f6a92000 rw-p 00005000 00:28 11430 /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0 f6a92000-f6a94000 r-xp 00000000 00:28 7598 /usr/lib/i386-linux-gnu/libXdamage.so.1.1.0 f6a94000-f6a95000 r--p 00001000 00:28 7598 /usr/lib/i386-linux-gnu/libXdamage.so.1.1.0 f6a95000-f6a96000 rw-p 00002000 00:28 7598 /usr/lib/i386-linux-gnu/libXdamage.so.1.1.0 f6a96000-f6aa9000 r-xp 00000000 00:28 2717 /usr/lib/i386-linux-gnu/libXext.so.6.4.0 f6aa9000-f6aaa000 r--p 00012000 00:28 2717 /usr/lib/i386-linux-gnu/libXext.so.6.4.0 f6aaa000-f6aab000 rw-p 00013000 00:28 2717 /usr/lib/i386-linux-gnu/libXext.so.6.4.0 f6aab000-f6aac000 rw-p 00000000 00:00 0 f6aac000-f6abf000 r-xp 00000000 00:28 11336 /usr/lib/i386-linux-gnu/libglapi.so.0.0.0 f6abf000-f6ac0000 ---p 00013000 00:28 11336 /usr/lib/i386-linux-gnu/libglapi.so.0.0.0 f6ac0000-f6ac2000 r--p 00013000 00:28 11336 /usr/lib/i386-linux-gnu/libglapi.so.0.0.0 f6ac2000-f6ac8000 rwxp 00015000 00:28 11336 /usr/lib/i386-linux-gnu/libglapi.so.0.0.0 f6ac8000-f6ac9000 r-xp 00000000 00:28 7609 /usr/lib/i386-linux-gnu/libxshmfence.so.1.0.0 f6ac9000-f6aca000 r--p 00000000 00:28 7609 /usr/lib/i386-linux-gnu/libxshmfence.so.1.0.0 f6aca000-f6acb000 rw-p 00001000 00:28 7609 /usr/lib/i386-linux-gnu/libxshmfence.so.1.0.0 f6acb000-f6ad0000 r-xp 00000000 00:28 11419 /usr/lib/i386-linux-gnu/libxcb-sync.so.1.0.0 f6ad0000-f6ad1000 ---p 00005000 00:28 11419 /usr/lib/i386-linux-gnu/libxcb-sync.so.1.0.0 f6ad1000-f6ad2000 r--p 00005000 00:28 11419 /usr/lib/i386-linux-gnu/libxcb-sync.so.1.0.0 f6ad2000-f6ad3000 rw-p 00006000 00:28 11419 /usr/lib/i386-linux-gnu/libxcb-sync.so.1.0.0 f6ad3000-f6ad5000 r-xp 00000000 00:28 11406 /usr/lib/i386-linux-gnu/libxcb-present.so.0.0.0 f6ad5000-f6ad6000 r--p 00001000 00:28 11406 /usr/lib/i386-linux-gnu/libxcb-present.so.0.0.0 f6ad6000-f6ad7000 rw-p 00002000 00:28 11406 /usr/lib/i386-linux-gnu/libxcb-present.so.0.0.0 f6ad7000-f6ad9000 r-xp 00000000 00:28 11380 /usr/lib/i386-linux-gnu/libxcb-dri3.so.0.0.0 f6ad9000-f6ada000 r--p 00001000 00:28 11380 /usr/lib/i386-linux-gnu/libxcb-dri3.so.0.0.0 f6ada000-f6adb000 rw-p 00002000 00:28 11380 /usr/lib/i386-linux-gnu/libxcb-dri3.so.0.0.0 f6adb000-f6adc000 rw-p 00000000 00:00 0 f6adc000-f6b02000 r-xp 00000000 00:28 1361 /lib/i386-linux-gnu/libexpat.so.1.6.2 f6b02000-f6b03000 ---p 00026000 00:28 1361 /lib/i386-linux-gnu/libexpat.so.1.6.2 f6b03000-f6b05000 r--p 00026000 00:28 1361 /lib/i386-linux-gnu/libexpat.so.1.6.2 f6b05000-f6b06000 rw-p 00028000 00:28 1361 /lib/i386-linux-gnu/libexpat.so.1.6.2 f6b06000-f6b70000 r-xp 00000000 00:28 11543 /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 f6b70000-f6b72000 r--p 00069000 00:28 11543 /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 f6b72000-f6b77000 rwxp 0006b000 00:28 11543 /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 f6b77000-f6b7e000 r-xp 00000000 08:22 37753073 /lib/i386-linux-gnu/librt-2.23.so f6b7e000-f6b7f000 r--p 00006000 08:22 37753073 /lib/i386-linux-gnu/librt-2.23.so f6b7f000-f6b80000 rw-p 00007000 08:22 37753073 /lib/i386-linux-gnu/librt-2.23.so f6b80000-f6b99000 r-xp 00000000 08:22 37753431 /lib/i386-linux-gnu/libz.so.1.2.8 f6b99000-f6b9a000 r--p 00018000 08:22 37753431 /lib/i386-linux-gnu/libz.so.1.2.8 f6b9a000-f6b9b000 rw-p 00019000 08:22 37753431 /lib/i386-linux-gnu/libz.so.1.2.8 f6b9b000-f6d61000 r-xp 00000000 00:28 34710 /usr/lib/i386-linux-gnu/libosgUtil.so.3.2.3 f6d61000-f6d6a000 r--p 001c5000 00:28 34710 /usr/lib/i386-linux-gnu/libosgUtil.so.3.2.3 f6d6a000-f6d6b000 rw-p 001ce000 00:28 34710 /usr/lib/i386-linux-gnu/libosgUtil.so.3.2.3 f6d6b000-f6d6c000 rw-p 00000000 00:00 0 f6d6c000-f6d85000 r-xp 00000000 08:22 37753071 /lib/i386-linux-gnu/libpthread-2.23.so f6d85000-f6d86000 r--p 00018000 08:22 37753071 /lib/i386-linux-gnu/libpthread-2.23.so f6d86000-f6d87000 rw-p 00019000 08:22 37753071 /lib/i386-linux-gnu/libpthread-2.23.so f6d87000-f6d89000 rw-p 00000000 00:00 0 f6d89000-f6d8f000 r-xp 00000000 00:28 34052 /usr/lib/i386-linux-gnu/libOpenThreads.so.3.2.1 f6d8f000-f6d90000 ---p 00006000 00:28 34052 /usr/lib/i386-linux-gnu/libOpenThreads.so.3.2.1 f6d90000-f6d91000 r--p 00006000 00:28 34052 /usr/lib/i386-linux-gnu/libOpenThreads.so.3.2.1 f6d91000-f6d92000 rw-p 00007000 00:28 34052 /usr/lib/i386-linux-gnu/libOpenThreads.so.3.2.1 f6d92000-f708d000 r-xp 00000000 00:28 34697 /usr/lib/i386-linux-gnu/libosg.so.3.2.3 f708d000-f708e000 ---p 002fb000 00:28 34697 /usr/lib/i386-linux-gnu/libosg.so.3.2.3 f708e000-f7097000 r--p 002fb000 00:28 34697 /usr/lib/i386-linux-gnu/libosg.so.3.2.3 f7097000-f7098000 rw-p 00304000 00:28 34697 /usr/lib/i386-linux-gnu/libosg.so.3.2.3 f7098000-f71a4000 r-xp 00000000 00:28 34699 /usr/lib/i386-linux-gnu/libosgDB.so.3.2.3 f71a4000-f71a8000 r--p 0010b000 00:28 34699 /usr/lib/i386-linux-gnu/libosgDB.so.3.2.3 f71a8000-f71a9000 rw-p 0010f000 00:28 34699 /usr/lib/i386-linux-gnu/libosgDB.so.3.2.3 f71a9000-f7224000 r-xp 00000000 00:28 11390 /usr/lib/i386-linux-gnu/libCGAL_Core.so.11.0.2 f7224000-f7225000 ---p 0007b000 00:28 11390 /usr/lib/i386-linux-gnu/libCGAL_Core.so.11.0.2 f7225000-f7226000 r--p 0007b000 00:28 11390 /usr/lib/i386-linux-gnu/libCGAL_Core.so.11.0.2 f7226000-f7227000 rw-p 0007c000 00:28 11390 /usr/lib/i386-linux-gnu/libCGAL_Core.so.11.0.2 f7227000-f7228000 rw-p 00000000 00:00 0 f7228000-f722b000 r-xp 00000000 08:22 37753060 /lib/i386-linux-gnu/libdl-2.23.so f722b000-f722c000 r--p 00002000 08:22 37753060 /lib/i386-linux-gnu/libdl-2.23.so f722c000-f722d000 rw-p 00003000 08:22 37753060 /lib/i386-linux-gnu/libdl-2.23.so f722d000-f73dc000 r-xp 00000000 08:22 37753055 /lib/i386-linux-gnu/libc-2.23.so f73dc000-f73dd000 ---p 001af000 08:22 37753055 /lib/i386-linux-gnu/libc-2.23.so f73dd000-f73df000 r--p 001af000 08:22 37753055 /lib/i386-linux-gnu/libc-2.23.so f73df000-f73e0000 rw-p 001b1000 08:22 37753055 /lib/i386-linux-gnu/libc-2.23.so f73e0000-f73e3000 rw-p 00000000 00:00 0 f73e3000-f73ff000 r-xp 00000000 00:28 2416 /lib/i386-linux-gnu/libgcc_s.so.1 f73ff000-f7400000 r--p 0001b000 00:28 2416 /lib/i386-linux-gnu/libgcc_s.so.1 f7400000-f7401000 rw-p 0001c000 00:28 2416 /lib/i386-linux-gnu/libgcc_s.so.1 f7401000-f7454000 r-xp 00000000 08:22 37753061 /lib/i386-linux-gnu/libm-2.23.so f7454000-f7455000 r--p 00052000 08:22 37753061 /lib/i386-linux-gnu/libm-2.23.so f7455000-f7456000 rw-p 00053000 08:22 37753061 /lib/i386-linux-gnu/libm-2.23.so f7456000-f75cc000 r-xp 00000000 00:28 2995 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.22 f75cc000-f75d2000 r--p 00175000 00:28 2995 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.22 f75d2000-f75d3000 rw-p 0017b000 00:28 2995 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.22 f75d3000-f75d7000 rw-p 00000000 00:00 0 f75d7000-f7661000 r-xp 00000000 08:22 37754829 /usr/lib/i386-linux-gnu/libgmp.so.10.3.1 f7661000-f7662000 r--p 00089000 08:22 37754829 /usr/lib/i386-linux-gnu/libgmp.so.10.3.1 f7662000-f7663000 rw-p 0008a000 08:22 37754829 /usr/lib/i386-linux-gnu/libgmp.so.10.3.1 f7663000-f76ce000 r-xp 00000000 08:22 37754902 /usr/lib/i386-linux-gnu/libmpfr.so.4.1.4 f76ce000-f76cf000 r--p 0006a000 08:22 37754902 /usr/lib/i386-linux-gnu/libmpfr.so.4.1.4 f76cf000-f76d0000 rw-p 0006b000 08:22 37754902 /usr/lib/i386-linux-gnu/libmpfr.so.4.1.4 f76d0000-f76f3000 r-xp 00000000 00:28 11385 /usr/lib/i386-linux-gnu/libCGAL.so.11.0.2 f76f3000-f76f4000 r--p 00022000 00:28 11385 /usr/lib/i386-linux-gnu/libCGAL.so.11.0.2 f76f4000-f76f5000 rw-p 00023000 00:28 11385 /usr/lib/i386-linux-gnu/libCGAL.so.11.0.2 f76f5000-f7734000 r-xp 00000000 00:28 26248 /usr/lib/i386-linux-gnu/libboost_serialization.so.1.61.0 f7734000-f7736000 r--p 0003e000 00:28 26248 /usr/lib/i386-linux-gnu/libboost_serialization.so.1.61.0 f7736000-f7737000 rw-p 00040000 00:28 26248 /usr/lib/i386-linux-gnu/libboost_serialization.so.1.61.0 f7737000-f77e1000 r-xp 00000000 00:28 11416 /usr/lib/i386-linux-gnu/libboost_unit_test_framework.so.1.61.0 f77e1000-f77e2000 ---p 000aa000 00:28 11416 /usr/lib/i386-linux-gnu/libboost_unit_test_framework.so.1.61.0 f77e2000-f77e4000 r--p 000aa000 00:28 11416 /usr/lib/i386-linux-gnu/libboost_unit_test_framework.so.1.61.0 f77e4000-f77e5000 rw-p 000ac000 00:28 11416 /usr/lib/i386-linux-gnu/libboost_unit_test_framework.so.1.61.0 f77e5000-f77e7000 rw-p 00000000 00:00 0 f77e7000-f7fb2000 r-xp 00000000 00:28 39955 /tmp/sfcgal-1.3.0/obj-i686-linux-gnu/src/libSFCGAL.so.1.3.0 f7fb2000-f7fc0000 r--p 007ca000 00:28 39955 /tmp/sfcgal-1.3.0/obj-i686-linux-gnu/src/libSFCGAL.so.1.3.0 f7fc0000-f7fc1000 rw-p 007d8000 00:28 39955 /tmp/sfcgal-1.3.0/obj-i686-linux-gnu/src/libSFCGAL.so.1.3.0 f7fc1000-f7fc2000 rw-p 00000000 00:00 0 f7fc2000-f7fc3000 r-xp 00000000 08:22 37754648 /usr/lib/i386-linux-gnu/libeatmydata.so.1.1.2 f7fc3000-f7fc4000 r--p 00000000 08:22 37754648 /usr/lib/i386-linux-gnu/libeatmydata.so.1.1.2 f7fc4000-f7fc5000 rw-p 00001000 08:22 37754648 /usr/lib/i386-linux-gnu/libeatmydata.so.1.1.2 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-linux-gnu/ld-2.23.so f7ffb000-f7ffc000 rw-p 00000000 00:00 0 f7ffc000-f7ffd000 r--p 00022000 08:22 37753048 /lib/i386-linux-gnu/ld-2.23.so f7ffd000-f7ffe000 rw-p 00023000 08:22 37753048 /lib/i386-linux-gnu/ld-2.23.so 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/unix/sysv/linux/raise.c:54 resultvar = <optimized out> resultvar = <optimized out> pid = 19907 selftid = 19907 #2 0xf725a3a7 in __GI_abort () at abort.c:89 save_stage = 2 act = {__sigaction_handler = {sa_handler = 0x78756e69, sa_sigaction = 0x78756e69}, sa_mask = {__val = {1970169645, 761556015, 858926642, 175076142, 1717974886, 808464484, 1714906669, 808478054, 2003968048, 807432237, 858927152, 540028976, 842676272, 926097458, 808662327, 538982452, 538976288, 538976288, 538976288, 538976288, 538976288, 538976288, 1768697632, 862531426, 1814902328, 2020961897, 1970169645, 761556015, 858926642, 175076142, 0, 4096}}, sa_flags = -148617104, sa_restorer = 0x7} 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/posix/libc_fatal.c:175 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/i386-linux-gnu/libstdc++.so.6 No symbol table info available. #7 0xf778536b in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<unsigned long const, boost::unit_test::test_results> > >::deallocate (this=<optimized out>, __p=0x5695daa0) at /usr/include/c++/6/ext/new_allocator.h:110 No locals. #8 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<unsigned long const, boost::unit_test::test_results> > > >::deallocate (__a=..., __n=1, __p=0x5695daa0) at /usr/include/c++/6/bits/alloc_traits.h:442 No locals. #9 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_put_node (this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>, __p=0x5695daa0) at /usr/include/c++/6/bits/stl_tree.h:505 No locals. #10 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_drop_node (__p=0x5695daa0, this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>) at /usr/include/c++/6/bits/stl_tree.h:572 No locals. #11 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_erase (__x=0x5695daa0, this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>) at /usr/include/c++/6/bits/stl_tree.h:1610 No locals. #12 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::al---Type <return> to continue, or q <return> to quit--- locator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_erase (__x=0x56957250, this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>) at /usr/include/c++/6/bits/stl_tree.h:1608 No locals. #13 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_erase (__x=0x5695ddc8, this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>) at /usr/include/c++/6/bits/stl_tree.h:1608 No locals. #14 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_erase (__x=0x5695d460, this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>) at /usr/include/c++/6/bits/stl_tree.h:1608 No locals. #15 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_erase (__x=0x5695b568, this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>) at /usr/include/c++/6/bits/stl_tree.h:1608 No locals. #16 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_erase (__x=0x5695acf0, this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>) at /usr/include/c++/6/bits/stl_tree.h:1608 No locals. #17 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_erase (this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>, __x=0x56950928) at /usr/include/c++/6/bits/stl_tree.h:1608 No locals. #18 0xf7784bcc in std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::_M_erase (__x=0x5694f7e8, this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>) at /usr/include/c++/6/bits/stl_tree.h:1608 No locals. #19 std::_Rb_tree<unsigned long, std::pair<unsigned long const, boost::unit_test::test_results>, std::_Select1st<std::pair<unsigned long const, boost::unit_test::test_results> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::~_Rb_tree (this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>, __in_chrg=<optimized out>) at /usr/include/c++/6/bits/stl_tree.h:868 No locals. #20 std::map<unsigned long, boost::unit_test::test_results, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, boost::unit_test::test_results> > >::~map ( this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>, __in_chrg=<optimized out>) at /usr/include/c++/6/bits/stl_map.h:96 No locals. #21 boost::unit_test::(anonymous namespace)::results_collector_impl::~results_collector_impl (this=0xf77e5c38 <boost::unit_test::(anonymous namespace)::s_rc_impl()::the_inst>, __in_chrg=<optimized out>) at ./boost/test/impl/results_collector.ipp:114 No locals. #22 0xf725b933 in __run_exit_handlers (status=0, listp=0xf73df3dc <__exit_funcs>, run_list_atexit=true) at exit.c:82 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=0xf7fe8780 <_dl_fini>, stack_end=0xffffd61c) at ../csu/libc-start.c:325 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, cleanup = 0x0, canceltype = -10720}}} not_first_call = <optimized out> #25 0x56649ac2 in _start () No symbol table info available.
I am confused as to what is going on.
And from the first comment of the Launchpad issue:
==2697== Warning: client switching stacks? SP change: 0x600f280 --> 0xfec0a100 ==2697== to suppress, use: --max-stackframe=121655680 or greater unknown location(0): fatal error: in "SFCGAL_algorithm_IntersectionTest/testFileIntersectionTest": memory access violation at address: 0xbbb1d800: no mapping at fault address /tmp/sfcgal-1.3.0/test/unit/SFCGAL/algorithm/IntersectionTest.cpp(227): last checkpoint Test is aborted /tmp/sfcgal-1.3.0/test/unit/SFCGAL/algorithm/IntersectionTest.cpp(67): Leaving test case "testFileIntersectionTest"; testing time: 69400776us Test is aborted /tmp/sfcgal-1.3.0/test/unit/SFCGAL/algorithm/IntersectionTest.cpp(65): Leaving test suite "SFCGAL_algorithm_IntersectionTest"; testing time: 69402508us Test is aborted Leaving test module "UnitTestSFCGAL"; testing time: 93720212us
Probably things are asynchronous and going out of scope =( sigh
This PR forwards Dimitris patch that fixes the build failure on i386.