2009-08-26 9 views
0

Wir versuchen, unseren Code von HPX nach AIX zu portieren, aber Core-Dump während der Ausführung von exe zu bekommen.Prozess schlägt fehl in ptrgl_64._ptrgl functionon aix

es ist in einer unbekannten Funktion fehlgeschlagen ptrgl_64._ptrgl.

> ptrgl_64._ptrgl() at 0x900000084da0e48 
> dfile_Proc(o_record = 
> 0x0000000400000004, fileType = 
> "^O\377\377\377\377\377TH^O\377\377\377\377\377TQ^O\377\377\377\377\377Ta^O\377\377\377\377\377T}", 
> dist_dest = (nil), indicator = '\0', 
> i_acCounters = (nil)), line 621 in 
> "DISTfile.c" main(i_argc = 4, i_argv = 
> 0x0fffffffffff34e8), line 66 in 
> "main_EXEC.c" 

eine Idee zu diesem Thema ?? Vielen Dank im Voraus.

+0

Dieses Problem war auf ungültigen Zeigerwert zurückzuführen. – Hemant

Antwort

1

Dies nennt man Zeiger Kleber, und wird zum Aufrufen von Funktionen über einen Zeiger auf PowerPC verwendet. Da der Zeiger auf eine Funktion in einem anderen Modul/gemeinsam genutzten Objekt verweisen kann, wird der Zeigerkleber benötigt, um den richtigen RTOC- und Umgebungszeiger für dieses Modul einzurichten und dann zum Funktionseinstiegspunkt zu springen. Wenn der Funktionszeiger nicht gültig war, stürzt er wahrscheinlich im Zeigerkleber ab, da der Zeiger tatsächlich dereferenziert wird.

Siehe Abschnitt A.3.3 der PowerPC Compiler Writer's Guide, wenn Sie an den vollständigen Details interessiert sind.

+0

Danke, es war das Problem mit dem Funktionszeiger nur. +1 für die Erläuterung des Zeigerklebers. – Hemant

1

ptrgl_64._ptrgl() bei 0x900000084da0e48
dfile_Proc (o_record = 0x0000000400000004,
filetype = "^ O \ 377 \ 377 \ 377 \ 377 \ 377.^O \ 377 \ 377 \ 377 \ 377 \ 377TQ^0 \ 377 \ 377 \ 377 \ 377 \ 377Ta^O \ 377 \ 377 \ 377 \ 377 \ 377T} ",
dist_dest = (Null), Indikator = '\ 0', i_acCounters = (Null)), Zeile 621 in "DISTfile.c"
main (i_argc = 4, i_argv = 0x0fffffffffff34e8), Zeile 66 in "main_EXEC.c"

Blick auf Linie 621 von DISTfile.c.
Was macht diese Linie?
Ruft es eine Funktion über einen Funktionszeiger auf?
Welche Art von Problemen könnte durch Linie 621 verursacht werden?

+0

Ja, wir rufen die Funktion über das Funktionszeiger-Array auf. Aber welches Problem könnte durch den Funktionszeiger ausgelöst werden? der gleiche Code funktioniert einwandfrei auf HPX? Ich verstehe nicht, was "ptrgl_64._ptrgl" Funktion aufruft. Ich kann nichts auf der Google für diese Funktion finden. – Hemant

+0

danke für Ihre Antwort, es war nur mit Funktionszeiger Problem. – Hemant