Поиск утечки в выгружаемом пуле

Тема в разделе "WASM.BEGINNERS", создана пользователем Yuske, 5 дек 2007.

  1. Yuske

    Yuske New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2007
    Сообщения:
    2
    С помощью poolmon'а нашел тег драйвера который постоянно выделяет память в выгружаемом пуле.
    Тег "Pp". Как определить какому драйверу соответствует этот тег???

    В pooltag.txt искал - нет. Пробовал запускать "poolmon /c" - тоже без результатов.
    Драйвер присутствует на только поставленной WinXP, но работает нормально (без утечек). Возможно какое-то приложение пользовательского режима у меня неправильно использует этот драйвер?!
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ээ вообще драйвер должен работать так, чтобы приложения не могли испорить что-либо своими запросами. иначе это кривой драйвер
     
  3. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    Yuske
    я не поленился и посмотрел что это за таг
    вот его вызов:

    Код (Text):
    1. fffff800`013ffd90 41b850702020    mov     r8d,20207050h
    2. fffff800`013ffd96 498bd5          mov     rdx,r13
    3. fffff800`013ffd99 b901000000      mov     ecx,1
    4. fffff800`013ffd9e e8cdd6d6ff      call    nt!ExAllocatePoolWithTag (fffff800`0116d470)
    5. fffff800`013ffda3 4885c0          test    rax,rax
    6. fffff800`013ffda6 488905c307daff  mov     qword ptr [nt!IopInitHalResources (fffff800`011a0570)],rax
    7. fffff800`013ffdad 0f84bda80300    je      nt!IoReportHalResourceUsage+0x52d (fffff800`0143a670)
    8. fffff800`013ffdb3 4d8bc5          mov     r8,r13
    9. fffff800`013ffdb6 498bd4          mov     rdx,r12
    10. fffff800`013ffdb9 488bc8          mov     rcx,rax
    11. fffff800`013ffdbc e8bf91c3ff      call    nt!memmove (fffff800`01038f80)
    12. fffff800`013ffdc1 eb00            jmp     nt!IoReportHalResourceUsage+0x543 (fffff800`013ffdc3)
    вот его стек:
    fffffadf`f260f7a8 fffff800`013ffda3 nt!ExAllocatePoolWithTag
    fffffadf`f260f7b0 fffff800`0085745e nt!IoReportHalResourceUsage+0x511
    fffffadf`f260f8d0 fffff800`008599fd hal!HalpReportResourceUsage+0x8fe
    fffffadf`f260fa10 fffff800`0142a55a hal!HalReportResourceUsage+0x6d
    fffffadf`f260fa50 fffff800`01243e09 nt!Phase1InitializationDiscard+0xd99
    fffffadf`f260fd40 fffff800`012b226e nt!Phase1Initialization+0x9
    fffffadf`f260fd70 fffff800`01044416 nt!PspSystemThreadStartup+0x3e
    fffffadf`f260fdd0 00000000`00000000 nt!KxStartSystemThread+0x16

    как я и предполагал - это что-то связанное с ПнП-манагером
    если у тебя этот пул все время (а не только на старте системы, как у меня) работает
    то посмотри его стек и поймешь что это за активность
    процентов 90 что это что-то с УСБ :)
     
  4. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    еще стек этого тага

    fffffadf`f260f5b8 fffff800`0140028f nt!ExAllocatePoolWithTag
    fffffadf`f260f5c0 fffff800`01418f69 nt!PpInitializeBootDDB+0x1bf
    fffffadf`f260f710 fffff800`01426160 nt!IopInitializePlugPlayServices+0x28d
    fffffadf`f260f8c0 fffff800`0142a610 nt!IoInitSystem+0xe31
    fffffadf`f260fa50 fffff800`01243e09 nt!Phase1InitializationDiscard+0xfc5
    fffffadf`f260fd40 fffff800`012b226e nt!Phase1Initialization+0x9
    fffffadf`f260fd70 fffff800`01044416 nt!PspSystemThreadStartup+0x3e
    fffffadf`f260fdd0 00000000`00000000 nt!KxStartSystemThread+0x16
     
  5. Yuske

    Yuske New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2007
    Сообщения:
    2
    Спасибо за помощь! Есть пара простейших вопросов:

    Как и с помощью чего ты ето сделал? Я просто первый раз сталкиваюсь с программированием в режиме ядра:dntknw:

    Тот же вопрос, как посмотреть стек зная только имя тега, а не имя драйвера?
     
  6. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    смотрел виндыбыгой в кернел-моде на варе естесно
    стартишь вару и когда виндыбыга ловит бряк говоришь ему что-то типа:
    bp nt!ExAllocatePoolWithTag "j @r8=0x20207050 '';'gc'"
    потом дооолго ждешь когда словит, неудачная апишка - часто дергаецца