HtmlUtilities.ConvertToText provoque une "Access violation" sur Windows Mobile / ARM

Depuis quelques mois, je cours après un problème sur UWP. Un bug qui ne se produit qu’en Release sur Windows Mobile. Mon application se ferme systématiquement avec un message "Access violation" et l’impossibilité de capturer la moindre exception :

  • Sur l’émulateur (donc x86), l’erreur ne peut pas être reproduite.
  • Sur un vrai mobile (donc ARM), même en changeant les paramètres de Debug de Visual Studio, rien n’est capturé.

À force de recherches je pensais avoir trouvé le code produisant l’erreur (une désérialisation JSon). Quand celle-ci était exécutée sur le Thread de l’UI, l’application ne crashe pas...

Côté performance, le ressenti pour l’utilisateur n’est pas terrible. J’ai donc continué à chercher. En poussant une version de test sur le Store (Package Flight), j’ai réussi à obtenir un rapport d’erreur incriminant : HtmlUtilities.ConvertToText (qu’il est bon d’avoir un back-office qui tient la route).

Attention : la méthode HtmlUtilities.ConvertToText ne provoque pas systématiquement une "Access violation". Cela ne semble se produire que si certains caractères sont à décoder. Si l’appel a lieu sur le thread d’UI, le problème ne se pose pas.

Le problème a été remonté aux équipes de Microsoft. En attendant qu’un correctif soit publié, la solution consiste donc à appeler HtmlUtilities.ConvertToText via un Dispatcher.

Jérémy Jeanson

Comments

You have to be logged in to comment this post.