Crashs des addins sur OS 3.80 [fx-CG50 et Graph 90+E] - Documentation
Posté le 09/04/2023 13:35
J'ai installé l'OS 3.80 sur ma Graph 90+E afin de documenter un peu mieux
les crash signalés ici avec les addins.
Tout d'abord, je n'ai pas remarqué de crash lors du lancement d'un premier lancement d'addin. Le premier addin lancé fonctionne parfaitement. J'ai testé :
- Rogue Life
- Frozen Frenzy
- Crystal Tower
- Oiram
- Outrun avec modif de la vérif d'OS pour passer sur 3.80 (Extra Mémoire)
- Shmup
- l'addin Scrutinize (addin perso qui regarde les limites de la mémoire utilisable au delà de 0x8C200000)
Tout semble Ok, pas de crash. Ensuite on sort et on lance un autre addin, le crash est assez aléatoire.
Par contre en commençant avec Scrutinize.g3a (cf archive jointe, source et g3a dedans), j'ai le crash quasi systématiquement sur l'addin lancé après quel qu'il soit avec un TLB ERROR. Donc c'est assez intéressant.
Les combinaisons suivantes amènent au crash. Un RESET (bouton au dos de la machine) est effectué entre chaque cas je précise. Entre parenthèses, je mets le TARGET et le PC précisé dans la fenêtre de crash) :
- Scrutinize + Crystal Tower (Crash TLB ERROR : Target=006E000F PC=00000013).
- Scrutinize + Outrun (Crash TLB ERROR : Target=00560069 PC=00000013).
- Scrutinize + Frozen Frenzy (Crash TLB ERROR : Target=20202020 PC=00000013).
Parc contre
- Scrutinize + Rogue Life passe
- Scrutinize + gint Control passe
- Scrutinize + shmup passe
En faisant Shmup + Rogue Life ça passe mais un Frozen Frenzy lancé à la suite crash avec aussi un TLB ERROR.
Target=20202020 et PC=00000013.
En passant, Scrutinize me permet de voir que c'est toujours Ok pour la RAM dispo entre 0x8C200000 et 0x8C4E0000.
Donc ça c'est toujours comme sur 3.60 et 3.70, ça n'a pas bougé.
Voila donc qq infos en plus.
Fichier joint
Citer : Posté le 09/04/2023 13:43 | #
Pour info je n'arrive pas à màj ma calto, VirtualBox me fait des ennuis avec l'USB. Je suis dessus...
Peux-tu trouver le plus petit add-in possible sur lequel tu arrives à avoir une erreur et/ou à provoquer une erreur lors du lancement de l'add-in suivant ? Note bien le TARGET/PC et garde une copie de l'ELF qui va avec.
PC=00000013 n'a aucun sens et est extrêmement flagrant, mon intuition est de partir de là et de remonter.
Citer : Posté le 09/04/2023 14:03 | #
Je pars sur la config propre comme cela :
fxsdk new test
fxsdk build-cg -s -B
Je lance l'addin de base sans rien toucher : OK.
Je lance ensuite Outun, et crash : (Crash TLB ERROR : Target=00560069 PC=00000013).
Identique au cas précédent avec Scrutinize + Outrun (Crash TLB ERROR : Target=00560069 PC=00000013).
Du coup je garde cet addin de base et je réduis Outun pour produire le crash et essayer de trouver l'addin mini qui fait crash.
Citer : Posté le 09/04/2023 14:08 | #
Très bon début. N'hésite pas à compiler un add-in sans gint tant qu'à faire.
Citer : Posté le 09/04/2023 14:42 | #
Un addin minimum se limitant à
{
return 1;
}
Compilé via le CMakeLists.txt usuel reproduit le crash à l'identique aussi.
Bon par contre j'ai pas autre chose que fxSDK/gint d'installé donc sans gint ça va être tendu.
Citer : Posté le 09/04/2023 14:57 | # | Fichier joint
Bon je sais pas si j'ai fait ce qu'il faut :
je suis parti sur un projet avec makefile
fxsdk new test2 --makefile
j'ai réduit le main.c à
{
return 1;
}
puis dans projet.cfg
j'ai changé les lignes du linker pour virer gint comme ceci
LDFLAGS_FX := -T fx9860g.ld $(LIBS_FX) -lgcc
LDFLAGS_CG := -T fxcg50.ld $(LIBS_CG) -lgcc
je build, j'ai un addin de 29668 octets.
je reproduis le crash à l'identique avec Outrun :
TLB ERROR : Target=00560069 PC=00000013.
Ci joint l'archive avec le .bin, le .elf, le .g3a, les sources et le .map associés.
Citer : Posté le 09/04/2023 15:16 | # | Fichier joint
Ce que tu as fait avec le Makefile ne marcherait pas parce que tu as utilisé le linker script de gint. Je te joins une archive avec l'add-in le plus petit possible pour la plateforme.
Citer : Posté le 09/04/2023 15:19 | #
Bon avec ton addin "AbsoluteMini" et Outrun, exactement le même résultat : Crash avec TLB ERROR : Target=00560069 PC=00000013.
Citer : Posté le 09/04/2023 15:22 | #
C'est OutRun qui crashe on est d'accord ? Ça m'embêterait que ce programme minimal plante sans qu'un autre add-in ne soit impliqué...
En tous cas bon début. Vois si tu peux minimiser OutRun et/ou impliquer un add-in officiel de CASIO.
Pendant ce temps-là je bataille toujours avec VirtualBox aaaargh qu'est-ce que j'ai fait pour que la pile USB s'effondre comme ça.
Citer : Posté le 09/04/2023 16:17 | #
J'ai ENFIN réussi à mettre à jour ma calculatrice... le driver USB 2 aura refusé de marcher jusqu'au bout, mais le driver USB 3 a bien voulu coopérer. Les crashs sortent tout le temps, c'est donc pas dur à reproduire... je regarde ce soir.
Citer : Posté le 09/04/2023 16:29 | #
Oui c'est bien OutRun qui crash, jamais eu de crash au premier lancement d'addin, c'est toujours le numéro 2 ou après.
Citer : Posté le 09/04/2023 16:47 | #
Mais est-ce que tu peux obtenir un crash en lançant l'add-in minimal en second ? C'est ça la question.
Parce qu'en gros le problème c'est qu'un état incorrect est atteint entre le premier et le deuxième add-in. Le plus simple c'est d'utiliser le deuxième add-in pour bisect le moment du crash et observer l'état de la calculatrice juste avant l'erreur.
Mon espoir c'est que l'erreur se produit bel et bien dans le deuxième add-in, ce qui nous donnerait de la marge pour chercher. Si l'erreur se produit par exemple dans le lanceur d'add-ins dans l'OS, ce sera plus compliqué pour enquêter.
Citer : Posté le 09/04/2023 17:01 | # | Fichier joint
Alors très très intéressant :
je compile 2 versions disctintes de absmin.g3a pour pouvoir les lancer et le crash se produit bien sur le deuxième !!! Yes
TLB ERROR : Target=7A000000 - PC=00000013 (toujours le même PC)
Je joins l'archive avec tout dedans.
Par contre, un truc vraiment bizarre (je précise que j'ai refais plusieurs fois (x3) pour être bien sûr de mon coup et pas raconter des bétises) :
- si je commence par lancer "AbsoluteMin" suivi de "AbsoluteMin2", j'ai le crash avec TLB ERROR : Target=7A000000 - PC=00000013 au lancement du deuxième addin.
- si je commence par lancer "AbsoluteMin2", suivi de "AbsoluteMin", je n'ai pas le crash au lancement du second addin. Si je lance alors "AbsoluteMin2", cette fois le crash se produit avec TLB ERROR : Target=7A000000 - PC=00000013, donc au lancement du troisième addin.
C'est quand même un peu bizarre car les addins sont strictement identiques au nom près...
Citer : Posté le 09/04/2023 17:16 | #
Pour être encore un peu plus sûr, j'ai séparé les dossiers de build des deux addins (car dans mon message précédent le dossier de build était le même donc ça réutilisait le .o").
Strictement même phénomène observé, y compris le truc bizarre. Seul changement, le message devient ici TLB ERROR : Target=006E000F PC=00000013.
Citer : Posté le 09/04/2023 17:34 | #
Très intéressant, merci. Donc on est d'accord que même avec deux fichiers identiques au nom près du G3A (et donc en particulier ayant les mêmes contenus à l'octet près !) tu as encore des variations dépendant de l'ordre de lancement ?
Le lanceur serait donc certainement en cause. AbsoluteMin ne fait rien à part return immédiatement. Vu que ça dépend de l'ordre on peut soupçonner la routine d'enregistrement des add-ins, peut-être en lien avec le fait que RUN/MAT a décalé tout le monde dans la liste.
Est-ce qu'un reset de la mémoire de stockage (à divers degrés) aiderait à réinitialiser la liste ?
Citer : Posté le 09/04/2023 17:54 | #
Attends c'est encore pire que ça, je vais essayer d'être hyper clair car c'est vraiment tordu:
J'ai trois version de mon addin minimal :
- version 1 obtenue en faisant make -f Makefile pour faire un build via le dossier /build --> il se nomme absmin.g3a
- version 2 obtenue en faisant make -f Makefile-2 pour faire un build via le dossier /build2 --> il se nomme absmin2.g3a
- version 3 obtenue en faisant cp absmin1.g3a absmin3.g3a et qui est donc une copie conforme de absmin.g3a au nom de fichier près
Pour simplifier je vais écrire (X) = je lance la version X de l'addin
donc:
(1) puis (2) --> crash TLB ERROR : Target=006E000F PC=00000013.
(2) puis (1) --> OK --> puis (2) --> crash TLB ERROR : Target=006E000F PC=00000013.
Donc on confirme ce que j'avais remarqué avant
Maintenant, on pousse un peu :
(1) puis (3) puis (1) puis (3) puis (1) puis (3) puis (1) .... OK --> puis (2) --> crash dès que je lance la version 2
(3) puis (1) --> OK --> puis (2) --> crash TLB ERROR : Target=006E000F PC=00000013. Au moins ça c'est logique.
(2) puis (3) puis (2) --> crash TLB ERROR : Target=006E000F PC=00000013.
donc une copie du fichier passe en second, par contre pas Ok avec deux build différents à partir des même sources.
Je précise que depuis je crash plus OutRun et Frozen Frenzy ...
Je teste de reset la mémoire de stockage. Va Falloir un peu de temps car faudra que je remette des trucs ensuite pour tester.
Citer : Posté le 09/04/2023 18:05 | #
Suite :
Essais réinitialisation mémoire de stockage :
SYSTEME --> F5 --> F4 --> F1 : ça change rien
Essai optimisation mémoire de stockage :
MEMOIRE --> F5 : Crash mais avec un autre Target ; TLB ERROR : TARGET=0052000F / PC=00000013
Essais réinitialisation Ajout+Stockage :
SYSTEME --> F5 --> F5 --> F1 : j'arrive plus à faire crasher quelque soit l'ordre, testé environ 20 lancements dans divers ordres de absmin1/2/3
visiblement cela résous le problème. Tes doutes sont peut être bien fondés, visiblement un coup de propre remet tout en ordre.
Citer : Posté le 09/04/2023 18:21 | #
Fausse joie.
Problème non "résolu".
J'arrive plus à reproduire avec les addins absolutemin, mais par contre si je lance OutRun puis Shmup, je crash encore (TARGET=20202020 PC=13)
OutRun + Rogue Life + OutRun c'est OK
+ absolutemin c'est OK
+ shmup : crash TARGET=20202020 PC=13
--> moralité : retour au point de départ à chercher le mini qui fait planter.
Citer : Posté le 09/04/2023 18:38 | #
J'ai réussi à reproduire le problème avec uniquement des add-ins officiels. Le problème est inévitablement à faire remonter à CASIO.
Citer : Posté le 09/04/2023 18:39 | #
J'ai réussi à reproduire le problème avec uniquement des add-ins officiels. Le problème est inévitablement à faire remonter à CASIO.
Ah, je venais de tester avec des addins officiels, sans problème.
Peux-tu préciser, stp ? Tu avais pris quoi en 1er et 2ème addin ?
Citer : Posté le 09/04/2023 18:40 | #
Plot Image en 1er et Sim Prob en 2e. Sim Prob est celui qui crashe.