Qu'est-ce qu'un défaut de segmentation?

25

Dans Ubuntu, j'ai souvent rencontré l'erreur de segmentation. Qu'est-ce qu'un défaut de segmentation et quand se produit-il?

    
posée Tachyons 17.05.2012 - 15:59
la source

3 réponses

22

Une erreur indiquant erreur de segmentation (ou segfault ou SIGSEGV ) dans Ubuntu et d'autres systèmes d'exploitation de type Unix ou > Erreur de protection générale dans Windows, lorsqu'un programme tente d'accéder à une partie de la mémoire inaccessible ou à laquelle le programme n'a pas accès. Une erreur de segmentation est une sorte de plantage de programme, c'est-à-dire une fin anormale d'un programme. Consultez les articles de Wikipedia sur des crashs , protection de la mémoire , erreur de segmentation , erreur de protection générale , et SIGSEGV pour plus d'informations (et plus compréhension texturée du sujet que ce qui est présenté ici.

Un défaut de segmentation est presque toujours dû à un bogue dans le programme où il se produit. Je suppose que la plupart ou la totalité de vos erreurs de segmentation proviennent de la même application. Veuillez fournir plus de détails sur les circonstances dans lesquelles les erreurs de segmentation se produisent sur votre ordinateur et sur le programme en panne. Veuillez également fournir le texte complet et exact du message d'erreur que vous recevez et tout autre message qui apparaît avant lui. Cela devrait nous permettre de fournir des conseils détaillés spécifiques à votre problème (plutôt que des informations générales sur ce qu'est une erreur de segmentation).

La meilleure façon de fournir ces informations est de modifier votre question pour l'inclure . Alternativement, si vous voulez que cette question concerne uniquement les défauts de segmentation en général, vous pouvez poser une nouvelle question pour savoir ce qui cause spécifiquement vos erreurs de segmentation (si vous faites cela, assurez-vous de fournir tous ces détails dans votre nouvelle question) .

    
réponse donnée Eliah Kagan 17.05.2012 - 16:11
la source
4

L'erreur de segmentation est due à un bogue dans l'application. Techniquement, cela signifie que l'application essaie de lire ou d'écrire sur une partie de la mémoire qui ne lui appartient pas (ou n'existe pas). Il est bien entendu interdit de lire ou d'écrire dans la mémoire de quelqu'un d'autre et lorsque le système (noyau) le détecte, il forcera l'application à quitter.

    
réponse donnée Vojtech Trefny 17.05.2012 - 16:09
la source
0

L'époque où les utilisateurs avaient l'habitude de suivre le code de l'assemblage et de résoudre un problème était révolue. Abends, Dr Watson, erreur de segmentation. Ces jours verts sont partis.

L'une des raisons d'une erreur de segmentation réside dans l'échec du code qui accède directement à la mémoire. Lorsqu'un morceau de code tente d'accéder au segment de mémoire d'une autre application, une erreur de segmentation se produit. Les allocations de mémoire sont parfois déplacées pour permettre l'allocation de blocs de mémoire contigus plus importants. Pendant qu'il tente de récupérer, le noyau essaie de sauvegarder toutes ses informations de mémoire dans un fichier, l'état actuel de toutes les applications s'exécutant sur le processeur et leur état (dernier lancement des instructions) dans un fichier et de mourir. Il essaiera également de stocker autant d'informations de récupération que possible et de fermer autant de fichiers que possible, afin que les liens du disque dur ne soient pas rompus.

Déboguez-le et corrigez-le si vous pouvez le reproduire souvent. Si vous ne pouvez pas le reproduire, joignez-vous simplement à vos mains, agenouillez-vous et priez comme l'enfer que vous ne le voyez pas "régulièrement".

    
réponse donnée Siddharth 18.01.2013 - 06:34
la source

Lire d'autres questions sur les étiquettes