Added assertion checking to a whole bunch of mmap() and munmap() calls. I used
assertions because if these calls fail, it's a bug in Valgrind.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2474 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_main.c b/coregrind/vg_main.c
index 7087343..14c302b 100644
--- a/coregrind/vg_main.c
+++ b/coregrind/vg_main.c
@@ -501,6 +501,9 @@
static void layout_remaining_space(float ratio)
{
+ Int ires;
+ void* vres;
+
/* This tries to give the client as large as possible address space while
* taking into account the tool's shadow needs. */
addr_t client_size = ROUNDDN((VG_(valgrind_base) - REDZONE_SIZE) / (1. + ratio),
@@ -542,17 +545,21 @@
#undef SEGSIZE
// Ban redzone
- mmap((void *)VG_(client_end), REDZONE_SIZE, PROT_NONE,
- MAP_FIXED|MAP_ANON|MAP_PRIVATE, -1, 0);
+ vres = mmap((void *)VG_(client_end), REDZONE_SIZE, PROT_NONE,
+ MAP_FIXED|MAP_ANON|MAP_PRIVATE, -1, 0);
+ vg_assert((void*)-1 != vres);
// Make client hole
- munmap((void*)VG_(client_base), client_size);
+ ires = munmap((void*)VG_(client_base), client_size);
+ vg_assert(0 == ires);
// Map shadow memory.
// Initially all inaccessible, incrementally initialized as it is used
- if (shadow_size != 0)
- mmap((char *)VG_(shadow_base), shadow_size, PROT_NONE,
- MAP_PRIVATE|MAP_ANON|MAP_FIXED, -1, 0);
+ if (shadow_size != 0) {
+ vres = mmap((char *)VG_(shadow_base), shadow_size, PROT_NONE,
+ MAP_PRIVATE|MAP_ANON|MAP_FIXED, -1, 0);
+ vg_assert((void*)-1 != vres);
+ }
}
/*====================================================================*/
@@ -980,6 +987,7 @@
const struct exeinfo *info,
UInt** client_auxv)
{
+ void* res;
char **cpp;
char *strtab; /* string table */
char *stringbase;
@@ -1066,11 +1074,10 @@
/* ==================== allocate space ==================== */
/* allocate a stack - mmap enough space for the stack */
- mmap((void *)PGROUNDDN(cl_esp),
- VG_(client_end) - PGROUNDDN(cl_esp),
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0);
-
+ res = mmap((void *)PGROUNDDN(cl_esp), VG_(client_end) - PGROUNDDN(cl_esp),
+ PROT_READ | PROT_WRITE | PROT_EXEC,
+ MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0);
+ vg_assert((void*)-1 != res);
/* ==================== copy client stack ==================== */