- Un bug vieux de 20 ans dans GTA San Andreas refait surface sur Windows 11 24H2
- Un bug a été signalé dans GTA San Andreas où l’avion Skimmer disparaît sous Windows 11 24H2
- Le problème n’est pas résolu même avec SilentPatch
- Le problème ne se produit pas sous Windows 11 23H2
- Tous les utilisateurs ayant mis à jour vers Windows 11 24H2 rencontrent ce bug
Analyse du bug
Qu’est-ce qui ne va pas ?
- Lors de l’installation de SilentPatch, le jeu se fige
- Il a été constaté que
CPlane::PreRender se retrouve coincé dans une petite boucle
- La vitesse des hélices de l’avion est définie à une valeur anormalement élevée
- La vitesse des hélices est calculée proportionnellement à l’altitude de l’avion
Pourquoi et comment ?
- Un paramètre requis manque dans la définition de Skimmer dans
vehicles.ide
- Dans Vice City, Skimmer était défini comme un bateau
- Dans San Andreas, il a été transformé en avion, mais le paramètre nécessaire n’a pas été ajouté
La véritable cause racine
- Le problème est dû à un changement dans la manière dont la pile est utilisée sous Windows 11 24H2
LeaveCriticalSection utilise désormais davantage d’espace sur la pile
- Auparavant,
fgets et LeaveCriticalSection n’écrasaient pas cet espace sur la pile, mais c’est désormais le cas
Pourquoi ce problème apparaît-il seulement maintenant ?
- Les changements de Windows 11 24H2 ont modifié l’espace de pile
- Le jeu utilisait une variable locale non initialisée, ce qui a provoqué le problème
- Le bug avait déjà été corrigé sur d’autres plateformes
Vous voulez corriger ce problème dans le jeu ?
- Le prochain hotfix de SilentPatch inclura une correction dans le code
- Il est aussi possible de corriger le problème en modifiant manuellement le fichier
vehicles.ide
Mot de la fin
- Ce bug est intéressant parce qu’il est directement lié à une version précise de l’OS
- Il montre qu’un changement dans la disposition de la pile peut affecter la compatibilité
- Il ne faut pas négliger la validation des données d’entrée ni ignorer les avertissements du compilateur
1 commentaires
Avis Hacker News
scanfpour confirmer qu’elle correspond au nombre de paramètres. Sinon, cela ressemble à une erreur dans un fichier de données que le compilateur ne peut pas connaître-fsanitize=undefined,addresspour détecter les comportements indéfinis à l’exécution