diff options
author | Naoyuki Sawa <sawa_naoyuki-1@yahoo.co.jp> | 2018-05-02 13:10:23 +0900 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2018-05-03 10:02:15 +0300 |
commit | 19bf43c604522a24d74783e51d3e8661e5ef4bc6 (patch) | |
tree | f6a10febd406ba7f66444e495db74cb8a109a1f0 /dyn_load.c | |
parent | b76c7a02ab8393d2602351ef61908aa5d32d44d9 (diff) | |
download | bdwgc-19bf43c604522a24d74783e51d3e8661e5ef4bc6.tar.gz |
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.
Diffstat (limited to 'dyn_load.c')
-rw-r--r-- | dyn_load.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -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) |