Interception de EngineExecutionException

J’ai une application contenant à la fois du code géré et du code natif. L’application dispose actuellement d’un filtre d’exception non géré, défini via SetUnhandledExceptionFilter, qui capture les erreurs critiques, génère un minidump, enregistre divers parameters de l’application et quitte le programme.

Le gestionnaire d’exceptions non géré n’intercepte pas une exception EngineExecutionException qui se produit dans le runtime .NET. Nous pensons que le problème est une corruption de mémoire provoquée par la partie native de l’application.

Le problème est que, lorsque l’exception se produit, l’application se ferme sans trace. Nous aimerions enregistrer un minidump lorsque cela se produit. Est-ce que quelqu’un sait comment notre application peut installer un gestionnaire capable de le détecter?

Autant que je sache, cette exception n’est pas capturable du côté des choses gérées (du moins pas dans .NET 4).

Une façon de le “récupérer” serait de créer un chargeur / démarreur personnalisé (natif) pour votre application qui charge le runtime .NET – ce démarreur personnalisé peut installer un gestionnaire d’exceptions du côté natif du runtime .NET.

Liens de référence: