技术文章

了解最新技术文章

当前位置:首页>技术文章>技术文章
全部 146 常见问题 7 技术文章 139

think cell与 Oracle SmartView 冲突:Excel 似乎随机发生崩溃

时间:2023-10-31   访问量:1042  标签: think-cell,Oracle,think cell,SmartView

问题

我安装了 think cell 和 Oracle SmartView。使用 Excel 时,有时会显示 CRITICALWITHMSG n/a: std::terminate() 错误消息,并且 Excel 发生崩溃。

think-cell 错误消息.

用户报告该问题出现在各种情况下,例如出现在尝试执行以下操作时:

分析

据我们分析,Oracle 似乎并未在其代码中处理某些异常。以下行为不受支持,可能会导致 Excel 崩溃:

HSADDIN.DLL(属于 SmartView)在 Excel::Window::PointsToScreenPixelsX 回调中调用 WM_TIMER,对于 VBA_E_IGNORE,此调用经常会失败。此 HRESULT 由 COM 调用包装器包装到 _com_error 异常中,但并未得到处理并贯穿到 Windows WM_TIMER 分派机制中。由于不允许异常对应用程序代码进行转义,因此会出现崩溃。

但是,在默认情况下,WM_TIMER 分派机制包含 catch-all __try __except 块,它能捕获异常并抑制任何后果。最近,Office 365 采用了名为 Microsoft.Office.AppHost.ExposeTimerProcSeh 的功能入口,它是由 Microsoft 控制的设置,可以使 Excel 遵循 Microsoft 自己的建议,通过调用 Win32 API 函数 catch-all __try __except 来禁用上述 SetUserObjectInformationW(..., UOI_TIMERPROC_EXCEPTION_SUPPRESSION, ...) 块。这导致 Excel 在出现异常时崩溃。

我们不知道 Microsoft 何时启用该设置,但我们发现在发生错误的机器上已启用该设置。若已安装 think cell,它会偶尔捕获异常并显示错误消息。可以肯定的是,出现的这些情况并非 Oracle 的本意,他们只是忘记了在加载项中对 VBA_E_IGNORE 进行处理。

解决方案

受影响的客户报告称更新到 Oracle SmartView 21.200 版本修复了该问题。若此方法无效,请联系您的 Oracle SmartView 支持人员以获得更多信息。


上一篇:SentinelAgent 与 think cell 触发:"COMBASE.DLL STATUS_ACCESS_VIOLATION"

下一篇:think cell与 Microsoft Azure 信息保护加载项存在冲突:在 PowerPoint 和 Excel 中发生子类设置错误

发表评论:

评论记录:

未查询到任何数据!

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部