Oops del nucli en iniciar la VPN: proves que val la pena conservar
Una caiguda en iniciar la VPN necessita la compilació del nucli corresponent i el primer rastre, no una captura de l'última línia. Decidiu què cal desar abans de reiniciar de nou.
Iniciar el client de VPN és una marca temporal convenient, no una causa, i aquesta distinció decideix què passa després. Quan un Oops del nucli cau prop d'aquell moment, l'elecció és entre recollir un informe d'error útil i provocar la mateixa caiguda cinc vegades més en una màquina de producció. Deseu quatre coses abans de reiniciar: la compilació exacta del nucli, el primer rastre de l'error, l'estat de taint i una descripció breu de tota la resta que va canviar en el mateix minut. La resta és interpretació, i la interpretació pot esperar fins que les proves siguin en un lloc segur.
Captureu la primera fallada, no l'última línia
El primer Oops del registre és el que importa, perquè cada fallada posterior pot ser un dany col·lateral d'un nucli que ja no és sa. Copieu la capçalera juntament amb el rastre de crides, ja que la capçalera porta la instrucció que va fallar i l'estat dels registres que identifiquen el camí del codi. Un informe que comença a l'última línia val molt poc per a qui el llegeixi una setmana després.
Si la màquina ja s'ha reiniciat, el búfer del nucli de l'arrencada anterior sovint encara és al registre, sempre que en aquell moment estigués activat l'emmagatzematge persistent. Llegiu-lo del fitxer desat en lloc de recrear la càrrega de treball, perquè una segona reproducció pot sobreescriure el que necessiteu. On la màquina no pot conservar un registre entre reinicis, una consola sèrie o netconsole és l'única manera que la fallada arribi a ser visible.
Fixeu la compilació abans de llegir cap símbol
Els noms de funcions i els desplaçaments només tenen sentit respecte al binari que els va produir, així que anoteu la cadena de versió del nucli i l'identificador de compilació de la distribució alhora. Un fitxer de símbols d'una altra compilació apunta a la línia equivocada amb total confiança, cosa que és pitjor que no tenir cap símbol. Conserveu la versió del paquet del nucli, no només el número upstream, perquè les distribucions fan moltes retroportacions.
Els mòduls fora de l'arbre mereixen la seva pròpia línia al registre, ja que un nucli marcat limita què pot concloure un mantenidor. Llegiu el valor de taint en lloc d'inferir-lo d'una llista de mòduls.
Un taint diferent de zero no és una acusació i no fa que l'informe sigui inútil. Indica al lector quins components estaven carregats quan va passar la fallada, i alguns indicadors fan que un informe baixi de prioritat per política i no per judici. Anoteu el valor, els noms dels mòduls i si el mateix maquinari i la mateixa càrrega van executar mai un nucli sense ells. Aquesta última comparació és el que separa una regressió nova d'un error de fa temps.
Separeu un disparador d'un defecte
Iniciar el túnel normalment exerceix un camí que ja existia: un controlador de xarxa, una disciplina de cua, una funció d'offload o un estat d'energia. El disparador explica quan apareix la fallada, no quin codi és incorrecte, i tractar el disparador com la causa porta a una sèrie de canvis de configuració que no arreglen res.
Una imatge anterior que funciona és una prova, no una demostració. Canvieu un component per arrencada quan compareu, i guardeu els resultats en un lloc que sobrevisqui a la màquina.
Comproveu què pot fer servir realment el mantenidor
Llegiu l'informe com ho faria un desconegut abans d'enviar-lo. Si hi ha la configuració, la seqüència exacta i la identitat de la compilació, i les credencials han desaparegut, l'informe és utilitzable. Si és una captura d'un rastre de pila, tornarà amb una petició de la mateixa informació. La guia de caça d'errors del nucli descriu com han de ser un rastre útil i uns símbols coincidents.
uname -r
cat /proc/sys/kernel/tainted
journalctl -k -b -1 --no-pager | sed -n '/BUG:/,/Call Trace/p'
dmesg -T | grep -A 40 'RIP:'
Totes les ordres anteriors només llegeixen estat, i les dues primeres s'haurien d'executar abans del següent reinici si la màquina encara pot respondre-hi. On el registre no persisteix, aquestes dues són les úniques que tornaran a funcionar mai.
Redacteu claus, contrasenyes i trànsit no relacionat, però conserveu els noms de funcions i els desplaçaments que algú necessita per llegir el rastre. Envieu el material pel camí de notificació que correspongui a la distribució o al nucli, no per un enganxament públic amb un nom d'amfitrió adjunt. Després espereu una pregunta en lloc de collir més caigudes, perquè una fallada localitzada contra una compilació coincident és l'únic resultat que fa avançar l'informe. Si no torna res, l'alternativa és una reproducció controlada en maquinari de reserva, mai a la màquina de la qual depenen altres persones.