Je pense que vous n'écrivez pas toutes les données dans le fichier principal.
Créez un script simple, rendez-le exécutable et définissez le modèle de base du script.
#!/bin/sh
cat > /tmp/core.$$
Générez maintenant un fichier core (par exemple exécutez sleep 1243
et appuyez sur ctrl+\
) et ça devrait marcher.
Je viens de le tester moi-même sur mon système et cela fonctionne sans problème.
La première chose à vérifier qui vient à l'esprit est le drapeau d'en-tête Elf qui indique de quel type de fichier il s'agit. Il a quatre valeurs - objet partagé, objet non lié, exécutable et vidage mémoire. C'est probablement ce qui cause les erreurs gdb.
Essayez également de l'examiner avec objdump - il peut séparer l'intégralité du fichier ELF pour analyser quelle partie de celui-ci n'est apparemment pas bonne.
Vous pouvez trouver la spécification ELF sur https://refspecs.linuxbase.org/elf/elf.pdf