QU'est-ce que SEGV MAPERR?

Qu'est-Ce que SEGV_MAPERR, pourquoi est-il toujours venir avec SIGSEGV?

62
demandé sur ks1322 2009-06-16 11:29:24

2 réponses

C'est un défaut de segmentation. Très probablement un problème de pointeur qui pend, ou une sorte de débordement de tampon.

SIGSSEGV est le signal qui le termine en fonction du problème, faute de segmentation.

Vérifiez les pointeurs pendants ainsi que le problème de débordement.

L'activation des vidages de base vous aidera à déterminer le problème.

37
répondu Sev 2015-03-15 11:18:49

Il existe deux types courants de SEGV , qui est une erreur résultant d'un accès mémoire non valide:

  1. on a accédé à une page qui avait les mauvaises autorisations. Par exemple, il était en lecture seule mais votre code a essayé d'y écrire. Cela sera signalé comme SEGV_ACCERR.
  2. on a accédé à une page qui n'est même pas mappée dans l'espace d'adressage de l'application. Cela résultera souvent du déréférencement d'un pointeur null ou d'un pointeur corrompu avec un petit valeur entière. Ceci est rapporté comme SEGV_MAPERR .

La Documentation d'un tri (code source Linux indexé) pour SEGV_MAPERR est ici: http://lxr.free-electrons.com/ident?i=SEGV_MAPERR .

143
répondu ahcox 2017-10-31 18:10:34