I have a small library which I normally compile with gcc-4.9 and create both a shared (so) and static version, although I always use the shared version.
My other app (which uses that library) also compiles with gcc-4.9. Now, due to completely irrelevant reasons, I had reverted to gcc-4.8. When I compiled my app with 4.8 it started crashing when I started it, giving the SIGSEGV Address boundary error.
“./icarus” terminated by signal SIGSEGV (Address boundary error)
First thing I tried was to see in gdb what was wrong, but to my surprise gdb also crashed without being able to run my app.
(gdb) run
Starting program: /home/alex/Projects/Icarus/branches/epsilon/build/icarus
warning: the debug information found in "/lib64/ld-2.19.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
fish: “gdb ./icarus” terminated by signal SIGSEGV (Address boundary error)
I finally changed back to gcc/g++ 4.9, and the issue was resolved. However I would really like to understand why this happened. I was under the impression that even different ABI/gcc/g++ versions should be compatible?
System is Debian 8.0 and I am using C++11. I have made no code changes from the previous working version, so this must be an issue with gcc/g++ version changes?
Aucun commentaire:
Enregistrer un commentaire