Wiki source code of Une application générée en C ne s'exécute pas sur un poste sans aucune erreur en sortie alors qu'elle fonctionne sur un autre poste.
Last modified by Isabelle FERRIERE on 2021/10/07 14:42
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | |||
| 2 | {{hardis-info type="warning" icon="true"}} | ||
| 3 | A partir de Windows 7 et 2008 Server, et en particulier dans le cas de machines 64 bits, mieux vaut utiliser Process Monitor via la procédure suivante : [[procédure process monitor.doc>>attach:procédure process monitor.doc]] | ||
| 4 | {{/hardis-info}} | ||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 | Une possibilité qui empêcherait une application générée par Adélia Studio de fonctionner est que l'initialisation de l'exécution échoue (au moment du chargement des dll dépendantes). | ||
| 9 | |||
| 10 | Pour vérifier cela, il faut "profiler" le chargement des dll grâce à l'outil Depends.exe normalement fourni avec Visual Studio. | ||
| 11 | ATTENTION : il faut la version 32 bits de Depends.exe car Adélia Studio ne génère que des applications 32 bits. | ||
| 12 | Si vous ne l'avez pas, vous pouvez demander le lien de téléchargement à la hotline. | ||
| 13 | Dézippez dans un nouveau répertoire et lancez depends.exe | ||
| 14 | ((( | ||
| 15 | == Utilisation de Depends.exe : == | ||
| 16 | ))) | ||
| 17 | |||
| 18 | Dans File/Open, sélectionnez votre exe (il peut y avoir un message d'erreur, poursuivez, ce message apparaîtra dans la trace finale) | ||
| 19 | Dans Profile/Start profiling... saisissez les paramètres de votre programme, s'il en a. | ||
| 20 | Cochez la case "Use full paths when logging file names" pour avoir le chemin complet des dll chargées : | ||
| 21 | |||
| 22 | [[image:depends.png]] | ||
| 23 | |||
| 24 | Faites Ok. | ||
| 25 | |||
| 26 | A la fin du rapport, regardez avec attention les dernières erreurs. Il est fort possible que votre problème de non exécution soit lié à une de ces erreurs. | ||
| 27 | Pour sauver le rapport, par exemple pour l'envoyer à la hotline, utiliser l'option File/Save As... | ||
| 28 | ((( | ||
| 29 | == Exemple d'erreur déjà rencontrée par quelques clients : == | ||
| 30 | ))) | ||
| 31 | |||
| 32 | Fin de rapport de Depends.exe : | ||
| 33 | |||
| 34 | |||
| 35 | {{code language="none"}} | ||
| 36 | Loaded "LGSCROLL.DLL" at address 0x10100000. Successfully hooked module. | ||
| 37 | DllMain(0x10100000, DLL_PROCESS_ATTACH, 0x00000000) in "LGSCROLL.DLL" called. | ||
| 38 | Unloaded "LGSCROLL.DLL" at address 0x10100000. | ||
| 39 | LoadLibraryExW("C:\Program Files\Logitech\SetPoint\lgscroll.dll", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL. Error: Récurrence trop profonde; la pile a débordé (1001). | ||
| 40 | LoadLibraryExW("C:\Program Files\Logitech\SetPoint\lgscroll.dll", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) called from "USER32.DLL" at address 0x7E3A8055. | ||
| 41 | Loaded "LGSCROLL.DLL" at address 0x10100000. Successfully hooked module. | ||
| 42 | DllMain(0x10100000, DLL_PROCESS_ATTACH, 0x00000000) in "LGSCROLL.DLL" called. | ||
| 43 | Second chance exception 0xC0000005 (Access Violation) occurred in "NTDLL.DLL" at address 0x7C9251FE. | ||
| 44 | {{/code}} | ||
| 45 | |||
| 46 | |||
| 47 | Dans ce rapport, on s'aperçoit que lgscroll.dll fait exploser la pile d'exécution, ce qui est fatal à l'application. | ||
| 48 | Pour ce type de problème, externe à Adélia, il est nécessaire de chercher sur internet pour voir si la société éditrice du logiciel (ici Logitech pour son logiciel SetPointer) n'a pas une solution ou voir si quelqu'un a eu le même problème et a eu une réponse pertinente. | ||
| 49 | Au pire, il faut désactiver ce logiciel (ici, arrêter un service SetPointer ou désenregistrer la dll : regsvr32 -u lgscroll.dll) | ||
| 50 | ((( | ||
| 51 | == Autre cas : On obtient l'erreur "Runtime error" "R6030 - CRT not initialized" : == | ||
| 52 | ))) | ||
| 53 | |||
| 54 | Résolution de l'erreur R6030 - CRT not intialized : utiliser un runtime Adélia Studio V12 ou plus | ||
| 55 | |||
| 56 | Ce problème semble être lié aux programmes compilés avec une version Visual Studio 2008 du compilateur qui ont donc besoin du Runtime Microsoft Visual C++ 2008 Redistributable. | ||
| 57 | Vérifier d'abord que ce runtime est bien installé sur votre machine (Dans Ajout/Suppression de programme). | ||
| 58 | |||
| 59 | Utilisez la procédure décrite ci-dessus avec l'outil Depends.exe. | ||
| 60 | En effet il peut s'agir d'un conflit avec un autre logiciel installé sur la machine. | ||
| 61 | Dans le rapport du Depends il n'y a pas forcément d'erreur significative. | ||
| 62 | Regarder les dll qui sont chargées et qui vous paraissent suspectes. Généralement ce sont des dll qui ne se trouvent pas dans le répertoire système de la machine (c:\windows\system32). | ||
| 63 | |||
| 64 | - Chez un client le logiciel IMBOOSTER (éditeur IMINENT fournit des émoticônes pour messagerie) provoqué l'erreur. | ||
| 65 | Dans le rapport on pouvait voir que l'une de ses dll était chargée mais sans provoquer d'erreur : | ||
| 66 | Loaded "c:\program files\iminent\imbooster\IMINENT.WINCORE.DLL" at address 0x01360000. Successfully hooked module. | ||
| 67 | |||
| 68 | Il suffit ensuite de le désactiver via MSCONFIG.exe ou de le désinstaller. | ||
| 69 | |||
| 70 | - Autre cas de l'erreur R6030, cette fois avec CITRIX : il apparaît dans le rapport du depends.exe qu'il y a un problème de hooking avec CSMA_LDR.dll. La solution 2) décrite dans [[http://blogs.technet.com/b/virtualworld/archive/2010/07/07/r6030-crt-not-initialized.aspx>>url:http://blogs.technet.com/b/virtualworld/archive/2010/07/07/r6030-crt-not-initialized.aspx]] d'exclure l'application générée du hooking a résolu le problème. | ||
| 71 | |||
| 72 | - Autre cas : | ||
| 73 | |||
| 74 | (% style="margin-left: 30.0px;" %) | ||
| 75 | - Applications à désinstaller : Applian FLV Player 2.0 ou FreeCorder ou PDFForge toolbar | ||
| 76 | - Plus problématique : Lenovo Password Manager (gestion des empreintes comme mot de passe sur les portables LENOVO) peut conduire au même problème. Seule solution pour le moment : soit le désinstaller soit l'arrêter (depuis la tray icon) | ||
| 77 | ((( | ||
| 78 | == (% style="line-height: 1.5;" %)Articles connexes(%%) == | ||
| 79 | ))) | ||
| 80 | |||
| 81 | Les articles connexes apparaissent ici en fonction des étiquettes que vous avez sélectionnées. Cliquez pour modifier la macro et ajouter ou modifier des étiquettes. | ||
| 82 | |||
| 83 | {{liveData sort="doc.date:desc" source="liveTable" properties="doc.title,doc.date,doc.author" description="Recently updated" limit="5" filters="tag=visual crash" sourceParameters="translationPrefix=platform.index."}}{{/liveData}} | ||
| 84 |