Knowledge base KB0236

Conflict with Oracle SmartView: Excel crashes seemingly at random

Problem

I have think-cell and Oracle SmartView installed. At some point while working in Excel, I receive a CRITICALWITHMSG n/a: std::terminate() error message and Excel crashes.

think-cell error message.

Users reported that the problem happens in various situations, e.g. when trying to:

  • upload data using SmartView
  • connect to the Oracle environment
  • input values by typing in a cell
  • delete the content of an Oracle SmartView cell, e.g., by pressing BACKSPACE

Analysis

In our analysis, it appears Oracle is not handling certain exceptions in their code. This is not supported behavior and can lead to an Excel crash:

HSADDIN.DLL (which belongs to SmartView) calls Excel::Window::PointsToScreenPixelsX inside a WM_TIMER callback, and this call fails fairly often with VBA_E_IGNORE. This HRESULT is wrapped into an _com_error exception by the COM call wrapper, but not handled and falls through into the Windows WM_TIMER dispatch mechanism. Letting exceptions escape application code is not allowed, so a crash is expected.

By default, though, the WM_TIMER dispatch mechanism contains a catch-all __try __except block, which catches the exception and silences any consequences. More recently, Office 365 has a setting controlled by Microsoft called a feature gate named Microsoft.Office.AppHost.ExposeTimerProcSeh, which makes Excel follow Microsoft's own advice and disable the catch-all __try __except block described above by calling the Win32 API function SetUserObjectInformationW(..., UOI_TIMERPROC_EXCEPTION_SUPPRESSION, ...). This makes Excel crash when the exception occurs.

We do not know when Microsoft enables this setting, but we have seen it enabled on machines where the error occurs. If think-cell is installed, it catches the exception by accident and shows an error message. It is fairly certain that all this is not intended by Oracle, and they simply forgot to handle VBA_E_IGNORE in their add-in.

Solution

Affected customers reported that updating to Oracle SmartView version 21.200 fixes the issue. If this does not help, please contact your Oracle SmartView support for further information.

Share