Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Crashs des addins sur OS 3.80 [fx-CG50 et Graph 90+E] - Documentation
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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


1, 2, 3, 4, 5 Suivante
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 09/04/2023 14:42 | #


Un addin minimum se limitant à

int main(void)
{
    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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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 à
int main(void)
{
    return 1;
}

puis dans projet.cfg
j'ai changé les lignes du linker pour virer gint comme ceci
# Base linker flags for the fxSDK, you usually want to keep these.
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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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...
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

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 ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Critor Hors ligne Administrateur Points: 2610 Défis: 18 Message

Citer : Posté le 09/04/2023 18:39 | #


Lephenixnoir a écrit :
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 ?
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 09/04/2023 18:40 | #


Plot Image en 1er et Sim Prob en 2e. Sim Prob est celui qui crashe.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
1, 2, 3, 4, 5 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 59 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd