.so stürzt bei String-Manipulationen ab: Konflikt zwischen statisch verknüpfter libstdc++ und der System-Libstdc++C++

Programme in C++. Entwicklerforum
Anonymous
 .so stürzt bei String-Manipulationen ab: Konflikt zwischen statisch verknüpfter libstdc++ und der System-Libstdc++

Post by Anonymous »

Ich entwickle eine gemeinsam genutzte Bibliothek mit einer C-API unter Verwendung von C++.
Ich kompiliere und verlinke mit:

Code: Select all

cxxflags=-fPIC -fvisibility=hidden
cflags=-fPIC -fvisibility=hidden
linkflags=-fPIC -static-libstdc++ -static-libgcc
Ich verwende eine GCC-Version, die ich selbst kompiliert habe. Sie unterscheidet sich von der, die zum Erstellen meiner Linux-Distribution verwendet wurde. Ich verlinke statisch mit der libstdc++ von diesem GCC in der Hoffnung, die Kompatibilität mit verschiedenen Linux-Distributionen zu maximieren (ich kompiliere außerdem auf einem System mit einer älteren Glibc als der, auf der sie ausgeführt wird).
Meine Bibliothek wird ohne Fehler kompiliert und verknüpft, und die Testsuite ist grün. Wenn ich es jedoch aus Python aufrufe (mit ctypes), kann es abstürzen, wenn einige Python-Module zuvor importiert wurden, wie zum Beispiel greenlet oder scikit-learn. Der Absturz scheint mit der String-Manipulation zusammenzuhängen: Konvertierung von Zahlen in Strings.
Seltsamerweise stürzt es nicht ab, wenn ich LD_PRELOAD=/lib/x86_64-linux-gnu/libstdc++.so.6 Python ... zum Ausführen meines Python-Skripts verwende (d. h. libstdc++ vom System vorladen).
Dieses Verhalten ist neu und hängt möglicherweise mit einem zusammen Update auf die Linux-Distribution.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post