91 votes

Que signifie cet avertissement de Valgrind ? - warning set address range perms

Lorsque j'ai exécuté mon programme avec valgrind, j'ai rencontré l'avertissement suivant.

Warning: set address range perms: large range [0x4d59d040, 0x6159d040) (undefined)
Warning: set address range perms: large range [0x194f7030, 0x2d4f7050) (noaccess)
Warning: set address range perms: large range [0x3959d030, 0x6159d050) (noaccess)

Après quelques recherches sur Google, j'ai trouvé à ici qu'il s'agit d'un Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions ce qui ne me dit pas grand-chose.

Mon programme alloue une grande quantité de mémoire sur le tas. (Il peut atteindre 2 à 3 Go de mémoire vive après un grand nombre d'opérations. realloc 's)

Cependant, l'avertissement est apparu alors qu'aucune des allocations n'a échoué.

Alors, je me demande ce que ce message signifie vraiment ? Je n'ai pas une sorte de permission de mémoire ? (Mais l'allocation a réussi)

95voto

TomH Points 3681

Cela signifie simplement que les permissions ont changé sur un bloc de mémoire particulièrement grand.

Cela peut se produire à cause de quelque chose comme un appel à mprotect ou lorsqu'une allocation ou une désallocation de mémoire très importante se produit - une mmap o munmap appeler par exemple.

La première que vous énumérez met environ 320Mb de mémoire pour undefined qui est très probablement une nouvelle allocation, qui sera marquée comme indéfinie initialement. Les autres mettent tous les deux des blocs de taille similaire à noaccess qui est probablement lié à une désallocation de la mémoire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X