Files
sanctuary-beta/docs/tooltip-crash-beta093.md
T
2026-09-17 03:10:39 +02:00

86 lines
4.3 KiB
Markdown

# beta.093 — Recherche créative et infobulles des familiers
Branche `codex/async-tooltip-crash-beta093`, Minecraft 26.3.
## Diagnostic
Le rapport fourni concerne Windows, Sanctuary beta.089 et Minecraft 26.3-pre-2.
Pendant la saisie d'un `w`, la recherche créative attend son index asynchrone.
Cet index construit les infobulles sur un worker (`SessionSearchTrees`), puis
`CompanionTooltips` appelle `Font.getSplitter().splitLines`. La mesure d'un glyphe
non encore chargé peut déclencher une écriture de texture, en concurrence avec
une passe de rendu : `Close the existing render pass before performing additional
commands`. L'exception du worker remonte ensuite par la saisie de caractères.
La même mise en page était encore présente en beta.092 ; le correctif cible la
version actuelle 26.3 finale. Il ne nécessite aucun changement de pilote graphique.
## Correction
Les deux chemins de descriptions, catalogue actuel et pouvoirs historiques,
utilisent un même point de mise en page. Sur le fil client, il conserve la largeur
adaptée à la fenêtre et le découpage habituel. Sur un worker, il renvoie des
composants textuels complets avec leur couleur, sans accéder à la police ni à la
fenêtre. La recherche garde les noms et descriptions ; aucune ligne n'est cachée
pour contourner le problème. Aucun travail graphique n'est renvoyé au fil client
avec attente, ce qui éviterait mal le crash et risquerait de bloquer l'indexation.
Aucune modification de sauvegarde, génération, règles de jeu, images ou registres.
Aucun déploiement dans une instance personnelle et aucun monde existant ouvert.
## Vérifications
Le parcours `Tooltip093ClientChecks` utilise un monde plat de développement neuf,
graine 42, et une sonde uniquement dans les GameTests. Cette sonde interdit tout
accès de mesure à la police depuis un worker, même lorsque ses glyphes sont déjà
en cache ; elle n'est pas embarquée dans le mod distribué.
Avant le correctif, le test échoue dans `CompanionTooltips` avec
`TOOLTIP093_OFF_THREAD_FONT`, ce qui reproduit l'accès interdit identifié dans le
rapport sans dépendre d'une course aléatoire du pilote. Journal :
`build/tooltip093-before-client.log`.
Après correction, le même parcours passe en **1 min 13 s** sur le client natif
Minecraft 26.3/macOS :
- 88 œufs, français/anglais, descriptions cryptiques/détaillées : construction
sur worker sans aucune mesure de police.
- Comparaison du texte indexé avec le texte affiché : contenu complet conservé,
malgré les retours à la ligne réservés à l'affichage.
- `SessionSearchTrees.updateCreativeTooltips`, recherche native et reconstruction
de l'index après changement de langue.
- Rechargement effectif des ressources, puis saisie native de `w` et `olf` dans
la recherche créative. Capture anglaise inspectée : le champ contient `wolf`
et affiche l'œuf de loup et son armure. Captures conservées dans
`build/tooltip093-evidence/`.
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryTooltip093ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Journal : `build/tooltip093-client.log`, marqueur `TOOLTIP093_PASS`.
## Livraison vérifiée
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 36 s**, 124 tâches (`build/tooltip093-check.log`).
Les exports, JAR et sources correspondent. Seule la classe de production
`CompanionTooltips` diffère de beta.092 ; aucune sonde GameTest n'est distribuée.
Images, données, JEI et anciennes archives restent identiques.
Reçu local : `build/tooltip093-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.093.mrpack), SHA-256
`35a1582c044955579a7120997864ff2080e276e81180ab9982397241ff4c3a1d`.
- [Pack Test](../build/Sanctuary-Test-beta.093.mrpack), SHA-256
`48c9abe733c2993a752413a34852223d35ad33e99d4f7e1d4f284969824dc275`.
## Limites
Le rapport initial est Windows/pre-2 ; les essais du correctif sont macOS/26.3
finale, avec serveur intégré de développement. L'accès fautif est reproduit
avec une sonde déterministe, sans revendiquer la reproduction exacte de la
course du pilote AMD. Serveur dédié exclu et aucune EULA acceptée. Les archives
locales ne mettent pas à jour une installation personnelle ni le canal packwiz.