docs(amont): le dbgsym peut être posé sans risque, et sans toucher au banc

Vérifié plutôt que supposé. La version EXACTE qui a planté est encore au
dépôt nymea — indispensable, car des symboles d%sune autre version ne
résolvent pas un offset, ils le résolvent FAUX.

Trois points qui rendent l%sopération sûre : la version exacte existe ;
l%sépinglage évite la cascade (sans lui apt prendrait la 1.16.0 et mettrait à
jour toute la pile de développement) ; et ces paquets sont amd64, Section
debug, n%sinstallant que /usr/lib/debug — le banc est arm64 et ne peut pas
être affecté.
This commit is contained in:
Patrick Schurig 2026-09-01 07:05:52 +02:00
parent 62aa51bbe5
commit 24d8f55997

View File

@ -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' <binaire> <core>
```
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.