From 19bf43c604522a24d74783e51d3e8661e5ef4bc6 Mon Sep 17 00:00:00 2001 From: Naoyuki Sawa Date: Wed, 2 May 2018 13:10:23 +0900 Subject: [PATCH] Fix register_dynamic_libraries on Windows 10 Issue #219 (bdwgc). In the past (Windows XP, Windows 7, and older Windows 10), VirtualQuery always returned PAGE_READWRITE for the data section. In the April 2018 Update of Windows 10, it seems that PAGE_WRITECOPY is returned sometimes (thus causing GC_register_dynamic_libraries not to call GC_cond_add_roots for the section). * dyn_load.c [MSWIN32 || MSWINCE || CYGWIN32] (GC_register_dynamic_libraries): Call GC_cond_add_roots() also for PAGE_EXECUTE_WRITECOPY and PAGE_WRITECOPY pages. --- dyn_load.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dyn_load.c b/dyn_load.c index 190dc10..9320adb 100644 --- a/dyn_load.c +++ b/dyn_load.c @@ -1030,7 +1030,9 @@ GC_INNER void GC_register_dynamic_libraries(void) protect = buf.Protect; if (buf.State == MEM_COMMIT && (protect == PAGE_EXECUTE_READWRITE - || protect == PAGE_READWRITE) + || protect == PAGE_EXECUTE_WRITECOPY + || protect == PAGE_READWRITE + || protect == PAGE_WRITECOPY) && (buf.Type == MEM_IMAGE # ifdef GC_REGISTER_MEM_PRIVATE || (protect == PAGE_READWRITE && buf.Type == MEM_PRIVATE) -- 2.7.4