Bien que j'ai pas trop de chance avec les questions ces temps cis () franchement, là je sèche et je me demande si vous pourriez m'aider.
J'ai une usine à gaz programmée en C#, qui utilise beaucoup ( plusieurs dizaines ) de dll managée toute chargées dans le même AppDomain mais qui sont des plugins et qui peuvent donc faire un peut ce qu'elle veullent c'est à dire créer des threads, faire des BeginInvoke, etc...
Pour pallier aux risques de crash j'ai donc rajouté des events pour Application.OnThreadException et AppDomain.CurrentDomain.UnhandledBidule ...
Cette technique me permet d'attraper bon nombre d'erreurs mais celà ne marche pas toujours.
En effet, j'ai remarqué que si une exception survenait dans un autre thread, en général, celà conduisait à un crahs complet de l'usine à gaz. Je me demande donc, peut on automatiquement gérer les exceptions qui surviennent à partir d'un autre Thread ? ( rajouter un UnhandledExceptionHandler sur chaque thread crée mais de manière dynamique, c'est à dire, sans modifier le code des plugins ... ).
De plus, le crash qui survient ne me permet vraiment pas de savoir d'où l'erreur venait. J'ai éssayer de traiter le fichier minidump crée automatiquement par Windows mais il m'apprend juste qu'il y a eu un crash dans ntdll.dll, appellée par kernel32.dll, appellée par mscorwks.dll, etc etc, sans aucun nom de fonction et sans stacktrace de la pile managée.
Quelqu'un pourrai t il m'aider ?
ps. je dit "quasi-totallement managé" car parmis les plugins,il y en a qui peuvent appeller des dlls en C++ mixte qui peut ensuite appellé du C++ purement natif, mais pourtant, aucune de ces parties natives n'est, à priori, active, lors du crash de l'usine à gaz ...
Partager