调试一个exe,偶尔发现exe卡死,用windbg一看,好多线程都在等待一个线程释放CRT内存申请的锁。
而这个线程也在调用malloc申请内存,走到了LowFragHeap里面,正在执行一条rdrand指令。
让exe继续执行,然后断下来看栈,发现这个线程一直卡在rdrand上并未返回。
搜了一下,AMD Ryzen 3000系列出过rdrand返回的随机数不随机的bug。
看来还有卡死的bug。先看看cpu微码有更新包没。
# Call Site
00 ntdll!RtlpHeapGenerateRandomValue32+0xa3
01 ntdll!RtlpSubSegmentInitialize+0x2cf
02 ntdll!RtlpLowFragHeapAllocFromContext+0x6ef
03 ntdll!RtlpAllocateHeapInternal+0x12a
血泪控诉:曝光数月的AMD微代码bug毁掉了我的周末
https://cloud.tencent.com/developer/news/465936
--
FROM 60.12.138.*