Renommer l’exécutable vers game.exe entraîne un délai de 15 secondes lors de l’exécution – problème STRANGE

Cela secoue ma compréhension des ordinateurs et des systèmes d’exploitation à un niveau qui me rend très mal à l’aise. Je viens de passer environ une heure à saisir différentes itérations de commandes de compilation dans g++ et dans mon exaspération, j’ai renommé le fichier exécutable qui game.exe toujours le délai de game.exe à gameg.exe et soudain le problème a disparu.

Voici un peu plus d’arrière-plan: je remarquais récemment que lorsque j’ai exécuté la version de test d’unité Eclipse, lorsque je commençais avec un test activé par SDL, cela ouvrait la fenêtre SDL et se figeait pendant environ 20 secondes avant de pouvoir lancer le test. Lors des tests suivants (qui appellent SDL_Quit() et réinitialisent SDL dans le cadre du processus de test), ce délai n’est pas présent. Maintenant, j’ai constaté que SEULEMENT quand l’exécutable s’appelle exactement “game.exe” cela se produit! Je le renomme en un autre nom de fichier et il exécute des tests avec plaisir, en initialisant le système SDL en une seconde comme il le fait habituellement. J’avais supposé auparavant qu’il devait y avoir une sorte de bogue qui provoquait ce comportement de ma version d’Eclipse qui n’était pas présent dans la compilation makefile, mais il s’avère que si j’éclipse la compilation et renomme son exécutable (le dossier du projet il est appelé game donc game.exe ) il ne présente pas le comportement.

De même, je prends mon build makefile (dont le nom de fichier est entropy_unittest_disp.exe fyi) et le renommer en game.exe et il commence à le faire. Je le renomme en game et il le fait aussi (je cours à partir de bash de mingw .. lorsque ce n’est pas avec l’extension .exe , l’explorateur ne sait pas qu’il s’agit d’un exécutable). Cependant, je l’ai changé pour game.exx et cela a fonctionné normalement.

QU’EST-CE QUE CETTE MAGIE NOIRE? Pourquoi un programme devrait-il fonctionner différemment selon son nom de fichier ??? Je fais une requête sur argv [0] et je le fais pour imprimer afin de consolider sa valeur (à des fins de débogage) mais, sans surprise, il imprime simplement le programme et son chemin. Aucune logique n’y est jamais appliquée dans mon programme.

J’ai essayé de lancer GDB pour savoir où il gèle mais une fois que j’appuie sur Ctrl + C GDB quitte simplement.

Quelqu’un at-il une idée de ce que cela pourrait être causé par? Un virus?

edit: J’ai téléchargé cette démo de ce site: http://www.sdltutorials.com/sdl-opengl-tutorial-basics/

extrait, renommé le fichier à game.exe, et yup, la même chose se produit. QU’EST-CE QUE C’EST? Je vais essayer de lancer un programme de dépendance pour voir si quelque chose essaie de s’y accrocher.

Je suppose que vous avez soit une carte graphique AMD (ATI) ou Nvidia avec leurs pilotes officiels.

Les chances sont, game.exe est le nom exécutable pour un jeu réel publié et vos pilotes exécutent des optimisations spéciales pour le “jeu” ou le chargement des profils Crossfire ou SLI pour ce jeu. Une recherche rapide sur Google semble me dire que Resident Evil 4 appelle leur exécutable “game.exe”.

Je recommande de regarder ce lien pour plus de détails sur ce qui peut arriver:

http://www.kn00tcn.net/site/ati-catalyst-profiles/

pas sûr de savoir comment répondre au commentaire de steven sur la réponse en haut, mais en ce qui concerne les profils de pilotes, il ne s’agit que d’une vérification de base par force brute des noms de fichiers .exe

certains jeux sont garantis dans un sous-dossier spécifique, de sorte que le pilote recherche l’ emplacement de l’exe, tel que “\ team fortress 2 \ hl2.exe”

mais comme la plupart des jeux vous permettent de choisir le nom du dossier sur lequel vous installez, et souvent, l’exe se trouve dans le même dossier racine, les pilotes n’ont pas d’autre choix que de supposer aveuglément que gameX.exe sera gameX

un effet secondaire intéressant est que vous pouvez forcer d’autres profils de jeu sur n’importe quel jeu à des fins de dépannage, ou pour essayer d’activer la mise à l’échelle CF / SLI.

alors essayez toujours de vous assurer que votre exécutable a un nom d’origine pour savoir que le pilote gfx n’essaie pas d’exécuter des optimisations faites exclusivement pour d’autres jeux

Cela pourrait-il être dû au logiciel anti-virus exécuté sur votre système d’exploitation? Certains fichiers sont couramment utilisés dans Virus “Game.exe” et peuvent être l’un d’eux, et donc des précautions supplémentaires de la part d’OS / AV pour garantir leur sécurité.

Testez-le dans des fenêtres propres, sans installation de logiciel supplémentaire, si cela fonctionne bien, alors peut-être avez-vous des logiciels de protection comme Anti-virus ou sandbox, … si l’un de ces logiciels les désactive et les teste à nouveau

Vérifiez si game.exe est répertorié dans la clé de Registre Options d’exécution des fichiers image HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options . Il peut être utilisé pour lancer un programme particulier en tant que débogueur pour une application avec un nom particulier. ( Plus d’informations sur les options d’exécution de fichier image )

Un EXE se comportera différemment en fonction de son nom dû à AppCompat Shimming. Vérifiez la liste des modules chargés et vérifiez s’il existe un tas de DLL commençant par “ac” dans votre application.