Detekování windows handle leaků – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Detekování windows handle leaků – C / C++ – Fórum – Programujte.comDetekování windows handle leaků – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
yaqwsx+9
Posthunter
4. 9. 2012   #1
-
0
-

Narazil jsem na problém, se kterým jsem se nikdy nesetkal - má Win32 aplikace leakuje popisovače (handle). Nemám však potuchy, jak místo tohoto úniku najít.

Řešil už někdo tento problém? Jak jste na něj šli?

Nahlásit jako SPAM
IP: 85.160.59.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
crazy
~ Moderátor
+10
Grafoman
4. 9. 2012   #2
-
+1
-
Zajímavé

#1 yaqwsx
myslím, že windbg to uměl nalézt... příkaz něco jako htrace, koukni na Google už si moc nevzpomínám...

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
yaqwsx+9
Posthunter
5. 9. 2012   #3
-
0
-

Díky za odpověď. Seznam leaklých handlů jsem našel, ale nejsem příliš moudrý, kde se handle berou - "nejsou" z mého kódu. V podstatě leakují 2 typy handlů:

0x000000007747179a: ntdll!NtCreateEvent+0x000000000000000a
0x00000000001520bb: verifier!AVrfpNtCreateEvent+0x000000000000008b
0x000000007366b069: wow64!whNtCreateEvent+0x0000000000000079
0x000000007365cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7
0x00000000735e2776: wow64cpu!TurboDispatchJumpAddressEnd+0x000000000000002d
0x000000007365d07e: wow64!RunCpuSimulation+0x000000000000000a
0x000000007365c549: wow64!Wow64LdrpInitialize+0x0000000000000429
0x000000007749e707: ntdll! ?? ::FNODOBFM::`string'+0x0000000000029364
0x000000007744c32e: ntdll!LdrInitializeThunk+0x000000000000000e
0x000000007761ff66: ntdll_77600000!ZwCreateEvent+0x0000000000000012
0x0000000061712d87: VFBASICS!AVrfpNtCreateEvent+0x000000000000008a
0x0000000074d50387: KERNELBASE!CreateEventExW+0x000000000000006e
0x0000000074d507ba: KERNELBASE!CreateEventW+0x0000000000000027
0x0000000061712efb: VFBASICS!AVrfpCreateEventW+0x0000000000000096
0x00000000774716da: ntdll!NtDuplicateObject+0x000000000000000a
0x0000000000154143: verifier!AVrfpNtDuplicateObject+0x000000000000006b
0x000000007366ab60: wow64!whNtDuplicateObject+0x0000000000000054
0x000000007365cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7
0x00000000735e2776: wow64cpu!TurboDispatchJumpAddressEnd+0x000000000000002d
0x000000007365d07e: wow64!RunCpuSimulation+0x000000000000000a
0x000000007365c549: wow64!Wow64LdrpInitialize+0x0000000000000429
0x000000007749e707: ntdll! ?? ::FNODOBFM::`string'+0x0000000000029364
0x000000007744c32e: ntdll!LdrInitializeThunk+0x000000000000000e
0x000000007761fe36: ntdll_77600000!ZwDuplicateObject+0x0000000000000012
0x0000000074d4ba76: KERNELBASE!DuplicateHandle+0x0000000000000069
0x00000000765618d2: KERNEL32!DuplicateHandleImplementation+0x00000000000000b3
0x000000007631de36: RPCRT4!THREAD::THREAD+0x0000000000000066
0x000000007631ddb3: RPCRT4!ThreadSelfHelper+0x0000000000000028
0x0000000076310736: RPCRT4!RpcpSetThreadpoolCallbackInstance+0x000000000000000b

Původně jsem myslel, že to má co do činění s WinUSB. Ale nevypadá to.

Nahlásit jako SPAM
IP: 85.160.32.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Řešení
yaqwsx+9
Posthunter
5. 9. 2012   #4
-
0
-
Vyřešeno Nejlepší odpověď

Konečně jsem na to kápnul! V jednom místě jsem při zjišťování připojených USB zařízení zapomněl před ukončením zavolat funkci SetupDiDestroyDeviceInfoList, která zajistí uzavřeních všech handlů. Jelikož ani jeden z těchto handlů nevytvořila má aplikace (vznikly uvnitř systému), tak Windbg dával tyto zmatené(alespoň pro mě) výsledky.

Nahlásit jako SPAM
IP: 85.160.32.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 108 hostů

Podobná vlákna

Co je HANDLE ? — založil Martin

Příkaz Handle — založil Paulí

Změny TForm.Handle — založil Sniper

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý