diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 67ada3088..6ad7ed44e 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2003-01-14 Corinna Vinschen + + * mmap.cc (fixup_mmaps_after_fork): Copy protection to child process. + Change ambiguous debug output. + 2003-01-14 Corinna Vinschen * mmap.cc (mmap_record::access): Change argument type to caddr_t diff --git a/winsup/cygwin/mmap.cc b/winsup/cygwin/mmap.cc index 4b7329cb6..08da3b823 100644 --- a/winsup/cygwin/mmap.cc +++ b/winsup/cygwin/mmap.cc @@ -1006,21 +1006,29 @@ fixup_mmaps_after_fork (HANDLE parent) } else { - BOOL ret, ret2; + BOOL ret; + DWORD dummy_prot; + ret = ReadProcessMemory (parent, address, address, getpagesize (), NULL); - ret2 = VirtualProtectEx(parent, - address, getpagesize (), - old_prot, &old_prot); - if (!ret2) - system_printf ("WARNING: VirtualProtectEx to" + if (!VirtualProtectEx(parent, + address, getpagesize (), + old_prot, &dummy_prot)) + system_printf ("WARNING: VirtualProtectEx to " "return to previous state " "in parent failed for " "MAP_PRIVATE address %p, %E", rec->get_address ()); + if (!VirtualProtect (address, getpagesize (), + old_prot, &dummy_prot)) + system_printf ("WARNING: VirtualProtect to copy " + "protection to child failed for" + "MAP_PRIVATE address %p, %E", + rec->get_address ()); if (!ret) { - system_printf ("ReadProcessMemory FAILED for " + system_printf ("ReadProcessMemory (2nd try) " + "failed for " "MAP_PRIVATE address %p, %E", rec->get_address ()); return -1;