Oops

Quem disse que o Linux não trava ?? Que atire a primeira pedra quem nunca viu ao menos um kernel panic na tela ? Pois bem, quando um erro grave ocorre no sistema, entre outras coisas que o kernel faz uma delas é exibir no terminal e/ou sistema de log, uma mensagem bastante conhecida por quem já passou por isso, a famosa mensagem de Oops. Trata-se de um dump do estado do CPU e da pillha do Kernel no momento em que o problema ocorreu. A mensagem de Oops mais conhecida é a que vem acompanhada de um kernel panic. Muitos ao se deparar com isso, percebem que nada funciona (na maioria dos casos), Ctrl+Alt+Backspace, teclas de função, e nem água, ai, simplesmente reiniciam a máquina, podendo causar ainda mais problemas.

Abaixo um exemplo de uma mensagem de Oops:

  1. Unable to handle kernel paging request at virtual address 00010015
  2. printing eip:
  3. c01e6608
  4. *pde = 00000000
  5. Oops: 0000
  6. CPU: 0
  7. EIP: 0010:[usb_unlink_urb+8/64] Tainted: P
  8. EFLAGS: 00010202
  9. eax: 00010001 ebx: d70c6494 ecx: c7c81000 edx: 00010001
  10. esi: c7c81640 edi: d70c6400 ebp: d70c64f0 esp: d2daded0
  11. ds: 0018 es: 0018 ss: 0018
  12. Process kpilotDaemon (pid: 30778, stackpage=d2dad000)
  13. Stack: d892a2ed 00010001 d70c6494 d70c6400 d3df51c0 00000000 d8924350 d70c6494
  14. d3df51c0 d725a000 cc5faa40 c16063c0 c018c460 d725a000 d3df51c0 d3df51c0
  15. cc5faa40 c16063c0 c8117e40 00000001 d3df51c0 bffff0e8 00000000 00000000
  16. Call Trace: [] [] [release_dev+576/1280]
  17. [n_tty_ioctl+257/1200] [tty_release+10/16]
  18. [fput+76/224] [filp_close+92/112] [sys_close+67/96] [system_call+51/56]
  19.  
  20. Code: 8b 42 14 85 c0 74 21 8b 80 bc 00 00 00 85 c0 74 17 8b 40 18

Esta mensagem pode ajudar aos desenvolvedores do kernel a depurar melhor o problema, e mesmo que você não reporte o bug, você pode se utilizar de um recurso que foi desenvolvido pensando nisto: As Magic SysRq Keys.

Trata-se de uma combinação de teclas que é utilizada para comunicar-se com o kernel do Linux, caso a opção CONFIG_MAGIC_SYSRQ tiver sido habilitada durante a compilação do kernel, ou em /proc/sys/kernel/sysrq.

Basta apertar Alt+PrintScreen+Tecla e a saída (dependendo da tecla) é enviada para o dmesg. Abaixo apenas algumas teclas:

t Lista de tarefas/processos com suas informações detalhadas
u Remonta todas as partições montadas, só que em read-only
m Mostra informações sobre o estado atual da memória
e Envia um sinal do tipo SIGTERM para todos os processos, exceto para o init

Existe a famosa combinação: Alt+PrintScreen+R E I S U B, onde basicamente mata todos os processos, sincroniza os discos, remonta todas os filesystems montados em read-only, e só então reinicia a máquina. Por tanto, antes de "meter o dedão" no botão de power, REISUB