https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71192
Bug ID: 71192 Summary: Coredump - SIGSEGV exception handling on GCC 4.8.2 in Solaris 11.3, Solaris 11.2 works with same GCC version Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other Assignee: unassigned at gcc dot gnu.org Reporter: user1172464 at gmail dot com Target Milestone: --- Hi, we are trying to compile an opensource software from source that belongs to a third party supplier. While trying to compile the software on a Solaris 11.3 zone and also on a Solaris 11.2 zone the compilation completes without any issues and the expected shared object libraries are generated as expected. When built and run the executable on a Solaris 11.2 environment everything works as expected. If we build and run the executable on a Solaris 11.3 environment the executable (a daemon) during the start, it coredumps. On both environments we are using the supplied compilation software that comes with the Solaris release. The Solaris 11.2 env we used gcc 4.8.2, on the Solaris 11.3 we have used the same 4.8.2 version and also a in house compiled version of gcc 4.8.5, but unfortunately the same codedump happens. Looking into the source code, we can see that the coredump is happening as soon as an exception (in the C++) code is being raised. Following the code logic and the execution stack we can found that the exception is expected and is being handled in a try ...catch section, but as soon the exception is thrown we are not able to see the code execution to return to the expected catch section and instead the code just coredumps. We have tried to add debug symbols (i.e -g -g3 -O0) to the compilation options and looks the symbols are there. After running mdb against the core file generated we can see the stack trace but we are not getting much support from the third-party supplier on resolving this as they claim the code is working properly on Solaris 11.2. Below is the calling stack extracted from the core dump file, below the real name of the .so has been replaced with third-party-lib.so and the c++ namespace used has been changed to ABCD to avoid the supplier to be identified. Call stack details: mdb core Loading modules: [ libc.so.1 ld.so.1 ] > $G C++ symbol demangling enabled > ::stack libc.so.1`__lwp_sigqueue+8(6, ffffffff7fffd7b0, 5, 5, 0, 0) libc.so.1`abort+0x10c(1, ff8, 6, 0, 1bb5b4, c00) libstdc++.so.6.0.18`__gnu_cxx::__verbose_terminate_handler+0x1bc(100115580, 1, fffffffbf6280608, 100103ce0, 100114f98, ffffffff3f98bbd0) libstdc++.so.6.0.18`__cxxabiv1::__terminate+4(fffffffbf62839a0, fffffffbf63f0938, ff, fffffffbf6280608, ffffffff7fffcff0, ffffffff7fffdb70) libstdc++.so.6.0.18`std::terminate+0x1c(0, fffffffbe2561538, 0, ffffffff7fffcc00, ffffffff7fffd3e0, ffffffff7fffcff0) libstdc++.so.6.0.18`__cxa_throw+0x88(1001155a0, fffffffbe2781930, fffffffbe240ff20, 0, 23, 100115580) third-party-lib.so`ABCD::throw_not_found_error+0xdc(fffffffbe1e25868, 0, 2c, 0, 2c, 1001155a0) third-party-lib.so`ABCD::__ini_lookup+0x5f4(ffffffff7fffe278, ffffffff7fffeae0, fffffffbe1e22308, ffffffff7fffedd0, 0, 100116ec0) third-party-lib.so`ABCD::read_profile_entry+0x7dc(ffffffff7fffec58, fffffffbe1e22108, fffffffbe1e22308, ffffffff7fffedd0, fffffffbe1e22108, fffffffbe1e22108) third-party-lib.so`ABCD::read_profile_string+0x74(ffffffff7fffee00, fffffffbe1e22108, fffffffbe1e22308, ffffffff7fffedd0, fffffffbe1e22108, 142) third-party-lib.so`ABCD::ABCD_licence::check2+0x324(100114be0, ffffffff3f9979c8, 12, 0, 12, 0) third-party-lib.so`ABCD::ABCD_licence::check+0x34(100114be0, 100114be0, fffffffbe1e26500, fffffffbe1e279d0, f, fffffffbe278f7c8) third-party-lib.so`ABCD::ABCD_static::initialize_licence+0xa4(100114710, fffffffbe1e264f0, ffffffff7ffff05f, ffffffff3f986000, 1a0824, 100114908) third-party-lib.so`ABCD::ABCD_static::init+0x160(100114710, fffffffbe278e4f8, fffffffbe1e26448, fffffffbe1e26450, 100114b68, ffffffffffffffff) third-party-lib.so`ABCD::ABCD_static_ptr_static+0xf0(0, 2, ffffffff3f98cfc0, ffffffff7f202a40, 0, 100114710) third-party-lib.so`ABCD::ABCD_static_ptr+0x2c(0, 0, 0, ffffffff7f7498c0, 3, ffffffff7f202a40) third-party-lib.so`ABCD::ABCD_appl::init+8(ffffffff7ffff53f, 0, 100000b9c, fffffffbe1fa91bc, ffffffff7f744608, 0) third-party-lib.so`ABCD::ABCD_main0+0x40(a, ffffffff7ffff6d8, ffffffff3f98cfc0, 100000b9c, 0, 100101360) third-party-lib.so`spooler_program+0x20(a, ffffffff7ffff6d8, ffffffff7ffff730, 1001013a0, 100000000, 2800) _start+0x7c(0, 0, 0, 0, 0, 0) Any ideas of what could be causing this issue only happening on Solaris 11.3? Thanks, Mike