Crash after upgrading gcc version on linux - c++

I upgrade my compiler version from GCC 7 to GCC 11.
When I try to run the process on the machine where I build the binary, I have no issue.
But when launching the process on the production machine I get a crash systemically in a std::list of boost shared ptrs
What's is going on with this machine (same linux distribution version) ?
Could you please help ?

Related

Arm toolchain and associated runtime

I am attempting to port an application to an arm processor and have run into a roadblock. I don't get to change the source code and it uses a feature that is not available in the arm runtime on the arm host. I get the message on the arm host:
/usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version 'CXXABI_1.3.8' not found (required by MyDaemon);
I ran
strings libstdc++.so.6 | grep CXXABI and got the list with the last element as CXXABI_1.3.6.
Can I simply replace the toolchain/runtime on the arm machine or do I have to worry about other programs that link to it and will not run any longer?
g++ --version gives (Debian 4.6.3-14) 4.6.3
so maybe I can use a 4.9 toolchain and runtime?
The issue with that answer is that when the different libstdc++ is loaded it reports.
GLIBC_2.17 not found
The problem is that the environment on the machine where the application is compiled is different from the environment where the application is run and would like to know where to read to be able to solve this problem.

When a program has to link to libstdc++ version which is using on build machine?

I have built some example c++ application using gcc 4.9.2 (libstdc++.so.6.0.20). I can run that program on a virtual machine which is equipped with gcc 4.6.3 ((libstdc++.so.6.0.16). Sometimes an application can't be run on the environment which differ from the build environment (for example libstdc++.so.6.0.16 vs libstdc++.so.6.0.20). When a program has to link to libstdc++ version which is using on build machine ? Could you give me some examples (with source code) ?

mingw upgrade only gdb without changing gcc

I'd like to upgrade my mingw32 gdb from version 7.4 to 7.5 (see reason here). Unfortunately the old gcc 4.6.2 can't be upgraded, because that's the latest tested version for our software (run into issues with 4.8.x). Can anyone suggest a way to do this?
The two programs are totally independent. They share a bit of source code under the hood, but they are on different release schedules and their release tar files don't share anything.
So, there is nothing preventing upgrading gdb while keeping gcc the same -- just rebuild gdb but nothing else.

Build with gcc for systems with older gcc

Hi I am trying to build an executable on Ubuntu for RedHat 6.4 - and I am struggling due to the different gcc versions.
The RedHat 6.4 machine uses gcc 4.4.7. The Ubuntu machine uses gcc 4.6.3.
Here is what I have tried:
Install g++-4.4 on the Ubuntu machine and compile with older version of gcc: failed because the code base uses features not yet available in g++-4.4
Copy the Ubuntu libc.so.6 and libstdc++.so.6 over to the RedHat machine. The program sort of gets started, then segfaults.
Link the executable on Ubuntu statically with -Wl,-Bstatic as link options. Failed on a third party library with "warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking".
So I am a bit stuck now... Any advice?
Based on comments above, decided to dump RedHat (didn't have a subscription, so not easily upgradable) on the other machine and switch to Fedora, which has the latest gcc. Not a solution that scales, but what can you do.

Cannot find new threads: generic error 64bit Ubuntu

I know that there are a few topics around this subject, however none of them helped me.
I am trying to debug my application using GDB and I am obtaining the error
[debug]Cannot find new threads: generic error
[debug][Thread debugging using libthread_db enabled]
in the function dlopen("my_lib.so", RTLD_LAZY);
The strange fact about this is that it used to work before, when I was compiling under Ubuntu of 32bit architecture. Now, I have moved to a new machine, with 64bit ubuntu installed, HOWEVER, I am giving the compile option -m32 so that the application is still compiled under 32bits. Please don't tell me to try to compile it under 64bit because there are several reasons not to do so.
I have followed the instructions of this topic and still nothing.
Does anybody have a different suggestion?
EDIT: The version of GCC on 32bit machine is 4.4.4 and GDB is 7.2
On the 64bit machine the version of GCC is 4.6.1 and GDB is 7.3
May this have any influence?
Please setup this
LD_PRELOAD=/lib/x86_64-linux-gnu/libpthread.so.0 gdb --args ./app