J'essaie d'exécuter un script Python , mais j'obtiens l'erreur suivante:
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
Le message d'erreur complet peut être trouvé ici .
J'utilise python 3.5.2 sur un système d'exploitation Linux Serena 18.1 Mint
Quelqu'un peut-il me dire pourquoi cela se produit et comment puis-je résoudre le problème?
Le signal SIGSEGV indique une " segmentation violation " ou un "segfault". Plus ou moins, cela équivaut à une lecture ou une écriture d'une adresse mémoire qui n'est pas mappée dans le processus.
Cela indique un bogue dans votre programme. Dans un programme Python, il s'agit d'un bogue dans l'interpréteur ou dans un module d'extension utilisé (et ce dernier est la cause la plus courante).
Pour résoudre le problème, vous avez plusieurs options. Une option consiste à produire un exemple complet, minimal et autonome, qui réplique le problème, puis le soumet en tant que rapport de bogue aux responsables du module d'extension utilisé.
Une autre option consiste à essayer de rechercher la cause vous-même. gdb est un outil précieux dans cette entreprise, tout comme une version de débogage de Python et de tous les modules d’extension utilisés.
Une fois que vous avez installé gdb, vous pouvez l’utiliser pour exécuter votre programme Python:
gdb --args python <more args if you want>
Et utilisez ensuite les commandes gdb pour localiser le problème. Si vous utilisez run
, votre programme s'exécutera jusqu'à ce qu'il se soit planté et vous aurez l'occasion d'inspecter l'état à l'aide d'autres commandes gdb.
Lorsque je rencontre ce problème, je me rends compte qu'il existe des problèmes de mémoire. J'ai redémarré le PC et l'ai résolu.
Après quelques fois, j'ai découvert que j'exécutais une nouvelle version de TensorFlow qui génère une erreur sur les ordinateurs plus anciens. J'ai résolu le problème de la mise à niveau de la version TensorFlow à la version 1.4.