aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2003-01-16 14:11:10 +0000
committerCorinna Vinschen <corinna@vinschen.de>2003-01-16 14:11:10 +0000
commit41429bc99b584a94e167f1421533285e1171c13a (patch)
tree8bfff9cac61d441e0fd0d7a16c7abe9a9a5a4e72
parent0036d6bdaace3e1d12cdac0f27bc396248914dba (diff)
downloadnewlib-41429bc99b584a94e167f1421533285e1171c13a.zip
newlib-41429bc99b584a94e167f1421533285e1171c13a.tar.gz
newlib-41429bc99b584a94e167f1421533285e1171c13a.tar.bz2
* mmap.cc (fixup_mmaps_after_fork): Add ERROR_NOACCESS to the list of
ReadProcessMemory() error codes that trigger a retry with temporary PAGE_READONLY access. Note that this can occur on NT 4.0.
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/mmap.cc6
2 files changed, 10 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 956a7fb..e9c3a20 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,9 @@
+2003-01-16 Jason Tishler <jason@tishler.net>
+
+ * mmap.cc (fixup_mmaps_after_fork): Add ERROR_NOACCESS to the list of
+ ReadProcessMemory() error codes that trigger a retry with temporary
+ PAGE_READONLY access. Note that this can occur on NT 4.0.
+
2003-01-15 Christopher Faylor <cgf@redhat.com>
* path.cc (normalize_posix_path): Convert win32 path separators to
diff --git a/winsup/cygwin/mmap.cc b/winsup/cygwin/mmap.cc
index d1fe5d7..37b8faf 100644
--- a/winsup/cygwin/mmap.cc
+++ b/winsup/cygwin/mmap.cc
@@ -986,9 +986,11 @@ fixup_mmaps_after_fork (HANDLE parent)
getpagesize (), NULL))
{
DWORD old_prot;
+ DWORD last_error = GetLastError ();
- if (GetLastError () != ERROR_PARTIAL_COPY ||
- !wincap.virtual_protect_works_on_shared_pages ())
+ if (last_error != ERROR_PARTIAL_COPY
+ && last_error != ERROR_NOACCESS
+ || !wincap.virtual_protect_works_on_shared_pages ())
{
system_printf ("ReadProcessMemory failed for "
"MAP_PRIVATE address %p, %E",