A flaky test exposed a Redis client use-after-free12 days agohttps://buildkite.engineering/how-a-flaky-test-exposed-a-redis-use-after-free/非确定性bug更难调试,因为它们需要重复执行,并且通常涉及在崩溃之前发生的数据损坏。在Redis gem升级导致Buildkite的CI系统中出现不稳定测试后,在redis-client库中发现了该bug。团队使用Test Engine关联测试可靠性,使用核心转储检查崩溃状态,并使用ASAN识别hiredis C扩展中的堆释放后使用(heap use-after-free)。修复方案包括禁用Redis连接的C扩展,并向上游报告该问题。更多...
DLL that was not present in memory despite not being formally unloadeda month agohttps://devblogs.microsoft.com/oldnewthing/20260625-00/?p=112467一个bug报告称shell32.dll导致第三方程序崩溃,但调查发现shell32是受害者。崩溃转储显示由于递归异常处理死亡螺旋导致的堆栈溢出,始于combase!CoTaskMemFree中的访问冲突。分析发现combase.dll被强制从内存卸载(可能是通过VirtualFree),而非通过FreeLibrary,导致后续调用失败。Shell32受到指责,因为它在进程终止期间是第一个调用已卸载combase.dll的组件,从而触发了崩溃循环。更多...