diff --git a/docs/upstream/RAPPORT_nymea_logger_sigsegv.md b/docs/upstream/RAPPORT_nymea_logger_sigsegv.md index 3946612..6566eee 100644 --- a/docs/upstream/RAPPORT_nymea_logger_sigsegv.md +++ b/docs/upstream/RAPPORT_nymea_logger_sigsegv.md @@ -41,9 +41,26 @@ L'enchaînement — événement **posté**, délivré depuis la boucle glib, sur journalisation, en fin de vie de processus — a la forme d'un **usage après libération** : une invocation en file d'attente délivrée à un `Logger` déjà détruit pendant l'arrêt. -**C'est une hypothèse, pas une conclusion.** La trame `libnymea-core.so.1 + 0x1edae6` n'a pas pu -être symbolisée ici (paquet sans symboles de débogage). Avec `libnymea-dbgsym`, elle nommerait -l'appelant en une commande. +**C'est une hypothèse, pas une conclusion.** La trame `libnymea-core.so.1 + 0x1edae6` n'a pas +encore été symbolisée. Elle peut l'être, et **sans aucun risque** — vérifié le 2026-09-01 : + +```bash +V=1.15.2+202606191336~trixie1 # la version EXACTE qui a planté +sudo apt-get install libnymea1-dbgsym=$V libnymea-core-dbgsym=$V +gdb -batch -ex 'bt full' +``` + +Trois points qui rendent l'opération sûre, et qui méritent d'être vérifiés avant de la lancer : + +1. **La version exacte est encore au dépôt.** `libnymea1-dbgsym` et `libnymea-core-dbgsym` + existent en `1.15.2+202606191336~trixie1`. C'est indispensable : des symboles d'une autre + version ne résolvent pas un offset — ils le résolvent **faux**, ce qui est pire. +2. **L'épinglage évite la cascade.** Sans lui, `apt` prendrait la 1.16.0 et **mettrait à jour + toute la pile de développement** (`nymea-sdk`, `nymea-dev-tools`, `libnymea-core-dev`…), + changeant l'environnement de compilation. Avec les versions épinglées, l'installation + n'ajoute que les deux paquets de symboles : rien d'autre n'est touché. +3. **Le banc ne peut pas être affecté.** Ces paquets sont `Section: debug`, n'installent que + `/usr/lib/debug`, et sont **amd64** — la machine de développement. Le banc `.75` est arm64. Si l'hypothèse tient, elle a une conséquence de production : l'arrêt d'un `nymead` chargé peut laisser des écritures de journal en file, et le risque n'est pas limité aux tests.