I discovered a paged memory pool leak happening when any audio output of Apple Audio Device is active (this excludes Bluetooth devices because they use different driver) in Windows (in Boot Camp) and I request community help in collecting data regarding the issue.
The problem was proved to be present in 2019–2020 16-inch MacBook Pro equipped with T2 security chip (MacBookPro16,1 and MacBookPro16,4). I suspect all Apple computers equipped with T2 security chip (released in 2018 and later) are affected because they use the same
It is important to address this issue because it may be not the driver leaking but the T2 security chip firmware (BridgeOS) has a bug. Only Apple can fix both things.
Since I do not own all the computers that may be affected, I ask everybody to contribute by submitting reports in the following manner:
The problem was proved to be present in 2019–2020 16-inch MacBook Pro equipped with T2 security chip (MacBookPro16,1 and MacBookPro16,4). I suspect all Apple computers equipped with T2 security chip (released in 2018 and later) are affected because they use the same
Apple USB Virtual Host Controller Interface
device in Windows (and experience same problems since very release of T2 security chip), here's official list, namely:- MacBookPro15,2 (2018 & 2019 & 2020 13-inch MacBook Pro Four Thunderbolt 3 ports)
- MacBookPro15,4 (2019 & 2020 13-inch MacBook Pro Two Thunderbolt 3 ports)
- MacBookPro15,1 (2018 & 2019 15-inch MacBook Pro)
- MacBookPro15,3 (2018 & 2019 15-inch MacBook Pro)
- MacBookPro16,1 (2019 16-inch MacBook Pro with AMD Radeon Pro 5300M)
- MacBookPro16,1 (2019 16-inch MacBook Pro with AMD Radeon Pro 5500M)
- MacBookPro16,4 (2020 16-inch MacBook Pro with AMD Radeon Pro 5600M)
- iMac20,1 & iMac20,2 (2020 27-inch iMac)
- iMacPro1,1 (2019 iMac Pro)
- MaсPro7,1 (2019 Mac Pro)
- Macmini8,1 (2018 Mac mini)
- MacBookAir8,1 (2018 MacBook Air)
- MacBookAir8,2 (2019 MacBook Air)
- MacBookAir9,1 (2020 MacBook Air)
AppleUSBVHCI.sys
driver of at least versions 6.1.7800.8
and 6.1.7800.9
(latest know versions extracted from Boot Cams Support Software for MacBookPro16,4 and iMac20,2 respectively). This driver provides access for other drivers (i.e. for AppleAudio.sys
) to T2 security chip that consolidates various subsystem including audio chip. What happens is the audio driver asks AppleUSBVHCI.sys
to allocate paged pool memory while AppleUSBVHCI.sys
is active during playback (it's more or less normal for a driver) but after the playback stops the AppleUSBVHCI.sys
does not free allocated paged pool memory it previously allocated (on the screenshot below the allocated paged pool memory blocks of 0.008 MB size have 9,223,372,036.854775807 seconds (292,47 years) free time meaning they never get freed while the normal time of freeing allocated blocks of 100 MB size is under 15 seconds):It is important to address this issue because it may be not the driver leaking but the T2 security chip firmware (BridgeOS) has a bug. Only Apple can fix both things.
Since I do not own all the computers that may be affected, I ask everybody to contribute by submitting reports in the following manner:
- Launch any media in any program to play for prolonged period of time (1 hour and more, the longer the better, and not via Bluetooth audio device) with a very low volume so it won't interrupt you, i.e.:
– play 10 hours of absolute silence on YouTube
– loop a MP3 file with VLC - Right-click Start Menu (Windows logo in the bottom left corner of screen) and launch Task Manager.
Switch to Performance tab and to Memory row. Write down the Paged pool value. Close Task Manager - Use computer as usual but keep it lightly (without games or demanding software)
- After 1+ hour of activity with a silence or any audio playing in the background (make sure computer is not in Sleep state!) check back to Task Manager > Performance > Memory and write down the Paged pool value
- Post the result to this thread:
– Mac model
– Time elapsed
– Paged pool size at start
– Paged pool size at finish
– Firmware version (use Command Prompt commandsysteminfo
and look for BIOS field)
– Apple USB Virtual Host Controller Interface version (optionally, look inDevice Manager › System Devices
)
– Apple Audio Device driver version (optionally, look inDevice Manager › Audio inputs & outputs
)
– Operating system version (use Command Prompt commandsysteminfo
and look for OS version field)
- Download PoolMon using this link
PoolMon is a tiny (28 KB in size) command-line utility extracted from Microsoft Windows Driver Kit (WDK), it does not require installation. The link is not shady and is not a virus, but you can download entire WDK (which is 3.5 GB), install it and get poolmon.exe too. - Extract
poolmon.exe
to any folder - Hold Shift and right-click the folder with the extracted
poolmon.exe
and chooseOpen command window here
- Enter the following command into the opened Command Prompt (there's no need to leave poolmon.exe running, it just reads current state of RAM poo usage):
poolmon /p /p /b
- Check if the first Tag is
Pp
- Report
Pp
size in bytes (as shown in PoolMon) to this thread
- Capture at startup (no audio played yet, system fully booted), paged pool size 0,155 GB
PoolMon
RAMMap data - Capture at 20 hours of audio playback, no other programs running, paged pool size 1.8 GB
PoolMon
RAMMap Data
Last edited: