KB0236: Konflikt mit Oracle Smart View: Excel stürzt ab

Problem

Ich habe thinkcell und Oracle Smart View installiert. Irgendwann während der Arbeit in Excel erhalte ich eine Fehlermeldung CRITICALWITHMSG n/a: std::terminate(), und Excel stürzt ab.

thinkcell-Fehlermeldung

Benutzer haben berichtet, dass das Problem in verschiedenen Situationen auftritt, z. B. beim Versuch:

  • Daten mit Smart View hochladen
  • Verbindung zur Oracle-Umgebung herstellen
  • Werte durch Eingabe in eine Zelle eingeben
  • den Inhalt einer Oracle Smart View-Zelle löschen, z. B. durch Drücken von BACKSPACE

Analyse

Unsere Analyse deutet darauf hin, dass Oracle bestimmte Ausnahmen in seinem Code nicht behandelt. Dieses Verhalten wird nicht unterstützt und kann zu einem Excel-Absturz führen: Mehr lesen

HSADDIN.DLL (gehört zu Smart View) ruft Excel::Window::PointsToScreenPixelsX innerhalb eines WM_TIMER-Callbacks auf, und dieser Aufruf schlägt recht häufig mit VBA_E_IGNORE fehl. Dieses HRESULT wird vom COM-Aufruf-Wrapper in eine _com_error-Ausnahme verpackt, aber nicht behandelt und gelangt in den Windows-Dispatch-Mechanismus WM_TIMER. Es ist nicht zulässig, dass Ausnahmen den Anwendungscode verlassen, daher ist ein Absturz zu erwarten.

Standardmäßig enthält der Dispatch-Mechanismus WM_TIMER jedoch einen catch-all __try __except-Block, der die Ausnahme abfängt und alle Folgen unterdrückt. In jüngerer Zeit verfügt Office 365 über eine von Microsoft gesteuerte Einstellung, ein sogenanntes Feature Gate namens Microsoft.Office.AppHost.ExposeTimerProcSeh, die Excel dazu veranlasst, Microsofts eigene Empfehlung zu befolgen und den oben beschriebenen catch-all __try __except-Block zu deaktivieren, indem die Win32-API-Funktion SetUserObjectInformationW(..., UOI_TIMERPROC_EXCEPTION_SUPPRESSION, ...) aufgerufen wird. Dadurch stürzt Excel ab, wenn die Ausnahme auftritt.

Wir wissen nicht, wann Microsoft diese Einstellung aktiviert, haben sie aber auf Computern aktiviert gesehen, auf denen der Fehler auftritt. Wenn thinkcell installiert ist, fängt es die Ausnahme unbeabsichtigt ab und zeigt eine Fehlermeldung an. Es ist ziemlich sicher, dass all dies von Oracle nicht beabsichtigt ist und dass dort schlicht vergessen wurde, VBA_E_IGNORE im Add-in zu behandeln.

Lösung

Betroffene Kunden berichteten, dass ein Update auf Oracle Smart View Version 21.200 das Problem behebt. Falls dies nicht hilft, wenden Sie sich bitte an Ihren Oracle Smart View-Support, um weitere Informationen zu erhalten.