Fix two issues detected by Valgrind (#34462)
authorJan Vorlicek <janvorli@microsoft.com>
Fri, 3 Apr 2020 11:39:35 +0000 (13:39 +0200)
committerGitHub <noreply@github.com>
Fri, 3 Apr 2020 11:39:35 +0000 (13:39 +0200)
* Fix two issues detected by Valgrind

When I have used Valgrind to investigate a memory corruption issue recently,
I've noticed that it has also reported two cases when a conditional jump
was using an uninitialized variable as one of the inputs to the condition.

This change fixes these.

src/coreclr/src/vm/threads.cpp
src/coreclr/src/vm/win32threadpool.cpp

index ea35e58cc3300f02fec1de96174eec86c093d8dd..2a22f8952bc1ed90a2a80e6102f90e26b3daf73d 100644 (file)
@@ -1539,6 +1539,10 @@ Thread::Thread()
     m_DeserializationTracker = NULL;
 
     m_currentPrepareCodeConfig = nullptr;
+
+#ifdef _DEBUG
+    memset(dangerousObjRefs, 0, sizeof(dangerousObjRefs));
+#endif // _DEBUG
 }
 
 //--------------------------------------------------------------------
index b50cf6b4566dfa3db2e19c0b44589d89711e1e28..3d5ec4c7f277538c2c11e6624ea5dd4b72b23f95 100644 (file)
@@ -4119,6 +4119,8 @@ DWORD WINAPI ThreadpoolMgr::GateThreadStart(LPVOID lpArgs)
     GetCPUBusyTime_NT(&prevCPUInfo);
 #else // !TARGET_UNIX
     PAL_IOCP_CPU_INFORMATION prevCPUInfo;
+    memset(&prevCPUInfo, 0, sizeof(prevCPUInfo));
+
     GetCPUBusyTime_NT(&prevCPUInfo);                  // ignore return value the first time
 #endif // !TARGET_UNIX