﻿id,summary,reporter,owner,description,type,status,component,version,resolution,keywords,cc,guest,host
18187,Mismatched pool allocation/free in VBoxGuest.sys in 6.0 RC1 => fixed in svn,Thomas Faber,,"VBoxGuest.sys calls {{{ExAllocatePoolWithTag(..., 'TRPI')}}} on an allocation that was made with an {{{ExAllocatePool()}}} call.

This happens in rtR0InitNative, where RTR0DbgKrnlInfoOpen is called before g_pfnrtExAllocatePoolWithTag is initialized. Therefore the object will be allocated with ExAllocatePool (tracked by Windows as tag ""None"").
The RTR0DbgKrnlInfoRelease call that follows happens after g_pfnrtExFreePoolWithTag is initialized, however, and therefore causes a mismatch.

This should result in a BAD_POOL_CALLER bug check when using a checked build of Windows. It also reproduces in ReactOS (downstream bug https://jira.reactos.org/browse/CORE-15446), and produces log output like the following:

{{{
(ntoskrnl/mm/ARM3/expool.c:2530) Freeing pool - invalid tag specified: IPRT != None

*** Fatal System Error: 0x000000c2
                       (0x0000000A,0xB6B08BD8,0x656E6F4E,0x54525049)

[7h
Entered debugger on embedded INT3 at 0x0008:0x809543a4.
kdb:> bt
Eip:
<ntoskrnl.exe:1543a5 (:0 (RtlpBreakWithStatusInstruction))>
Frames:
<ntoskrnl.exe:8c47d (ntoskrnl/ke/bug.c:1100 (KeBugCheckWithTf))>
<ntoskrnl.exe:8ca54 (ntoskrnl/ke/bug.c:1456 (KeBugCheckEx))>
<ntoskrnl.exe:ab8c2 (ntoskrnl/mm/ARM3/expool.c:2531 (ExFreePoolWithTag))>
<VBoxGuest.sys:153f5 (src/VBox/Runtime/r0drv/nt/alloc-r0drv-nt.cpp:80 (rtR0MemFree))>
<VBoxGuest.sys:d496 (src/VBox/Runtime/r0drv/alloc-r0drv.cpp:108 (RTMemTmpFree))>
<VBoxGuest.sys:fd27 (src/VBox/Runtime/r0drv/nt/dbgkrnlinfo-r0drv-nt.cpp:594 (RTR0DbgKrnlInfoRelease))>
<VBoxGuest.sys:15e95 (src/VBox/Runtime/r0drv/nt/initterm-r0drv-nt.cpp:345 (rtR0InitNative))>
<VBoxGuest.sys:d29c (src/VBox/Runtime/r0drv/initterm-r0drv.cpp:88 (RTR0Init))>
<ntoskrnl.exe:63cd4 (ntoskrnl/io/iomgr/driver.c:1587 (IopCreateDriver))>
}}}
",defect,closed,guest additions,,fixed,,,Windows,all
