¿Qué Significa Esta Advertencia De Valgrind? - warning set address range perms


Cuando estaba ejecutando mi programa contra valgrind, me encontré con la siguiente advertencia.

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)

Después de buscar en Google, encontré en aquí que es un Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions, lo que no me dice mucho.

Mi programa asigna una gran cantidad de memoria en el montón. (Puede alcanzar 2-3 GB de ram después de un montón de realloc's)

Sin embargo, la advertencia apareció a pesar de que ninguna de las asignaciones falló.

Entonces, me pregunto qué significa realmente este mensaje? No tengo ningún tipo de memoria permiso? (Pero la asignación tuvo éxito)

Author: jsj, 2012-11-26

1 answers

Solo significa que los permisos cambiaron en un bloque de memoria particularmente grande.

Eso puede suceder debido a algo como una llamada a mprotect o cuando se produce una asignación o desasignación de memoria muy grande, por ejemplo, una llamada mmap o munmap.

El primero que listamos es establecer alrededor de 320mb de memoria en undefined que es muy probablemente una nueva asignación, que se marcará como indefinida inicialmente. Los otros están estableciendo bloques de tamaño similar a noaccess que probablemente se refiere a una desasignación de la memoria.

 62
Author: TomH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-26 15:46:28