知识库 KB0235

KB0235:SentinelAgent 与 think-cell 触发:COMBASE.DLL STATUS_ACCESS_VIOLATION

问题

使用 think-cell 的内部数据表后,有时会显示 COMBASE.DLL STATUS_ACCESS_VIOLATION 错误消息。

think-cell 错误消息

重现步骤

  1. 打开 PowerPoint

  2. 插入 think-cell 堆积图:
    插入think-cell元素堆积图 → 单击幻灯片以插入图表
    → 内部数据表将打开(Excel 进程显示在任务管理器 →(更多详细信息)→ 详细信息中)

  3. 关闭内部数据表
    → 等到任务管理器 →(更多详细信息)→ 详细信息中的 Excel 进程关闭(可能需要大约 30 秒)
    CRITICALWITHMSG COMBASE.DLL 10.0.18362.1645+0x1BEBBE: STATUS_ACCESS_VIOLATION
    → 在关闭错误消息后,Excel 进程将关闭

分析

此情况只出现在同时启用 think-cell 和 SentinelOne 的 SentinelAgent 的时候。我们的开发人员对此问题进行了详细分析。似乎 SentinelAgent 开始使用 Windows 的 CoGetInterceptor 函数,而 think-cell 使用 COM ContextSwitcher。两者无法搭配工作,这似乎是 Windows 的缺陷:

CCtxChnl::OnCall 函数内的 COMBASE.DLL 中发生崩溃。我们调查了 64 位 COMBASE.DLL 10.0.19041.1202 中的问题,下面的地址偏移量和符号名称来自该版本。CCtxChnl::OnCall 中的大多数代码对于为 null 的成员 this->_pIFaceEntry->_pID 而言似乎很可靠(例如从 CCtxChnl::OnCall 调用 CStdWrapper::IsNAWrapper,并且有代码对此进行处理)。但是,若 CCtxChnl::OnCall 中的 IsCallTracingEnabled 调用返回 true,则代码会尝试访问 this->_pIFaceEntry->_pID->_oid.Data1,而不会检查 this->_pIFaceEntry->_pID 是否为 null,这会导致访问冲突 (COMBASE.DLL!Imagebase+0x00000000001A77B0)。对我们而言,这似乎是缺陷。

解决方法

某 think-cell 客户收到了 SentinelOne 提供的以下解决方法:

  1. 获取计算机的 SentinelOne 密码

  2. 以管理员身份运行 CMD:
    cd "C:\Program Files\SentinelOne\Sentinel Agent <X.X.X.XXX\>"
    sentinelctl config agent.relinking.com false -k "PASS PHRASE FROM STEP ONE"
    sentinelctl config agent.relinking.com
    (返回值应该是:false

  3. 等待 5 分钟,然后重新启动计算机。

如需有关此解决方法的进一步信息,请联系您的 SentinelOne 支持人员,并参阅票证:#652625。

解决方案

我们向 Microsoft 报告了该问题,正在等待他们的后续行动。若您的公司有 Microsoft Office 支持合同,而且您希望就此问题的进一步查询而联系 Microsoft,可以参阅高级案例编号 2111150060003389。另外请向您的 SentinelOne 支持人员告知此问题以及 Microsoft 案例编号。

分享