Ich habe den ganzen Tag damit verbracht, diesen Fehler zu untersuchen, und meine Kollegen sagen, dass er wie ein Linker- oder Bibliotheksfehler aussieht. So etwas hatte ich noch nie zuvor, also bin ich hier, um es zu dokumentieren und um Hilfe zu bitten!
Meine ausführbaren segfaults vor main werden
genannt %Vor%Der resultierende Absturz scheint ähnlich zu dieser Frage Das führt zu diesem Fehlerbericht , aber mein Code ist anders und sehr empfindlich gegenüber Änderungen. Ich habe das Thema auf 5 Anforderungen beschränkt:
Das ist es. Ändern Sie oder lassen Sie eine Anforderung aus, und der Segfault tritt nicht auf.
Ich habe einen minimalen Testfall erstellt. Hier ist der ausführbare Header
%Vor%Und die Hauptfunktion ist leer. Ich konstruiere nicht einmal die Klasse, die ich definiert habe!
%Vor%Die Crash-Klasse kann nicht viel einfacher werden
%Vor%Aber es erfordert eine Implementierung, um eine gemeinsame Bibliothek zu erstellen.
%Vor%Ich habe das auch in einem Docker-Container auf einer neuen Installation von Ubuntu 14.04 getestet, wobei g ++ - 4.8 über apt-get installiert wurde.
Hier ist das Build-Skript.
%Vor%Ich habe den ganzen Code in ein Github-Repo gesteckt: crash_test
Rat geschätzt!
Es scheint, dass Sie auf das Problem stoßen, das in dieses gold
Ticket beschrieben wird. Basierend auf den Kommentaren zu diesem Ticket hat die folgende Problemumgehung das Problem für mich gelöst: Ändern Sie die Linker-Befehlszeile so, dass sie den Parameter -Wl,--no-as-needed
enthält. Für dein Build-Skript wäre das:
Aber wie gesagt, das ist nur ein Workaround, und ich bin mir nicht sicher, ob das eine akzeptable Lösung für Sie ist. Wenn Sie eine angemessene Lösung benötigen, sollten Sie dieses Ticket wahrscheinlich wiederbeleben und Ihre Ergebnisse dort veröffentlichen.
Tags und Links c++