You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

特定Intel CPU机型上Windows用户态程序异常崩溃问题排查求助

特定Intel CPU上Windows用户态应用的异常崩溃问题

崩溃现象

应用出现多种无明显逻辑原因的崩溃,典型示例如下:

  • 尝试从/向有效RSP地址读写时触发错误:
Attempt to read from address ffffffffffffffff
00007ff6`2a0e6581 488b442428      mov     rax,qword ptr [rsp+28h] ss:00000003`f62fe798=0000012d3e796200

Attempt to write to address 0000000000000000
00007ff7`a81d78de 4889442430      mov     qword ptr [rsp+30h],rax ss:00000029`293ff4d0=00000029293ff5e8
  • 触发“Attempt to execute non-executable address”错误,且报错地址与当前RIP不匹配:
Attempt to execute non-executable address 00007ff60000000a
00007ff6`a050d940 c744243cffffff7f mov     dword ptr [rsp+3Ch],7FFFFFFFh

Attempt to execute non-executable address 00007ff7`d6bf5f01
00007ff7`de335f01 mov     rax,qword ptr [rsp+28h] ss:000000c5`118fe998=000002619c546930

Attempt to execute non-executable address 00007ff7`00a05d21
00007ff7`6ca55d21 mov     rax,qword ptr [rsp+28h] ss:000000df`a13ff038=00000291867ffb90
  • 跳转指令触发“attempted to write address”错误:
Instruction at 0x00007FF6D6CE466C attempted to write address 0x00000048
00007ff6`d6ce466c e98f68f6ff      jmp     application!libssh2_default_free (00007ff6`d6c4af00)

目前已发现约20个按调用栈分类的崩溃集群,多数集中在同一代码逻辑中。

受影响CPU型号

所有崩溃仅出现在以下三种Intel CPU机型上,从未在AMD或其他Intel CPU上发生:

Intel64 Family 6 Model 165 Stepping 5, GenuineIntel
Intel64 Family 6 Model 165 Stepping 3, GenuineIntel
Intel64 Family 6 Model 158 Stepping 13, GenuineIntel

已核查两个崩溃集群的700余次崩溃记录,涉及超100个不同客户端。

补充信息

Update 1

  • 涉事程序为多线程C++程序,但崩溃发生在单线程运行的代码中,部分转储显示崩溃时无其他线程活跃
  • 崩溃常出现在std::string、std::vector的标准库函数中(如std::vector.resize())
  • 程序无自修改代码,所有代码由编译器生成并直接从DLL/EXE运行,无内核态代码
  • 运行环境为Windows 10及Windows 11系统

Update 2

  • 尝试精简代码复现问题,但无稳定复现性
  • 已排除报错工具故障,崩溃每日发生
  • 客户端均已安装Windows更新
  • 开发团队中仅一台该CPU机型设备出现崩溃

Update 3

已在开发团队的该CPU设备上3次复现相同崩溃,调用栈如下:

application!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy_init+0xd9 [C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\include\xstring @ 4610] 
application!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >+0x68 [C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\include\xstring @ 2521] 
application!StringFormatV+0x1f8
...

涉事StringFormatV及相关代码如下:

std::string StringFormatV(const char* a_Format, va_list a_VaList)
{
    size_t formattedSize = _vscprintf(a_Format, a_VaList) + 1;

    if (1 == formattedSize)
        return "";

    std::vector<char> buffer(formattedSize);
    vsprintf_s(&buffer[0], buffer.size(), a_Format, a_VaList);
    return &buffer[0];
}

std::string StringFormat(const char* a_Format, ...)
{
    va_list vaList;
    va_start(vaList, a_Format);

    return StringFormatV(a_Format, vaList);
}

崩溃触发于return &buffer[0];语句,此时buffer内容正常;实际崩溃发生在_Tidy_init函数中,报错信息显示RIP与报错地址存在偏差,但寄存器状态与汇编代码匹配。

求助需求

  1. 识别该问题对应的具体Intel CPU漏洞
  2. 提供代码层面的规避方案

内容的提问来源于stack exchange,提问作者Codeguard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 06:09:19