Index: handler/win/crashy_test_program.cc |
diff --git a/handler/win/crashy_test_program.cc b/handler/win/crashy_test_program.cc |
index 0694a88b5fa18c16777f911aa308e008844a4bcf..5eaa284f33e73ce3085359c1382a16dba5c20af8 100644 |
--- a/handler/win/crashy_test_program.cc |
+++ b/handler/win/crashy_test_program.cc |
@@ -117,9 +117,20 @@ int CrashyMain(int argc, char* argv[]) { |
AllocateMemoryOfVariousProtections(); |
- CrashpadInitializeCriticalSectionEx( |
- &g_test_critical_section, 0, RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO); |
- EnterCriticalSection(&g_test_critical_section); |
+ |
+ DWORD cs_flags = 0; |
+ |
+ // We can only force the .DebugInfo critical section on Win 8 and later. |
+ DWORD version = GetVersion(); |
+ DWORD major_version = LOBYTE(LOWORD(version)); |
+ DWORD minor_version = HIBYTE(LOWORD(version)); |
+ if (major_version >= 6 && minor_version >= 2) |
Mark Mentovai
2015/10/16 03:36:44
This condition doesn’t seem quite right, it won’t
scottmg
2015/10/16 19:29:00
It happens to work because we're unmanifested, but
|
+ cs_flags = RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO; |
+ |
+ if (CrashpadInitializeCriticalSectionEx( |
+ &g_test_critical_section, 0, cs_flags)) { |
+ EnterCriticalSection(&g_test_critical_section); |
+ } |
SomeCrashyFunction(); |