2014-06-16 3 views
1

J'ai un problème assez intrigant avec mon programme (compilé avec gcc 4.6.4 sur Ubuntu 12.04). Lorsque je crée dynamiquement l'exécutable, le programme fonctionne parfaitement. Mais quand je le construis statiquement (avec le drapeau -static), il me donne un 'core dumped' après la sortie (par exemple après 'return 0' dans main). Malheureusement, l'ensemble du programme est trop grand pour poser ici. Quelles sont les possibilités?Core jeté après la sortie du programme

Répondre

1

1) Vous avez encore un thread en cours d'exécution. 2) Vous écrasez la mémoire et vous avez de la chance avec les bibliothèques dynamiques.

+0

Vous utilisez bibliothèques dynamiques plutôt que des bibliothèques statiques pour la version statique du lien. – user3629249

2

En plus des deux possibilités en johnnycrash answer:

  • Certaines fonctions avec __attribute__ ((destructor)) est appelée et core dump.

  • Le segment de mémoire est corrompu (vérifiez avec valgrind)

  • Certaines fonctions enregistrées avec atexit(3) se bloque

  • Certaines bibliothèque/fonction est liée "deux fois"

+0

Merci pour votre suggestion. D'une certaine manière, le remplacement de 'return 0' par '_exit (0)' résout le problème. – kengo

+0

Cela contourne le problème sans le résoudre. –

Questions connexes