14
votes

Under linux, when debugging my program with gdb the following message appears:

warning: Corrupted shared library list: 0x639130 != 0x7ffff7fd9598

In my program I am loading several .so files via dlopen(). After calling dlopen(), the message appears.

Then, when I load the next .so, the message appears again, but this time with different addresses:

warning: Corrupted shared library list: 0x63c9e0 != 0x639130

I have looked for references about this message on the internet but have not found anything. There are some references about a corrupted shared library, but not about a corrupted shared library list.

Does anyone know what might be the cause for this?

I am running Ubuntu AMD64 and compile in 64bit with g++ command line options:

-std=c++11 -fPIC
1
stackoverflow.com/help/how-to-ask You need to make a reproducible example.Maxim Egorushkin
I can't. The problem only appears when I use my own libraries and excutables. I tried creating just a very simple executable which loads another very simple .so and the warning does not appear.Kai Neumann
I think this is coming from Qt code.WilliamKF
@WilliamKF I see this when making use of reverse-execution (while debugging a Qt app), however it is absent before that while recording the program execution through rr record. Since there shouldn't appear any new stdout/stderr once execution is recorded, I'm inclined to think the message comes from gdb, not Qt.Hi-Angel

1 Answers

1
votes

This seems to be occurring when one of the shared library dlopen()ed by the program also has code to dlopen() a library that has already been loaded previously.