Debuggen von Python-Ctypes-Segmentierungsfehlern

8

Ich versuche, etwas Python ctypes code von einem Windows-spezifischen Programm zu portieren, um es mit einem Linux-Port meiner Bibliothek zu verbinden. Das kürzeste Python-Codebeispiel, das mein Problem beschreibt, ist unten dargestellt. Wenn ich versuche, es auszuführen, erhalte ich einen Segmentierungsfehler in examine_arguments() in Python. Ich habe eine printf -Anweisung in meiner Bibliothek beim Absturzfunktionsaufruf platziert, aber sie wird nie ausgeführt, was mich zu der Annahme verleitet, dass das Problem im Ctypes-Code liegt.

%Vor%

Meine Bibliothek hat die folgenden Header und ein normales C-Programm, das das oben beschriebene tut (Aufruf von create_script_environment gefolgt von set_var ) läuft gut. Wenn ich die Logging-Informationen anschaue, die meine Bibliothek auf die Konsole legt, passiert der Absturz, wenn ich versuche, avs_set_var einzugeben.

%Vor%

Ich habe versucht, den Aufruf von GDB zurückzuverfolgen, aber ich verstehe nicht, wie man die Ergebnisse interpretiert, und auch nicht wirklich viel über die Verwendung von GDB.

%Vor%

Ich weiß nicht, wie ich dieses Problem angehen soll. Ich habe mir die Details der rufenden Typen angeschaut, aber ich sehe da offensichtlich nichts falsches. Fällt ich in irgendwelche Plattform-spezifischen Artenverwendungen?

Bearbeiten Es scheint ein Problem mit 32-Bit- gegenüber 64-Bit-Architekturen im Ctypes-Modul zu bestehen. Als ich dies erneut mit einem 32-Bit-Build meiner Bibliothek und 32-Bit-Python getestet habe, lief es erfolgreich. Bei 64-Bit segmentiert es an der gleichen Stelle.

    
user1505563 06.07.2012, 02:32
quelle

1 Antwort

0

Versuchen Sie, c_void_p für den undurchsichtigen AVS_ScriptEnvironment* :

zu verwenden %Vor%

und:

%Vor%     
Mark Tolonen 07.07.2012 08:05
quelle

Tags und Links