Sur les stations de travail équipées de Windows 10, il a été constaté une perturbation des éditions lorsque :

  • l'application est compilée en 32 bits et enchaîne de nombreuses impressions (Iimprime, iImprimeEtat) qu'elles soient physiques, en aperçu, ou en export PDF, HTML...
  • la mise à jour Creators Update de Windows 10 a été appliquée.

Dans ce cas précis, aucune consommation mémoire anormale n'est visible sur l'application elle-même par le gestionnaire de tâches. Mais après un nombre variable d'impressions, le processus est ralenti voir stoppé par une erreur de protection Windows (GPF).

 


Le blocage est lié au module système splwow64.exe (Print driver host for applications) utilisé par Windows pour l'impression des applications 32 bits. A partir de la version Creators Update de Windows 10, ce module fait une réservation de mémoire (system commit) qui n'est pas allouée par la suite. Ce sujet est abordé dans différents sites, un utilitaire tel que Process Explorer permet de visualiser la consommation. Cette allocation est continue, et va jusqu'à l'instabilité. Ce comportement est sans lien avec le framework 32 bits des applications WINDEV, il est identique avec des impressions lancées depuis n'importe qu'elle application 32 bits.

 


Les solutions sont multiples, mais ne peuvent malheureusement pas être aussi simple qu'une mise à jour du framework comme cela a pu être fait également pour Windows 10 Creators Update et son effet sur les aperçus (cf. FAQ 14686) :

 

  1. Fournir une version de l'application compilée en 64 bits - c'est la solution recommandée. Si elle n'existe pas pour l'application, il suffit d'ajouter une nouvelle configuration de projet qui permettra de créer un exécutable 64 bits en plus ou à la place de l'exécutable 32 bits existant.


  2. En conservant l'exécutable 32 bits, il faut nécessairement un redémarrage régulier de l'application, mais également et surtout du processus splwow64.exe. Le redémarrage seul de l'application n'est pas suffisant, puisqu'elle n'est pas à l'origine de la consommation. Il faut un arrêt du processus splwow64.exe. Différentes solutions peuvent être mises en œuvre :
    • utiliser la fonction EXETermine pour stopper le processus,
    • utiliser un tache planifiée qui terminerait le processus en ligne de commande (cf. taskkill dans Very High Memory Commit Charge ) ...

      Dans tous les cas l'arrêt de splwow64.exe ne doit pas être fait pendant qu'une impression est en cours.


Même si les applications 64 bits sont maintenant à privilégier, il reste cependant probable qu'une prochaine mise à jour de Windows 10 restaure un comportement amélioré de splwow64.exe, évitant ainsi toute complication...

 

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée