1. Linux Kernel Panicç产ççåå
panicæ¯è±æä¸æ¯ææ
çææï¼Linux Kernel panicæ£å¦å
¶åï¼linux kernelä¸ç¥éå¦ä½èµ°äºï¼å®ä¼å°½å¯è½æå®æ¤æ¶è½è·åçå
¨é¨ä¿¡æ¯é½æå°åºæ¥ã
æ两ç§ä¸»è¦ç±»åkernel panicï¼åé¢ä¼å¯¹è¿ä¸¤ç±»panicå详ç»è¯´æï¼
1.hard panic(ä¹å°±æ¯Aieeeä¿¡æ¯è¾åº)
2.soft panic (ä¹å°±æ¯Oopsä¿¡æ¯è¾åº)
2. 常è§Linux Kernel Panicæ¥éå
容ï¼
(1) Kernel panic-not syncing fatal exception in interrupt
(2) kernel panic â not syncing: Attempted to kill the idle task!
(3) kernel panic â not syncing: killing interrupt handler!
(4) Kernel Panic â not syncingï¼Attempted to kill init !
3. ä»ä¹ä¼å¯¼è´Linux Kernel Panic?
åªæå è½½å°å
æ ¸ç©ºé´ç驱å¨æ¨¡åæè½ç´æ¥å¯¼è´kernel panicï¼ä½ å¯ä»¥å¨ç³»ç»æ£å¸¸çæ
åµä¸ï¼ä½¿ç¨lsmodæ¥çå½åç³»ç»å è½½äºåªäºæ¨¡åã
é¤æ¤ä¹å¤ï¼å
建å¨å
æ ¸éçç»ä»¶ï¼æ¯å¦memory mapçï¼ä¹è½å¯¼è´panicã
å 为hard panicåsoft panicæ¬è´¨ä¸ä¸åï¼å æ¤æ们åå«è®¨è®ºã
4. hard panic
ä¸è¬åºç°ä¸é¢çæ
åµï¼å°±è®¤ä¸ºæ¯åçäºkernel panic:
æºå¨å½»åºè¢«éå®ï¼ä¸è½ä½¿ç¨
æ°åé®(Num Lock)ï¼å¤§åéå®é®(Caps Lock)ï¼æ»å¨éå®é®(Scroll Lock)ä¸åéªçã
å¦æå¨ç»ç«¯ä¸ï¼åºè¯¥å¯ä»¥çå°å
æ ¸dumpåºæ¥çä¿¡æ¯ï¼å
æ¬ä¸æ®µâAieeeâä¿¡æ¯æè
âOopsâä¿¡æ¯ï¼
åWindowsèå±ç¸ä¼¼
4.1 åå
对äºhard panicèè¨ï¼æ大çå¯è½æ§æ¯é©±å¨æ¨¡åçä¸æå¤ç(interrupt handler)导è´çï¼ä¸è¬æ¯å 为驱å¨æ¨¡åå¨ä¸æå¤çç¨åºä¸è®¿é®ä¸ä¸ªç©ºæé(null pointre)ãä¸æ¦åçè¿ç§æ
åµï¼é©±å¨æ¨¡åå°±æ æ³å¤çæ°çä¸æ请æ±ï¼æç»å¯¼è´ç³»ç»å´©æºã
æ¬äººå°±æ¾éå°è¿è¿æ ·ä¸ä¸ªä¾åï¼å¨å¤æ ¸ç³»ç»ä¸ï¼å
æ¬APåºç¨å¤çå¨ãmcuå¾®æ§å¶å¨åmodemå¤çå¨çç³»ç»ä¸ï¼mcuæ§å¶å¨ç¨äºç³»ç»çä½åèæ§å¶ï¼mcuå¾®æ§å¶å¨ç±äºæç§åå è¶
æ¶åAPåºç¨å¤çå¨åéä¸ä¸ªè¶
æ¶ä¸æï¼APæ¥åä¸æåè°ç¨ä¸æå¤çå½æ°è¯»åmcuçç¶æå¯åå¨ï¼åç°æ¯mcuçè¶
æ¶ä¸æï¼å°±å¨ä¸æå¤çç¨åºä¸ä¸»å¨å¼ç¨ä¸ä¸ªç©ºæéï¼è¿«ä½¿APå¤çå¨æå°å æ ä¿¡æ¯ç¶åéå¯linuxç³»ç»ãè¿å°±æ¯ä¸ä¸ªå
¸åçhard panicï¼è¿éä¸å¯¹mcuè¶
æ¶åå åæ·±å
¥çåæï¼åªæ¯ç¨æ¥è¯´æhard panic产ççæºçã
3.2 ä¿¡æ¯æ¶é
æ ¹æ®panicçç¶æä¸åï¼å
æ ¸å°è®°å½ææå¨ç³»ç»éå®ä¹åçä¿¡æ¯ãå 为kenrel panicæ¯ä¸ç§å¾ä¸¥éçé误ï¼ä¸è½ç¡®å®ç³»ç»è½è®°å½å¤å°ä¿¡æ¯ï¼ä¸é¢æ¯ä¸äºéè¦æ¶éçå
³é®ä¿¡æ¯ï¼ä»ä»¬é常éè¦ï¼å æ¤å°½å¯è½æ¶éå
¨ï¼å½ç¶å¦æç³»ç»å¯å¨çæ¶åå°±kernel panicï¼é£å°±æ æ³åªç¥éè½æ¶éå°å¤å°æç¨çä¿¡æ¯äºã
/var/log/messages: 幸è¿çæ¶åï¼æ´ä¸ªkernel panicæ è·è¸ªä¿¡æ¯é½è½è®°å½å¨è¿éï¼å½ç¶å¯¹äºåµå
¥å¼linuxç³»ç»ï¼kernel panicçå
æ ¸æå°ä¿¡æ¯è¢«æ¾å°/data/dontpanicç®å½ä¸ï¼å
æ¬ä¸¤ä¸ªæ件ï¼apanic_consoleåæ¾çæ¯å
æ ¸æ§å¶å°çlogï¼apanic_threadsåæ¾çæ¯linux kernelåçpanicæ¶çææå
æ ¸çº¿ç¨çå æ ä¿¡æ¯ã
åºç¨ç¨åº/åº æ¥å¿: å¯è½å¯ä»¥ä»è¿äºæ¥å¿ä¿¡æ¯éè½çå°åçpanicä¹ååçäºä»ä¹ã
å
¶ä»åçpanicä¹åçä¿¡æ¯ï¼æè
ç¥éå¦ä½éç°panicé£ä¸å»çç¶æ
ç»ç«¯å±å¹dumpä¿¡æ¯ï¼ä¸è¬OS被éå®åï¼å¤å¶ï¼ç²è´´è¯å®æ¯æ²¡æäºï¼å æ¤è¿ç±»ä¿¡æ¯ï¼ä½ å¯ä»¥éè¦åå©æ°ç ç¸æºæè
åå§ç纸ç¬å·¥å
·äºã
å¦ækernel dumpä¿¡æ¯æ¢æ²¡æå¨/var/log/messageéï¼ä¹æ²¡æå¨å±å¹ä¸ï¼é£ä¹å°è¯ä¸é¢çæ¹æ³æ¥è·åï¼å½ç¶æ¯å¨è¿æ²¡ææ»æºçæ
åµä¸ï¼ï¼
å¦æå¨å¾å½¢çé¢ï¼åæ¢å°ç»ç«¯çé¢ï¼dumpä¿¡æ¯æ¯ä¸ä¼åºç°å¨å¾å½¢çé¢çï¼çè³é½ä¸ä¼å¨å¾å½¢æ¨¡å¼ä¸çèæç»ç«¯éã
ç¡®ä¿å±å¹ä¸é»å±ï¼å¯ä»¥ä½¿ç¨ä¸é¢çå 个æ¹æ³ï¼
setterm -blank 0
setterm -powerdown 0
setvesablank off
ä»ç»ç«¯ï¼æ·è´å±å¹ä¿¡æ¯ï¼æ¹æ³è§ä¸ï¼
å®é
ä¸ï¼å½å
æ ¸åçpanicæ¶ï¼linuxç³»ç»ä¼é»è®¤ç«å³éå¯ç³»ç»ï¼å½ç¶è¿åªæ¯é»è®¤æ
åµï¼é¤éä½ ä¿®æ¹äºäº§çpanicæ¶éå¯å®æ¶æ¶é´ï¼è¿ä¸ªå¼é»è®¤æ
åµä¸æ¯0ï¼å³ç«å»éå¯ç³»ç»ãæ以å½panicæ¶æ²¡æækernelä¿¡æ¯å¯¼å
¥æ件çè¯ï¼é£ä¹å¯è½ä½ å¾é¾åæ¾å°panic产ççå°æ¹ã
3.3 å®æ´æ è·è¸ªä¿¡æ¯çææ¥æ¹æ³
æ è·è¸ªä¿¡æ¯(stack trace)æ¯ææ¥kernel panicæéè¦çä¿¡æ¯ï¼è¯¥ä¿¡æ¯å¦æå¨/var/log/messagesæ¥å¿éå½ç¶æ好ï¼å 为å¯ä»¥çå°å
¨é¨çä¿¡æ¯ï¼å¦æä»
ä»
åªæ¯å¨å±å¹ä¸ï¼é£ä¹æä¸é¢çä¿¡æ¯å¯è½å 为æ»å±æ¶å¤±äºï¼åªå©ä¸æ è·è¸ªä¿¡æ¯çä¸é¨åãå¦æä½ æä¸ä¸ªå®æ´æ è·è¸ªä¿¡æ¯çè¯ï¼é£ä¹å°±å¯è½æ ¹æ®è¿äºå
åçä¿¡æ¯æ¥å®ä½panicçæ ¹æ¬åå ãè¦ç¡®è®¤æ¯å¦æä¸ä¸ªè¶³å¤çæ è·è¸ªä¿¡æ¯ï¼ä½ åªè¦æ¥æ¾å
å«âEIPâçä¸è¡ï¼å®æ¾ç¤ºäºæ¯ä»ä¹å½æ°å模åè°ç¨æ¶å¯¼è´panicã
使ç¨å
æ ¸è°è¯å·¥å
·(kenrel debugger ,aka KDB)
å¦æè·è¸ªä¿¡æ¯åªæä¸é¨åä¸ä¸è¶³ä»¥ç¨æ¥å®ä½é®é¢çæ ¹æ¬åå æ¶ï¼kernel debugger(KDB)å°±éè¦è¯·åºæ¥äºã
KDBç¼è¯å°å
æ ¸éï¼panicåçæ¶ï¼ä»å°å
æ ¸å¼å¯¼å°ä¸ä¸ªshellç¯å¢èä¸æ¯éå®ãè¿æ ·ï¼æ们就å¯ä»¥æ¶éä¸äºä¸panicç¸å
³çä¿¡æ¯äºï¼è¿å¯¹æ们å®ä½é®é¢çæ ¹æ¬åå æå¾å¤§ç帮å©ã
使ç¨KDBéè¦æ³¨æï¼å
æ ¸å¿
é¡»æ¯åºæ¬æ ¸å¿çæ¬ï¼æ¯å¦æ¯2.4.18ï¼èä¸æ¯2.4.18-5è¿æ ·åçï¼å 为KDBä»
对åºæ¬æ ¸å¿ææã
4. soft panic
4.1 çç¶ï¼
没æhard panic严é
é常导è´æ®µé误(segmentation fault)
å¯ä»¥çå°ä¸ä¸ªoopsä¿¡æ¯ï¼/var/log/messageséå¯ä»¥æç´¢å°âOopsâ
æºå¨ç¨å¾®è¿è½ç¨ï¼ä½æ¯æ¶éä¿¡æ¯åï¼åºè¯¥éå¯ç³»ç»ï¼
4.2 åå
å¡æ¯éä¸æå¤çå¼åç模åå´©æºé½å°å¯¼è´soft panicãå¨è¿ç§æ
åµä¸ï¼é©±å¨æ¬èº«ä¼å´©æºï¼ä½æ¯è¿ä¸è³äºè®©ç³»ç»åºç°è´å½æ§å¤±è´¥ï¼å 为å®æ²¡æéå®ä¸æå¤çä¾ç¨ã导è´hard panicçåå åæ ·å¯¹soft panicä¹æç¨ï¼æ¯å¦å¨è¿è¡æ¶è®¿é®ä¸ä¸ªç©ºæé)
4.3 ä¿¡æ¯æ¶é
å½soft panicåçæ¶ï¼å
æ ¸å°äº§çä¸ä¸ªå
å«å
æ ¸ç¬¦å·(kernel symbols)ä¿¡æ¯çdumpæ°æ®ï¼è¿ä¸ªå°è®°å½å¨/var/log/messageséã为äºå¼å§ææ¥æ
éï¼å¯ä»¥ä½¿ç¨ksymoopså·¥å
·æ¥æå
æ ¸ç¬¦å·ä¿¡æ¯è½¬æææä¹çæ°æ®ã
为äºçæksymoopsæ件,éè¦ï¼
ä»/var/log/messageséæ¾å°çå æ è·è¸ªææ¬ä¿¡æ¯ä¿å为ä¸ä¸ªæ°æ件ãç¡®ä¿å é¤äºæ¶é´æ³(timestamp)ï¼å¦åksymoopsä¼å¤±è´¥ã
è¿è¡ksymoopsç¨åºï¼å¦æ没æï¼è¯·å®è£
ï¼
详ç»çksymoopsæ§è¡ç¨æ³ï¼å¯ä»¥åèksymoops(8)æåã
5. Kernel panicå®ä¾ï¼
ä»å¤©å°±éå° ä¸ä¸ªå®¢æ·æºå¨å
æ ¸æ¥éï¼âKernel panic-not syncing fatal exceptionâï¼éå¯åæ£å¸¸ï¼å 个å°æ¶ååºç°åæ ·æ¥éï¼ç³»ç»downäºï¼ææ¶éå¯åå¯æ¢å¤ææ¶éå¯åä»ç¶æ¥åæ ·çé误ã
ä»ä¹æ¯fatal exception?
âè´å½å¼å¸¸ï¼fatal exceptionï¼è¡¨ç¤ºä¸ç§ä¾å¤æ
åµï¼è¿ç§æ
åµè¦æ±å¯¼è´å
¶åççç¨åºå
³éãé常ï¼å¼å¸¸ï¼exceptionï¼å¯è½æ¯ä»»ä½ææ³ä¸å°çæ
åµï¼å®ä¸ä»
ä»
å
æ¬ç¨åºé误ï¼ãè´å½å¼å¸¸ç®åå°è¯´å°±æ¯å¼å¸¸ä¸è½è¢«å¦¥åå¤ç以è³äºç¨åºä¸è½ç»§ç»è¿è¡ã
软件åºç¨ç¨åºéè¿å 个ä¸åç代ç å±ä¸æä½ç³»ç»åå
¶ä»åºç¨ç¨åºç¸èç³»ãå½å¼å¸¸ï¼exceptionï¼å¨æ个代ç å±åçæ¶ï¼ä¸ºäºæ¥æ¾ææå¼å¸¸å¤çç代ç ï¼å个代ç å±é½ä¼å°è¿ä¸ªå¼å¸¸åéç»ä¸ä¸å±ï¼è¿æ ·å°±è½å¤å¤çè¿ç§å¼å¸¸ãå¦æå¨ææå±é½æ²¡æè¿ç§å¼å¸¸å¤çç代ç ï¼è´å½å¼å¸¸ï¼fatal exceptionï¼é误信æ¯å°±ä¼ç±æä½ç³»ç»æ¾ç¤ºåºæ¥ãè¿ä¸ªä¿¡æ¯å¯è½è¿å
å«ä¸äºå
³äºè¯¥è´å½å¼å¸¸é误åçä½ç½®çç§å¯ä¿¡æ¯ï¼æ¯å¦å¨ç¨åºåå¨èå´ä¸çåå
è¿å¶çä½ç½®ï¼ãè¿äºé¢å¤çä¿¡æ¯å¯¹ç¨æ·èè¨æ²¡æä»ä¹ä»·å¼ï¼ä½æ¯å¯ä»¥å¸®å©ææ¯æ¯æ人åæå¼å人åè°è¯ç¨åºã
å½è´å½å¼å¸¸ï¼fatal exceptionï¼åçæ¶ï¼æä½ç³»ç»æ²¡æå
¶ä»çæ±å©æ¹å¼åªè½å
³éåºç¨ç¨åºï¼å¹¶ä¸å¨æäºæ
åµä¸æ¯å
³éæä½ç³»ç»æ¬èº«ãå½ä½¿ç¨ä¸ç§ç¹æ®çåºç¨ç¨åºæ¶ï¼å¦æåå¤åºç°è´å½å¼å¸¸é误çè¯ï¼åºå°è¿ä¸ªé®é¢æ¥åç»è½¯ä»¶ä¾åºåã â èä¸æ¤æ¶é®çæ ä»»ä½ååºï¼å¿
ç¶ä½¿ç¨reseté®ç¡¬éå¯ã
panic.cæºæ件æ个æ¹æ³ï¼å½panicæèµ·åï¼æå®è¶
æ¶æ¶é´ï¼å¯ä»¥éæ°å¯å¨æºå¨ï¼è¿å°±æ¯åé¢è¯´çpanicè¶
æ¶éå¯ãå¦æä½ çæºå¨äºå
é
置好äºéæ³é®ç使ç¨ï¼å°±å¯ä»¥å¨è¶
æ¶ä¹åéè¿éæ³é®ä½¿ç³»ç»å¨éå¯åå°½å¯è½å¤çä¸ºä½ å¤åäºäºæ
ï¼å½ç¶è¿äºäºæ
ä¸æ¯ç¨æ¥ä½¿ç³»ç»æ¢å¤æ£å¸¸ï¼èæ¯å°½éé¿å
æ失æ导åºä¸äºæç¨ä¿¡æ¯æ¥å¸®å©åé¢çå®ä½ã
æ¹æ³ï¼
#vi /etc/sysctl.conf æ·»å
kernel.panic = 20 #panic errorä¸èªå¨éå¯ï¼çå¾
timeout为20ç§
kernel.sysrq=1 #æ¿æ´»Magic SysRq å¦åï¼é®çé¼ æ 没æååº
æä½ [ALT]+[SysRq]+[COMMAND], è¿éSysRqæ¯Print SCRé®ï¼èCOMMANDæ以ä¸æ¥è§£éï¼
b â ç«å³éå¯
e â åéSIGTERMç»initä¹å¤çç³»ç»è¿ç¨
o â å
³æº
s â syncåæ¥ææçæ件系ç»
u â è¯å¾éæ°æè½½æ件系ç»
é
ç½®ä¸ä¸ä»¥é²ä¸ä¸ã
å¾å¤ç½åå®è£
linuxåºç°âKernel panic-not syncing fatal exception in interruptâæ¯ç±äºç½å¡é©±å¨åå ã解å³æ¹æ³ï¼å°é项âOnboard Lanâçé项âDisabledâ,éå¯ä»å
驱å¯å¨å³å¯ãçå®è£
å®ç³»ç»ä¹åï¼åè¿å
¥BIOSå°âOnboard Lanâçé项ç»âenableâï¼ä¸è½½ç¸åºçç½å¡é©±å¨å®è£
ã
å¦åºç°ä»¥ä¸æ¥éï¼
init() r8168 â¦
⦠â¦
⦠ï¼Kernel panic: Fatal exception
r8168æ¯ç½å¡åå·ã
å¨BIOSä¸ç¦ç¨ç½å¡ï¼ä»å
驱å¯å¨å®è£
ç³»ç»ãåä»ç½ä¸ä¸è½½ç½å¡é©±å¨å®è£
ã
#tar vjxf r8168-8.014.00.tar.bz2
# make clean modules (as root or with sudo)
# make install
# depmod -a
# modprobe r8168
å®è£
好系ç»årebootè¿å
¥BIOSæç½å¡æå¼ã
å¦æç½åå¨Kernel panicåºéä¿¡æ¯ä¸çå°âalc880âï¼è¿æ¯ä¸ªå£°å¡ç±»åãå°è¯çå°å£°å¡å
³éï¼éå¯ç³»ç»ï¼æå®ã
å®è£
linuxç³»ç»éå°å®è£
å®æä¹åï¼æ æ³å¯å¨ç³»ç»åºç°Kernel panic-not syncing fatal exceptionãå¾å¤æ
åµæ¯ç±äºæ¿è½½å£°å¡ãç½å¡ãææ¯cpu è¶
线ç¨åè½ï¼Hyper-Threading ï¼å¼èµ·çãè¿ç±»é®é¢ç解å³åæ³å°±æ¯å
æ¥çé误代ç ä¸çä¿¡æ¯ï¼æ¾å°é误ææåç硬件ï¼å°å
¶ç¦ç¨ãç³»ç»å¯å¨åï¼å®è£
好ç¸åºç驱å¨ï¼åå¯ç¨è¯¥ç¡¬ä»¶å³å¯ã
å¦å¤åºç°âKernel Panic â not syncing: attempted to kill initâåâKernel Panic â not syncing: attempted to kill idle taskâææ¶æå
åäºç¸æ¢ä¸ä½ç½®æéæ°ææä¸å¯ä»¥è§£å³é®é¢ã
6. ä¸ä¸ªkernel panicç解å³ä¹æ³
ç¸ä¿¡ä½¿ç¨linux kernelå¼åè¿é©±å¨çå
å¼é½ç¥éï¼kernel panic对系ç»å¸¦æ¥çå±å®³è¦æ¯åºç¨ç¨åºpanic大çå¤ï¼çè³å¯ä»¥ç¨ç¾é¾æ¥å½¢å®¹ã对äºåºç¨ç¨åºçpanicæå¤å¯¼è´linuxç³»ç»ææ该ç¨æ·è¿ç¨ï¼ä½å¯¹äºkernel panic就没åæ³äºï¼å 为kernelæ¯æ´ä¸ªç³»ç»ç管çè
ï¼èªå·±åºç°é®é¢äºï¼å½ç¶æ¯ä¸å¯æ¢å¤çå¼å¸¸ï¼å°±åªè½çå¾
éå¯äºã
kernel panicçæ大é®é¢å°±æ¯é¾äºå®ä½ï¼å¯¹äºä¸ä¸ªå¼åè
æ¥è¯´ï¼æäºkernel panicé£ç®ç´å°±åæ¯ä¸åºå©æ¢¦ï¼ä¸é¢ä¸»è¦è¯´æäºå¦ä½æåkernel panicçæ¹æ³åä¸äºpanicå®ä¾ï¼å½ç¶ï¼æåpanicçæå°ä¿¡æ¯æ¯è§£å³panicç第ä¸æ¥ä¹æ¯å
³é®ä¸æ¥ï¼ä¸é¢å°±æ ¹æ®èªå·±æ¾ç¢°å°è¿çä¸ä¸ªkernel panicå为å®ä¾æ¥è¯´æä»åºç°panicå°è§£å³panicçä¸è¬æ¹æ³ã
6.1 æåkernel panicä¿¡æ¯
没éï¼æ£å¦åé¢è¯´çï¼è¿æ¯ç¬¬ä¸æ¥ä¹æ¯é常å
³é®çä¸æ¥ï¼å¦æè¦è§£å³ä¸ä¸ªkernel panicå½ç¶å¿
é¡»é¦å
è¦ç¥éå®äº§ççå°æ¹ï¼ä¹å°±æ¯è¯´äº§çpanicçå
æ ¸å½æ°è°ç¨æ ï¼å½åçå
æ ¸è°ç¨æ è®°å½äºäº§çkernel panicæ¶çå½æ°è°ç¨å
³ç³»é¾ï¼è¿éæä¸å¨è´´åºç¸å
³çæå°å®ä¾ï¼è¿æ ·çkernel panicç½ä¸ä¹å°å¤é½æ¯ï¼èä¸è¿æå¾å¤çæç« æ¥è¯´æå¦ä½ç¡®å®æ¯åªä¸ªæºæ件çåªä¸è¡å¯¼è´çpanicï¼å æ¤æå
´è¶£çåå¦å¯ä»¥æç´¢ä¸äºè¿æ ·çæç« ççï¼è¿éæ说æä¸ä¸è§£å³kernel panicçä¸è¬æ¥éª¤å注æäºé¡¹ã
对äºæåkernel logçæ¹æ³åé¢æä»ç»ï¼è¿éä¸èµè¿°ï¼ä½æ³å¼ºè°ä¸¤ç¹ï¼
ï¼1ï¼ ä¸ç®¡æ¯ä»ä¹æ ·çpanicï¼é¦å
è¦æå足å¤çå
æ ¸æå°ä¿¡æ¯ï¼å½ç¶å¿
è¦çæ
åµä¸è¿éè¦æé产çkernel panicæ¶çåºç¨ç¨åºçæå°ä¿¡æ¯ï¼å¯¹äºAndroidç³»ç»æ¥è¯´å°±æ¯logcatä¿¡æ¯ï¼å¨androidåµå
¥å¼è½¯ä»¶å¹³å°ä¸å
¶å®ææ´å¥½æ´å
¨é¢çlogæéæ¹æ³ï¼é£å°±æ¯bugreportï¼å®å°äº§çæ¤å»ç³»ç»å
¨æ¹ä½çä¿¡æ¯ï¼å¯¹ï¼æ²¡éï¼å°±æ¯å
¨æ¹ä½çä¿¡æ¯ï¼å
æ¬å
æ ¸ãåºç¨ãå
åãè¿ç¨åå¤çå¨çææç¸å
³ä¿¡æ¯ï¼æ¯ä¸ä¸ªé常好çè°è¯å·¥å
·ï¼è³äºbugreportçå·¥ä½åçæå
´è¶£çåå¦èªå·±æ¥æ¾ä¸èµæã
注æï¼bugreportç使ç¨é注æ两ç¹ï¼ç¬¬ä¸ï¼å®åªè½å¨ç³»ç»æ£å¸¸è¿è¡çæ
åµä¸ä½¿ç¨ï¼ç¬¬äºï¼æ£å 为第ä¸ç¹ï¼ä½ éè¦å¨ç³»ç»äº§çkernel panicéå¯ç³»ç»åç第ä¸æ¶é´ä½¿ç¨bugreport导åºææä¿¡æ¯ï¼å 为è¿ææä¿¡æ¯ä¸å
å«äºä¸æ¬¡ç³»ç»éå¯çåå çç¸å
³logä¿¡æ¯ã
ï¼2ï¼ æ¢ç¶æ¯æåpanic logä¿¡æ¯ï¼å¿
ç¶å°ä¸äºå¤ç°panicè¿ä¸ªè¿ç¨ï¼æçpanicç产çæ¶æ¦çæ§éæºçï¼å°±æ¯è¯´ä½ ä¸ç¥éä»ä¹æ¶åå°±å¯è½ä¼äº§çpanicï¼å æ¤è¯·çææ¯ä¸æ¬¡å¤ç°panicçæºä¼ï¼èµ·ç è¦å¨å¤ç°panicä¹ååå¤å¥½ä½ è¦æåçæ¯é£äºä¿¡æ¯ï¼è¿äºä¿¡æ¯è½å¦å¸®å©ä½ è¿ä¸æ¥å®ä½panicï¼å¦åï¼ä¸è¦å¨åºç°panicæ¶æå¿èä¹±ï¼ä¸ç¥éèªå·±è¦ä»ä¹ï¼æ好æ¯æ¬¡å¤ç°panicå计å好è¿æ¬¡ä½ è¦é£äºä¿¡æ¯ï¼å¯è½æ¯æ¬¡æåä¿¡æ¯çéç¹ä¸ä¸æ ·ï¼ã
注æï¼å¨å·¥ä½ä¸ç»å¸¸ç¢°å°è¿æ ·ä¸ä¸ªç°è±¡ï¼æµè¯é¨é¨çåå¦å¥½ä¸å®¹æåç°ä¸ä¸ªé®é¢ï¼è¯·å¼ååå¦å®ä½ï¼å¼ååå¦åºæ¬ä¸æ²¡æä¹åæé®é¢å°±å·çä¿¡æ¯æçä¸å¤æ²¡æ³å®ä½ï¼ç»æ让æµè¯åå¦å天çè³ä¸å¤©æ¥å¤ç°è¿ä¸ªé®é¢ï¼çå¤ç°äºé®é¢å¼ååå¦è¿æ²¡ææ¸
æ¥èªå·±å°åºè¦ä»ä¹ä¿¡æ¯æ¥å®ä½ï¼æçé®é¢å¤ç°æ¶çç¯å¢åªè½ä¿æå åéçè³å åç§éï¼è¿å¿å¿
ä¼æµªè´¹äºæµè¯åå¦çå³å¨ææã
6.2 åækernel panic
æéäºè¶³å¤çpanicä¿¡æ¯ï¼ä¸é¢å°±æ¯åæpanicçæ¶åäºï¼å¯¹äºä¸ä¸ªpanicé®é¢ï¼ä½ è¦ç¥éä¸ç¹ï¼
ï¼1ï¼ é¦å
è¦å¯¹æ±ç¼è¯è¨æä¸å®çäºè§£ï¼å®ä½panic产ççC代ç ä½ç½®
å
¶å®å°±æ¯æ ¹æ®å½åå
æ ¸çº¿ç¨çå
æ ¸è°ç¨æ æ¥æ¾äº§çpanicè°ç¨é¾ï¼å¨panic logçåé¢å è¡å·²ç»æ¾ç¤ºäºkernel panicç代ç ä½ç½®ï¼ä½è¿ä¸ªä½ç½®æ¯ç¸å¯¹äºäº§çpanicå½æ°çå移ï¼ä½ 并ä¸ç¥éå®å°åºæ¯åªä¸è¡ï¼è¿ä¸ªæ¶åä½ éè¦objdumpåæ±ç¼å¨æ¥å¯¹é£ä¸ªäº§çpanicçéåæ件åæ±ç¼ï¼ç¶åæ ¹æ®panicä¿¡æ¯çæ示æ¾å°å¯¹åºçæ±ç¼ä»£ç ï¼å¯¹ç
§C代ç æ ¹æ®æ±ç¼ä¸ä¸æç¡®å®C代ç è¡ï¼å
¶å®ï¼kernel panicç产çä¸è¬é½æ¯éæ³å°åçå¼ç¨ï¼å°¤å
¶æ¯NULLæéçå¼ç¨ï¼è¿ä¹æ¯è¾å®¹æå®ä½åºpanicçC代ç è¡ã
ï¼2ï¼ åæ导è´panicçC代ç è¡ä¸ä¸æï¼ç¡®å®panicå¼å
¥ç¹
第ä¸æ¥åºè¯¥ä¼æ¯è¾å®¹ææ¾å°å¯¼è´panic çC代ç è¡ï¼æ ¹æ®äº§çpanicç代ç è¿ä¸æ¥æ¾å°panicçå¼å
¥ç¹ï¼è¿ä¸æ¥å¯ä»¥æé
printkæ¥å®ä½ï¼å¦ææ¯å¤§æ¦çpanicå°±æ´å®¹æå®ä½äºï¼ï¼è¿ä¸æ¥ç¸å¯¹ç¬¬ä¸æ¥è±è´¹å¤ä¸ç¹çæ¶é´ï¼å¦ææ¯åºç¨ä»£ç åæå°è¿éå·²ç»å·®ä¸å¤ç»æäºï¼ç¡®å®äºpanicå¼å
¥ç¹å°±å¯ä»¥ä¿®æ¹ä»£ç è¿è¡åå½æµè¯äºï¼ä½å¯¹äºkernelæ¥è¯´è¦å¤æçå¤ã
æ£å¦ä¹åæ¾ç¢°å°çpanicï¼å¤ç°è½ç¶ä¸å®¹æä½æ¯åºæ¬ä¸å¨åºå®æ¶é´ç¹å·¦å³å°±å¯ä»¥å¤ç°ï¼ææ¯ç¨çèæ¬å¾ªç¯å è½½å¸è½½wifi模åï¼æ¯æ¬¡é½æ¯å¤§çº¦500次左å³äº§çpanicï¼è¦ç¥éå¿
ç°çpanic就容æ解å³çå¤äºï¼ä½å½æ¶å 为è¿500次ç循ç¯å°±è¦è±è´¹2个å°æ¶å·¦å³ï¼èä¸ç¯å¢è¿ç»å¸¸åºç°é®é¢ï¼å¯¼è´æè±è´¹å¾é¿æ¶é´æå®ä½åºé®é¢æå¨ï¼æ¯æ¬¡çå è½½åå¸è½½wifi模åé½å¯¼è´devices ksetèç¹å¼ç¨è®¡æ°å¤åä¸ï¼å½devices ksetçå¼ç¨è®¡æ°å为0çæ¶å被系ç»åæ¶ï¼linuxç³»ç»éåå¯è½ä¼åºç°Nç§panicç°è±¡ï¼ä¹ååç°æ¯å 为wifi模åæ¯æ¬¡å è½½ä¸è½½æ¶å¯¹åºç设å¤èç¹çå¼ç¨è®¡æ°å¢å失衡导è´devices kset被å¤åä¸ï¼ç¶ååç°æ¯linux å
æ ¸æ ¸å¿ä»£ç çé®é¢ã
ï¼3ï¼ æ好ä¸è¦æçlinuxçæ ¸å¿ä»£ç ï¼ä¹ä¸è¦è¯å¾å»ä¿®æ¹
æ£å 为è¿ä¸ç¹ï¼è®©æè¿è¿ä¸æ¢ç¡®å®æ¯ä¸æ¯ççæ ¸å¿ä»£ç é®é¢ï¼linuxçæ ¸å¿ä»£ç é£å¯æ¯æ°ä»¥ä¸è®¡ç大çç»è¿åé¤ç¾ç¼ç代ç ï¼å²å®¹ä½ è½»æä¿®æ¹ï¼ç»è¿è¿ä¸æ¥çåæè¿ä¸ªpanicæ¯å 为æ们ç¨çwifiå¡æ¯éæ ååªä½å¡ï¼èµ°çæ¯éæ åæµç¨ï¼å¨è¿ä¸ªæµç¨ä¸å¯¹wifi设å¤åå§åæ¶å°äºä¸æ¬¡wifi设å¤èç¹çå¼ç¨ï¼ä½å¨å¸è½½æ¨¡åæ¶åæ åå¡ä¸æ ·è¢«è§£å¼ç¨äºã
ï¼4ï¼ä¸è¦åå®ç以为å´ç»çpanicä¿¡æ¯å°±è½è§£å³panicé®é¢
è¿æ¯ä¸é¢çpanicï¼å®é
ä¸ï¼ä¸é¢æå°çpanicé®é¢å
¶å®åºè¯¥æ¯å¾å¤çpanicï¼è¿ä¹æ¯å¨åæå¤ç°panicæ¶åç°çï¼å¨å è½½å¸è½½500次左å³æ¶å¿
ç°panicï¼ä½å´ä¸æ¯åä¸ä¸ªpanicï¼å¦ææç
§æ£å¸¸æè·¯ï¼æ¢ç¶æ¯panicï¼å°±åºè¯¥ä»panicä¿¡æ¯ä¸æï¼é¡ºè¤æ¸çä¸ç´è¿½ä¸å»ãå¦ææ¯è¿æ ·ï¼è¿ä¸ªé®é¢æææ°¸è¿ä¹è§£å³ä¸äºï¼å ä¸ºä½ å¨å¤ç°ä¸ä¸ªpanicæ¶æ»æ¯ä¼æå
¶ä»çpanicåºç°ï¼è¿åè®©ä½ æ æéä»çã
éè¿å¯¹è¿äºpanicçlogçåæï¼åç°ä»ä»¬é½æä¸ä¸ªå
±æ§ï¼å¨äº§çpanicä¹åé½æä¸æ®µWARNINGæå°ï¼ä¹æ£æ¯å¯¹è¿æ®µæå°çåææ¾åºäºé®é¢çæ ¹æºï¼å¯¹äºè¿æ®µWARNINGçå
容ååæè¿ç¨ä¸å¨è¿é说æï¼åªä¸ºè¡¨è¾¾ä¸é¢çè§ç¹ï¼
äºå®è¯æï¼å¨ç¢°å°panicé®é¢å®ä½æ¶ï¼å¦ææ³å½ä¸æ®µæ¶é´å
å®ä½ä¸åºæ¥ï¼å没æä»ä¹æ´å¥½çæè·¯æ¶ï¼ä½ åºè¯¥å头ççå¨panicä¹åkernelæ¯å¦äº§çäºåªäºä¸å¤ªæ£å¸¸çlogï¼è¿ä¹è®¸å°±æ¯å¯¼è´kernel panicçåå
ææ¨æã
ï¼5ï¼ å°½å¯è½å¤çææ¡linux kernelçè¡ä¸ºï¼å¯¹ä¸äºé¾åçpanic大èçæµ
è¿éç大èçæµæ¯å»ºç«å¨æ³å½äºè§£linux kernelè¡ä¸ºä¸çæçæ§çæ¨çï¼å°½ç®¡æäºçæµå¹¶ä¸æ¯å®å
¨æ£ç¡®çï¼ä½å¨ä½ è¯æå®æ¯æ£ç¡®çè¿ç¨ä¸æ许ä¼ææå¤æ¶è·ã对äºwifi模åå è½½å¸è½½çpanicé®é¢æ¥è¯´ï¼ææ¾æè¿ä¸¤æ¬¡é误ççæµï¼
第ä¸æ¬¡ï¼å 为é¿æ¶é´çå è½½å¸è½½é½ä¼åºç°panicï¼èä¸å¼å§åç°çpanicæ¯å¨kmem_cache_allocå½æ°ä¸ï¼å æ¤çæµæ¯å
åæ³é²å¯¼è´çå
åèå°½ï¼å æ¤å¨åé¢çå¤ç°è¿ç¨ä¸æåäºä¸ªèæ¬å¾ªç¯æå°å
åç使ç¨æ
åµï¼åç°å
åçå ç¨ä¸ç´ç¨³å®å¨ä¸ä¸ªæ£å¸¸çèå´ï¼è¯æäºæç第ä¸ä¸ªçæµæ¯é误çã
第äºæ¬¡ï¼å¨çå°devices çå
æ ¸å¯¹è±¡kobjectçååå¨panicä¹ååºç°ä¹±ç çæ
åµä¸ï¼printkæå°äºååï¼ï¼ææ¾å¤§èå°åè¿çæµï¼linux kernelåçäºè¸©å
åç°è±¡ï¼å¯¼è´devices ksetå¯¹è±¡è¢«ç ´åãéååäºåæ¹é¢çåªåæ¥è¯ææçæ³æ³ï¼ç»æåç°å ä¹é½æ¯å¨ç¬¬493次å è½½wifi模åæ¶åºç°çpanicé®é¢ï¼è¿è®©æå¾è¿·æï¼å¦ææ¯è¸©å
åæä¹å¯è½åºå®å¨493次åçï¼è½ç¶ä¸è½å®å
¨è¯æè¿ä¸ªçæ³æ¯é误çï¼ä½è¿è¶³ä»¥è¯´ææçæ¹åæé®é¢ã
å¦æ¤ååå¤å¤ï¼è±è´¹äºæ两个ææçæ¶é´ææå®è¿ä¸ªpanicï¼å æ¤ï¼kernel panicè½ç¶é¾åï¼ä½åªè¦ä½ æ¿æå»å°è¯æ¿æå»åªåï¼å°±ç®æåæ¿ä¸ä¸è¿ä¸ªpanicï¼ä½ ä¹ä¼å¦å°å¾å¤å¾å¤çä¸è¥¿ï¼å
æ¬linux kernelè¡ä¸ºï¼è¿äºä¼å¯¹ä½ 以åçå¦ä¹ 产çå¾å¤§çå½±åï¼å¨ç¢°å°è¿ç±»é®é¢ä¸å®æ¯ä¿¡å¿æ»¡æ»¡çã
7. å°ç»
ä¸ç´æ³æ»ç»ä¸ç¹kernel panicç解å³ä¹æ³ï¼å¨ç½ä¸ä¹æç´¢äºå¾å¤èµæï¼åºæ¬ä¸é½ä¸æ ·ï¼æ¬æåé¢ä¹å¼ç¨äºè¿äºæç« ä¸çä¸ç¯ï¼æ¾ç»åè¿çæ»ç»è¿çä¸è¥¿è½è®°å½ä¸æ¥ç»å«äººçåç»ä»¥åèªå·±å¤ä¹ é½æ¯å¾ææä¹çäºæ
ï¼ä»¥åkernel panicçé®é¢æ»è®©æä¸æ¢é ç太è¿ï¼ç°å¨æè¿æ¯å¯ä»¥æ¯è¾èªä¿¡çé¢å¯¹ä»ä»¬ï¼è¿éä¹åªæ¯ç»åå¦ä»¬ä¸äºè§£å³panicç建议ï¼ä¸ªäººè§å¾åæä¸ä¸ªå
·ä½çå®ä¾çæä¹ä¹ä¸æ¯å¤ªå¤§ï¼æ以ä¹æ²¡æ对ä¸ä¸ªå
·ä½çå®ä¾å详ç»åæï¼å¸æå¯ä»¥æ¾å°æ´å¤çç¸å
³æç« æ¥æ读ï¼å¤å·²æ·±æ²ï¼è¿æä»ä¹äºº...
温馨提示:答案为网友推荐,仅供参考