QFileDialog Memory Leaks & PipeExceptions



  • Hi,

    ich nutze QT5.4 mit MSVC2013 Professional (Update 4) in x86 Debug-Konfiguration auf Windows10 mit Visual Leak Detector 2.4RC2. Folgendes einfache Programm bringt Probleme mit sich:

    #include <vld.h>
    #include <QtWidgets/QApplication>
    #include <QFileDialog>
    
    int main(int argc, char *argv[])
    {
    	int rv = 0;
    	{
    		QApplication a(argc, argv);
    		QFileDialog d;
    		d.exec();
    	}
    
    	return rv;
    }
    

    Beim Öffnen des Dialogs erhalte ich mehrere dutzend mal folgende Meldung:

    Ausnahme (erste Chance) bei 0x74E33E28 in HandMatrixTest.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.

    Die gesamte Ausgabe habe ich jetzt mal stark gekürzt, aber im Endeffekt kommt so was raus:

    WARNING: Visual Leak Detector: A module, dui70.dll, included in memory leak detection
    does not have any debugging symbols available, or they could not be located.
    Function names and/or line numbers for this module may not be available.
    WARNING: Visual Leak Detector: A module, duser.dll, included in memory leak detection
    does not have any debugging symbols available, or they could not be located.
    Function names and/or line numbers for this module may not be available.

    Ausnahme (erste Chance) bei 0x74E33E28 (KernelBase.dll) in Test.exe: 0x000006BA: Der RPC-Server ist nicht verfügbar
    Der Thread 0x214c hat mit Code 0 (0x0) geendet.
    Der Thread 0x3e94 hat mit Code 0 (0x0) geendet.
    Der Thread 0x770 hat mit Code 0 (0x0) geendet.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\apphelp.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    Der Thread 0xb8 hat mit Code 0 (0x0) geendet.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\dlnashext.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    Der Thread 0x407c hat mit Code 0 (0x0) geendet.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\PlayToDevice.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\twinapi.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\DevDispItemProvider.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\MMDevAPI.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\wpdshext.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\GdiPlus.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\PortableDeviceApi.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\ntshrui.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\srvcli.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\setupapi.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\wintrust.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\msasn1.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\crypt32.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    WARNING: Visual Leak Detector: A module, ntlanman.dll, included in memory leak detection
    does not have any debugging symbols available, or they could not be located.
    Function names and/or line numbers for this module may not be available.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\audiodev.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\WMVCORE.DLL" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\WMASF.DLL" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\mfperfhelper.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\msieftp.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\urlmon.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\shdocvw.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\wininet.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\version.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\psapi.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\cabinet.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\winhttp.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\wsock32.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\networkexplorer.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\mswsock.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\msvcr110.dll" geladen. Symbole wurden geladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\msvcp110.dll" geladen. Symbole wurden geladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\Wldap32.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\secur32.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\cbfsMntNtf4.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    Der Thread 0x1848 hat mit Code 183 (0xb7) geendet.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\mssprxy.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    Ausnahme (erste Chance) bei 0x74E33E28 in Test.exe: Microsoft C++-Ausnahme: sec::PipeException bei Speicherort 0x0565D0B8.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\msftedit.dll" wurde entladen.
    Der Thread 0x2a00 hat mit Code 0 (0x0) geendet.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\WMASF.DLL" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\mfperfhelper.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\WMVCORE.DLL" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\audiodev.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\GdiPlus.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\wpdshext.dll" wurde entladen.
    Der Thread 0x34c8 hat mit Code 0 (0x0) geendet.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\twinapi.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\thumbcache.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\comctl32.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\comdlg32.dll" wurde entladen.
    Der Thread 0x2500 hat mit Code 0 (0x0) geendet.
    Der Thread 0x1194 hat mit Code 0 (0x0) geendet.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\mssprxy.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\networkexplorer.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\wintrust.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\setupapi.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\PortableDeviceApi.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\BCP47Langs.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\globinputhost.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\Windows.Globalization.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\d2d1.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\dxgi.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\d3d11.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\dcomp.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\twinapi.appcore.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\DataExchange.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\Windows.Storage.Search.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\dlnashext.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\MMDevAPI.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\ExplorerFrame.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\PlayToDevice.dll" wurde entladen.
    "Test.exe" (Win32): "C:\Windows\SysWOW64\actxprxy.dll" wurde entladen.
    Der Thread 0x2d5c hat mit Code 0 (0x0) geendet.
    Der Thread 0x2044 hat mit Code 0 (0x0) geendet.
    Der Thread 0x13ac hat mit Code 0 (0x0) geendet.
    Der Thread 0xec4 hat mit Code 0 (0x0) geendet.
    Der Thread 0x21a4 hat mit Code 0 (0x0) geendet.
    Der Thread 0x14f4 hat mit Code 0 (0x0) geendet.
    Der Thread 0x2638 hat mit Code 0 (0x0) geendet.
    Der Thread 0x3048 hat mit Code 0 (0x0) geendet.
    Der Thread 0x20ac hat mit Code 0 (0x0) geendet.
    Der Thread 0x3a38 hat mit Code 0 (0x0) geendet.
    Der Thread 0x40fc hat mit Code 0 (0x0) geendet.
    Der Thread 0x2930 hat mit Code 0 (0x0) geendet.
    Der Thread 0x19d4 hat mit Code 0 (0x0) geendet.
    Der Thread 0x3490 hat mit Code 0 (0x0) geendet.
    Der Thread 0x26dc hat mit Code 0 (0x0) geendet.
    Der Thread 0x1c40 hat mit Code 0 (0x0) geendet.
    Der Thread 0x324 hat mit Code 0 (0x0) geendet.
    Der Thread 0x3ad8 hat mit Code 0 (0x0) geendet.
    Der Thread 0x2a64 hat mit Code 0 (0x0) geendet.
    WARNING: Visual Leak Detector detected memory leaks!

    ---------- Block 6962 at 0x0E4E90A0: 21920 bytes ----------
    Leak Hash: 0xEB4D2B1F, Count: 1, Total 21920 bytes
    Call Stack (TID 10852):
    0x77C2DA90 (File and line number not available): ntdll.dll!RtlAllocateHeap
    0x02C0CCF3 (File and line number not available): dbghelp.dll!ImageRvaToVa + 0x403 bytes
    0x02C214B1 (File and line number not available): dbghelp.dll!ImagehlpApiVersionEx + 0x9C1 bytes
    0x02C19585 (File and line number not available): dbghelp.dll!SymLoadModuleExW + 0x65 bytes
    0x0321F1D5 (File and line number not available): vld_x86.dll!(Function name unavailable)
    0x0321FB8D (File and line number not available): vld_x86.dll!(Function name unavailable)
    0x0321FC1B (File and line number not available): vld_x86.dll!(Function name unavailable)
    0x74E294E9 (File and line number not available): KERNELBASE.dll!LoadLibraryExW + 0x149 bytes
    0x7643C790 (File and line number not available): windows.storage.dll!SHCoCreateInstanceWorker + 0x610 bytes
    0x764518F6 (File and line number not available): windows.storage.dll!DllGetClassObject + 0x14B06 bytes
    0x764AFCA8 (File and line number not available): windows.storage.dll!CFSFolder_CreateEnum + 0x3D38 bytes
    0x5B94C2A1 (File and line number not available): (Module name unavailable)!DllGetClassObject + 0xDBB1 bytes
    0x5B9504E2 (File and line number not available): (Module name unavailable)!DllGetClassObject + 0x11DF2 bytes
    0x764C3C14 (File and line number not available): windows.storage.dll!SHCreateDefaultExtractIcon + 0x4704 bytes
    0x764C2C39 (File and line number not available): windows.storage.dll!SHCreateDefaultExtractIcon + 0x3729 bytes
    0x764C2B68 (File and line number not available): windows.storage.dll!SHCreateDefaultExtractIcon + 0x3658 bytes
    0x75FF5E94 (File and line number not available): shcore.dll!Ordinal234 + 0x224 bytes
    0x77C19C04 (File and line number not available): ntdll.dll!LdrRegisterDllNotification + 0x1F4 bytes
    0x77C24C5D (File and line number not available): ntdll.dll!EtwNotificationRegister + 0x8ED bytes
    0x75653744 (File and line number not available): KERNEL32.DLL!BaseThreadInitThunk + 0x24 bytes
    0x77C4A064 (File and line number not available): ntdll.dll!RtlSetCurrentTransaction + 0xD4 bytes
    0x77C4A02F (File and line number not available): ntdll.dll!RtlSetCurrentTransaction + 0x9F bytes
    Data:
    C0 62 6C 04 30 81 2D 05 00 00 D7 74 00 00 00 00 .bl.0.-. ...t....
    00 E0 00 00 00 00 00 00 00 00 00 00 00 00 4D 00 ........ ......M.
    53 00 41 00 53 00 4E 00 31 00 00 00 00 00 00 00 S.A.S.N. 1.......
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........

    ---------- Block 6994 at 0x0E4EE658: 21920 bytes ----------
    Leak Hash: 0xEB4D2B1F, Count: 1, Total 21920 bytes
    Call Stack (TID 10852):
    0x77C2DA90 (File and line number not available): ntdll.dll!RtlAllocateHeap
    0x02C0CCF3 (File and line number not available): dbghelp.dll!ImageRvaToVa + 0x403 bytes
    0x02C214B1 (File and line number not available): dbghelp.dll!ImagehlpApiVersionEx + 0x9C1 bytes
    0x02C19585 (File and line number not available): dbghelp.dll!SymLoadModuleExW + 0x65 bytes
    0x0321F1D5 (File and line number not available): vld_x86.dll!(Function name unavailable)
    0x0321FB8D (File and line number not available): vld_x86.dll!(Function name unavailable)
    0x0321FC1B (File and line number not available): vld_x86.dll!(Function name unavailable)
    0x74E294E9 (File and line number not available): KERNELBASE.dll!LoadLibraryExW + 0x149 bytes
    0x7643C790 (File and line number not available): windows.storage.dll!SHCoCreateInstanceWorker + 0x610 bytes
    0x764518F6 (File and line number not available): windows.storage.dll!DllGetClassObject + 0x14B06 bytes
    0x764AFCA8 (File and line number not available): windows.storage.dll!CFSFolder_CreateEnum + 0x3D38 bytes
    0x5B94C2A1 (File and line number not available): (Module name unavailable)!DllGetClassObject + 0xDBB1 bytes
    0x5B9504E2 (File and line number not available): (Module name unavailable)!DllGetClassObject + 0x11DF2 bytes
    0x764C3C14 (File and line number not available): windows.storage.dll!SHCreateDefaultExtractIcon + 0x4704 bytes
    0x764C2C39 (File and line number not available): windows.storage.dll!SHCreateDefaultExtractIcon + 0x3729 bytes
    0x764C2B68 (File and line number not available): windows.storage.dll!SHCreateDefaultExtractIcon + 0x3658 bytes
    0x75FF5E94 (File and line number not available): shcore.dll!Ordinal234 + 0x224 bytes
    0x77C19C04 (File and line number not available): ntdll.dll!LdrRegisterDllNotification + 0x1F4 bytes
    0x77C24C5D (File and line number not available): ntdll.dll!EtwNotificationRegister + 0x8ED bytes
    0x75653744 (File and line number not available): KERNEL32.DLL!BaseThreadInitThunk + 0x24 bytes
    0x77C4A064 (File and line number not available): ntdll.dll!RtlSetCurrentTransaction + 0xD4 bytes
    0x77C4A02F (File and line number not available): ntdll.dll!RtlSetCurrentTransaction + 0x9F bytes
    Data:
    10 3C 4F 0E E8 3A 4E 0E 00 00 31 75 00 00 00 00 .<O..:N. ..1u....
    00 50 17 00 00 00 00 00 00 00 00 00 00 00 43 00 .P...... ......C.
    52 00 59 00 50 00 54 00 33 00 32 00 00 00 00 00 R.Y.P.T. 3.2.....
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........

    ---------- Block 7084 at 0x0E4F3C10: 21920 bytes ----------
    Leak Hash: 0xEB4D2B1F, Count: 1, Total 21920 bytes
    Call Stack (TID 10852):
    0x77C2DA90 (File and line number not available): ntdll.dll!RtlAllocateHeap
    0x02C0CCF3 (File and line number not available): dbghelp.dll!ImageRvaToVa + 0x403 bytes
    0x02C214B1 (File and line number not available): dbghelp.dll!ImagehlpApiVersionEx + 0x9C1 bytes
    0x02C19585 (File and line number not available): dbghelp.dll!SymLoadModuleExW + 0x65 bytes
    0x0321F1D5 (File and line number not available): vld_x86.dll!(Function name unavailable)
    0x0321FB8D (File and line number not available): vld_x86.dll!(Function name unavailable)
    0x0321FC1B (File and line number not available): vld_x86.dll!(Function name unavailable)
    0x74E294E9 (File and line number not available): KERNELBASE.dll!LoadLibraryExW + 0x149 bytes
    0x7643C790 (File and line number not available): windows.storage.dll!SHCoCreateInstanceWorker + 0x610 bytes
    0x764518F6 (File and line number not available): windows.storage.dll!DllGetClassObject + 0x14B06 bytes
    0x764AFCA8 (File and line number not available): windows.storage.dll!CFSFolder_CreateEnum + 0x3D38 bytes
    0x5B94C2A1 (File and line number not available): (Module name unavailable)!DllGetClassObject + 0xDBB1 bytes
    0x5B9504E2 (File and line number not available): (Module name unavailable)!DllGetClassObject + 0x11DF2 bytes
    0x764C3C14 (File and line number not available): windows.storage.dll!SHCreateDefaultExtractIcon + 0x4704 bytes
    0x764C2C39 (File and line number not available): windows.storage.dll!SHCreateDefaultExtractIcon + 0x3729 bytes
    0x764C2B68 (File and line number not available): windows.storage.dll!SHCreateDefaultExtractIcon + 0x3658 bytes
    0x75FF5E94 (File and line number not available): shcore.dll!Ordinal234 + 0x224 bytes
    0x77C19C04 (File and line number not available): ntdll.dll!LdrRegisterDllNotification + 0x1F4 bytes
    0x77C24C5D (File and line number not available): ntdll.dll!EtwNotificationRegister + 0x8ED bytes
    0x75653744 (File and line number not available): KERNEL32.DLL!BaseThreadInitThunk + 0x24 bytes
    0x77C4A064 (File and line number not available): ntdll.dll!RtlSetCurrentTransaction + 0xD4 bytes
    0x77C4A02F (File and line number not available): ntdll.dll!RtlSetCurrentTransaction + 0x9F bytes
    Data:
    B8 C7 47 0E 58 E6 4E 0E 00 00 7F 75 00 00 00 00 ..G.X.N. ...u....
    00 50 1A 00 00 00 00 00 00 00 00 00 00 00 53 00 .P...... ......S.
    45 00 54 00 55 00 50 00 41 00 50 00 49 00 00 00 E.T.U.P. A.P.I...
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........

    Visual Leak Detector detected 66 memory leaks (170315 bytes).
    Largest number used: 271910 bytes.
    Total allocations: 1868254 bytes.

    Also eine ganze Menge an Leaks.

    Kommentiere ich d.exec() aus, gibt es keine PipeExceptions und später auch keine Memory Leaks.

    Debugge ich rein komme ich hierhin:

    void QWindowsNativeFileDialogBase::doExec(HWND owner)
    {
        qCDebug(lcQpaDialogs) << '>' << __FUNCTION__;
        // Show() blocks until the user closes the dialog, the dialog window
        // gets a WM_CLOSE or the parent window is destroyed.
        const HRESULT hr = m_fileDialog->Show(owner);
        QWindowsDialogs::eatMouseMove();
        qCDebug(lcQpaDialogs) << '<' << __FUNCTION__ << " returns " << hex << hr;
        if (hr == S_OK) {
            emit accepted();
        } else {
            emit rejected();
        }
    }
    

    m_fileDialog->Show(owner) (6. Zeile des Codeausschnitts oben) ist das Problem, erzeugt jedenfalls die ganzen PipeExceptions. Setze ich einen Haltepunkt und überspringe die Zeile ohne Ausführung, gibt es später auch keine Memoryleaks. Show() führt in "C:\Windows\SysWOW64\comdlg32.dll" und ist jetzt natürlich nicht mehr debugbar, weil ich keine Symbole habe. m_fileDialog ist ein IFileDialog* und wird mit:

    HRESULT hr = CoCreateInstance(clsId, NULL, CLSCTX_INPROC_SERVER,
                                      iid, reinterpret_cast<void **>(&m_fileDialog));
    

    initialisiert.

    Vermutlich führt das alles bereits zu weit... Hat jemand eine Ahnung, was hier schieflaufen könnte?

    Viele Grüße
    Eisflamme



  • Ich frage mich gerade, ob das ein false positive ist. Kann ja sein, dass die DLLs irgendwas cachen und erst später nach Beendigung des Programms mal freigeben. Die Exceptions verstehe ich zwar so nicht, aber die werden ja anscheinend gecatched und verarbeitet.

    Wäre dann trotzdem schön, wenn ich solche "Leaks" nicht in meinem Bericht hätte, bei einem größeren Test überblendet das ja dann tatsächliche Leaks. Einfach nie den Filedialog aufzurufen empfände ich als schlechte Lösung.



  • Eisflamme schrieb:

    Vermutlich führt das alles bereits zu weit...

    Ja. Vergiss und konzentrier dich auf deinen eigenen Code. VLD schmeißt sehr sehr viele false positives. Und du brauchst (ohne guten Grund zumindest) nicht nach irgendwelche potenziellen Memory Leaks in der Qt oder erst recht in Windows zu suchen.



  • Okay, dankeschön, dann werde ich VLD einfach in den jeweiligen Bereichen ausstellen. 🙂


  • Mod

    Hm, eigentlich müsstest du a.exec() aufrufen um in den Eventloop zu kommen, ich bin mir nicht sicher ob der QFileDialog dies prüft und sonst einen eigenen Eventloop startet...



  • Das Beispiel ist nur aufs Wesentliche reduziert. Im ursprünglichen Code rufe ich den Dialog per Button-Klick in einem Dialog auf, der in der Mainloop von exec() erzeugt wird. Das Resultat ist dann exakt dasselbe.

    PipeExceptions können anscheinend irgendwie mit Netzwerklaufwerken zusammenhängen. Und ansonsten werden dlls ja häufig von Windows geladen und erst irgendwann nach Beendigung der exe entladen. Das merkt man, wenn man eine dll per exe nutzt und nach Programmausführung die dll löschen möchte, das geht dann oft ein paar Sekunden oder sogar Minuten lang noch nicht.

    Da kann ich mir schon vorstellen, dass die dll das einfach später deallokiert.


Log in to reply