From 6ab1b8a4b1523dfd0f78acce4419ce70ced7d7f9 Mon Sep 17 00:00:00 2001 From: Johannes Totz Date: Mon, 24 Jan 2011 18:11:52 +0000 Subject: [PATCH] gc_init() is a better place for this warning Conflicts: misc.c win32_threads.c --- misc.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/misc.c b/misc.c index 6c01404e..8145890f 100644 --- a/misc.c +++ b/misc.c @@ -852,6 +852,33 @@ GC_API void GC_CALL GC_init(void) # else initial_heap_sz = (word)MINHINCR; # endif + +#ifdef GC_DEBUG +#ifndef _WIN64 + { + // wow64: running 32-bit-gc on 64-bit-sys is broken! + // code copied from msdn docs example + typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL); + LPFN_ISWOW64PROCESS fnIsWow64Process = 0; + fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(GetModuleHandleA("kernel32"), "IsWow64Process"); + if (NULL != fnIsWow64Process) + { + BOOL bIsWow64 = FALSE; + if (fnIsWow64Process(GetCurrentProcess(), &bIsWow64)) + { + if (bIsWow64) + MessageBoxA(NULL, + "This program uses the BDWGC garbage collector compiled for 32-bit " + "but running on a 64-bit version of Windows.\n" + "This is known to be broken due to a design flaw in Windows itself! Expect erratic behaviour...", + "32-bit program running on 64-bit system", + MB_ICONWARNING | MB_OK); + } + } + } +#endif +#endif + DISABLE_CANCEL(cancel_state); /* Note that although we are nominally called with the */ /* allocation lock held, the allocation lock is now */ -- 2.40.0