When launching an application using VLD, I get an access violation.
Already tried building VLD from source, and I get the same problem.
I remember happening before, and doing nothing special. Eventually started working again.
Today started crashing again, and I don't remember changing anything that could cause this.
Maybe something related to DLL loading order.
I've track down the problem to VOID VisualLeakDetector::RefreshModules(), line 1864.
It seems it tries to free resources from the old module list, when that list is null.
I could just put a check around that code and not try to do free the modules list, but probably that list shouldn't be empty at that point, and I'll be hiding the problem that causes it in the first place?
Call stack:
> vld_x64.dll!CriticalSection::Enter() Line 18 C++
vld_x64.dll!CriticalSectionLocker::CriticalSectionLocker(CriticalSection & cs) Line 54 C++
vld_x64.dll!Tree<moduleinfo_t>::begin() Line 149 C++
vld_x64.dll!Set<moduleinfo_t>::begin() Line 245 C++
vld_x64.dll!VisualLeakDetector::RefreshModules() Line 1864 C++
vld_x64.dll!VisualLeakDetector::_LdrLoadDllWin8(unsigned __int64 reserved, unsigned long * flags, unicodestring_t * modulename, void * * modulehandle) Line 1837 C++
KernelBase.dll!LoadLibraryExW() Unknown
user32.dll!_InitializeImmEntryTable() Unknown
user32.dll!_UserClientDllInitialize() Unknown
ntdll.dll!LdrpCallInitRoutine() Unknown
ntdll.dll!LdrpInitializeNode() Unknown
ntdll.dll!LdrpInitializeGraph() Unknown
ntdll.dll!LdrpInitializeGraph() Unknown
ntdll.dll!LdrpPrepareModuleForExecution() Unknown
ntdll.dll!LdrGetProcedureAddressForCaller() Unknown
KernelBase.dll!GetProcAddress() Unknown
vld_x64.dll!VisualLeakDetector::_RGetProcAddress(HINSTANCE__ * module, const char * procname) Line 1790 C++
vld_x64.dll!PatchImport(HINSTANCE__ * importmodule, moduleentry_t * module) Line 479 C++
vld_x64.dll!PatchModule(HINSTANCE__ * importmodule, moduleentry_t * patchtable, unsigned int tablesize) Line 560 C++
vld_x64.dll!VisualLeakDetector::attachToLoadedModules(Set<moduleinfo_t> * newmodules) Line 624 C++
vld_x64.dll!VisualLeakDetector::VisualLeakDetector() Line 252 C++
vld_x64.dll!`dynamic initializer for 'g_vld''() Line 60 C++
vld_x64.dll!_initterm(void (void) * * pfbegin, void (void) * * pfend) Line 894 C
vld_x64.dll!_cinit(int initFloatingPrecision) Line 303 C
vld_x64.dll!_CRT_INIT(void * hDllHandle, unsigned long dwReason, void * lpreserved) Line 127 C
vld_x64.dll!__DllMainCRTStartup(void * hDllHandle, unsigned long dwReason, void * lpreserved) Line 362 C
vld_x64.dll!_DllMainCRTStartup(void * hDllHandle, unsigned long dwReason, void * lpreserved) Line 332 C
ntdll.dll!LdrpCallInitRoutine() Unknown
ntdll.dll!LdrpInitializeNode() Unknown
ntdll.dll!LdrpInitializeGraph() Unknown
ntdll.dll!LdrpInitializeGraph() Unknown
ntdll.dll!LdrpInitializeProcess() Unknown
ntdll.dll!_LdrpInitialize() Unknown
ntdll.dll!LdrInitializeThunk() Unknown
Comments: Should be fixed in 2.4
Already tried building VLD from source, and I get the same problem.
I remember happening before, and doing nothing special. Eventually started working again.
Today started crashing again, and I don't remember changing anything that could cause this.
Maybe something related to DLL loading order.
I've track down the problem to VOID VisualLeakDetector::RefreshModules(), line 1864.
It seems it tries to free resources from the old module list, when that list is null.
I could just put a check around that code and not try to do free the modules list, but probably that list shouldn't be empty at that point, and I'll be hiding the problem that causes it in the first place?
Call stack:
> vld_x64.dll!CriticalSection::Enter() Line 18 C++
vld_x64.dll!CriticalSectionLocker::CriticalSectionLocker(CriticalSection & cs) Line 54 C++
vld_x64.dll!Tree<moduleinfo_t>::begin() Line 149 C++
vld_x64.dll!Set<moduleinfo_t>::begin() Line 245 C++
vld_x64.dll!VisualLeakDetector::RefreshModules() Line 1864 C++
vld_x64.dll!VisualLeakDetector::_LdrLoadDllWin8(unsigned __int64 reserved, unsigned long * flags, unicodestring_t * modulename, void * * modulehandle) Line 1837 C++
KernelBase.dll!LoadLibraryExW() Unknown
user32.dll!_InitializeImmEntryTable() Unknown
user32.dll!_UserClientDllInitialize() Unknown
ntdll.dll!LdrpCallInitRoutine() Unknown
ntdll.dll!LdrpInitializeNode() Unknown
ntdll.dll!LdrpInitializeGraph() Unknown
ntdll.dll!LdrpInitializeGraph() Unknown
ntdll.dll!LdrpPrepareModuleForExecution() Unknown
ntdll.dll!LdrGetProcedureAddressForCaller() Unknown
KernelBase.dll!GetProcAddress() Unknown
vld_x64.dll!VisualLeakDetector::_RGetProcAddress(HINSTANCE__ * module, const char * procname) Line 1790 C++
vld_x64.dll!PatchImport(HINSTANCE__ * importmodule, moduleentry_t * module) Line 479 C++
vld_x64.dll!PatchModule(HINSTANCE__ * importmodule, moduleentry_t * patchtable, unsigned int tablesize) Line 560 C++
vld_x64.dll!VisualLeakDetector::attachToLoadedModules(Set<moduleinfo_t> * newmodules) Line 624 C++
vld_x64.dll!VisualLeakDetector::VisualLeakDetector() Line 252 C++
vld_x64.dll!`dynamic initializer for 'g_vld''() Line 60 C++
vld_x64.dll!_initterm(void (void) * * pfbegin, void (void) * * pfend) Line 894 C
vld_x64.dll!_cinit(int initFloatingPrecision) Line 303 C
vld_x64.dll!_CRT_INIT(void * hDllHandle, unsigned long dwReason, void * lpreserved) Line 127 C
vld_x64.dll!__DllMainCRTStartup(void * hDllHandle, unsigned long dwReason, void * lpreserved) Line 362 C
vld_x64.dll!_DllMainCRTStartup(void * hDllHandle, unsigned long dwReason, void * lpreserved) Line 332 C
ntdll.dll!LdrpCallInitRoutine() Unknown
ntdll.dll!LdrpInitializeNode() Unknown
ntdll.dll!LdrpInitializeGraph() Unknown
ntdll.dll!LdrpInitializeGraph() Unknown
ntdll.dll!LdrpInitializeProcess() Unknown
ntdll.dll!_LdrpInitialize() Unknown
ntdll.dll!LdrInitializeThunk() Unknown
Comments: Should be fixed in 2.4