I have the following situation (Ubuntu 15.10 and Debian Testing)
I have Lib A, which compiled without cxx11 and lib B, which uses -std = C ++ 11. B includes links against A, A uses boost.
If I associate B with A, application a will crash during dynload. If I compile A without cxx11 or B with cxx11, everything works fine.
My question is: as I understand it, adding an ABI namespace should guarantee a problem like shuch. Am I wrong here?
I created an example project to clarify the problem:
https://github.com/goldhoorn/sandbox/tree/gcc5.2-issue
test1 failed, other tests pass.
GDB tells me:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7bceb2e in _GLOBAL__sub_I_Lib.cpp () from ./libmyLib.so
(gdb) bt
argv=argv@entry=0x7fffffffe688, env=env@entry=0x7fffffffe698)
at dl-init.c:78
argc=1, l=<optimized out>) at dl-init.c:36
env=0x7fffffffe698) at dl-init.c:126
Result from Valgrind:
goldhoorn@debian:/tmp/example$ LD_LIBRARY_PATH=. valgrind
==17140== Memcheck, a memory error detector
==17140== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==17140== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==17140== Command: ./main
==17140==
==17140==
==17140== Process terminating with default action of signal 11 (SIGSEGV)
==17140== Bad permissions for mapped region at address 0x401FE8
==17140== at 0x4E3EB2E: _GLOBAL__sub_I_Lib.cpp (in /tmp/example/libmyLib.so)
==17140== by 0x400EA09: call_init.part.0 (dl-init.c:78)
==17140== by 0x400EAF2: call_init (dl-init.c:36)
==17140== by 0x400EAF2: _dl_init (dl-init.c:126)
==17140== by 0x40011C9: ??? (in /lib/x86_64-linux-gnu/ld-2.19.so)
==17140==
==17140== HEAP SUMMARY:
==17140== in use at exit: 72,704 bytes in 1 blocks
==17140== total heap usage: 1 allocs, 0 frees, 72,704 bytes allocated
==17140==
==17140== LEAK SUMMARY:
==17140== definitely lost: 0 bytes in 0 blocks
==17140== indirectly lost: 0 bytes in 0 blocks
==17140== possibly lost: 0 bytes in 0 blocks
==17140== still reachable: 72,704 bytes in 1 blocks
==17140== suppressed: 0 bytes in 0 blocks
==17140== Rerun with
==17140==
==17140== For counts of detected and suppressed errors, rerun with: -v
==17140== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Segmentation fault