Unter Linux kann dazu führen, was dlopen SIGFPE auszustrahlen?
Frage
ich eine Bibliothek von dubioser Herkunft haben, die durch file
als 32-Bit ausführbare identifiziert wird. Allerdings, wenn ich versuche, es zu dlopen
auf eine 32-Bit CentOS 4.4 Maschine, dlopen endet mit SIGFPE
. Sicher, wenn es etwas falsch mit dem Format der binären ist dann sollte dlopen
einen Fehler seinen Umgang mit?
Die Frage ist also: Welche Arten von Problemen können dlopen auszusenden SIGFPE verursachen
Lösung
Mögliche Gründe sind:
- Division durch Null (Regel diese aus mit GDB)
- Architektur Mismatch (haben Sie kompilieren das DSO sich auf der gleichen Architektur? Oder ist es vorkompilierte?)
- ABI Kompatibilitätsprobleme (Laden eines DSO gebaut für eine Linux-Distribution auf einer anderen).
Ausführen GDB gegen die ausführbare Datei mit:
]$ gdb ./my_executable
(gdb) run
Wenn das Programm abstürzt, erhalten eine Backtrace mit
(gdb) bt
Wenn die Stapelende in do_lookup_x ()
dann haben Sie wahrscheinlich das gleiche Problem und sollen sicherstellen, Ihre DSO für das System richtig ist, dass Sie versuchen, es auf zu laden ... immer Sie es sagen hat dubiose Herkunft so das Problem wahrscheinlich ein ABI Problem mit dem ähnlich ist, beschrieben.
Erhalten Sie eine nicht-dubiose Bibliothek / ausführbar! ;)
Good Luck