Pregunta

Tengo una biblioteca de origen dudoso que se identifica por file como un ejecutable de 32 bits. Sin embargo, cuando intento dlopen en un 32 bits CentOS 4.4 máquina, termina con dlopen SIGFPE. Sin duda, si había algo mal con el formato del binario entonces dlopen debe ser el manejo de un error?

Así que la pregunta es: ¿Qué tipo de problemas pueden causar dlopen a SIGFPE emiten

¿Fue útil?

Solución

Algunas razones posibles son:

  1. La división por cero (descartar esta posibilidad con el BGF)
  2. Arquitectura desajuste (qué se compila el DSO a sí mismo en la misma arquitectura, o es creado previamente?)
  3. problemas de compatibilidad ABI (carga de un DSO construida por una distribución de Linux en una diferente).

Aquí es una discusión interesante respecto a la generación de hash en el formato ELF en los sistemas GNU donde un desajuste ABI puede causar SIGFPE en los sistemas cuando se mezclan los partidos y los GRD no edificados que distro / sistema.

Ejecutar GDB en contra de su ejecutable con:

]$ gdb ./my_executable
(gdb) run

Cuando el programa se bloquea, conseguir una traza con

(gdb) bt

Si los extremos de la pila en do_lookup_x () entonces es probable que tengan el mismo problema y deben asegurarse de que su DSO es correcto para el sistema que está intentando cargarla en ... Sin embargo lo que diga tiene dudosos orígenes lo que el problema es probablemente un problema de ABI similar a la descrita.

Obtener una biblioteca no dudosa / ejecutable! ;)

Buena suerte

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top