Just another geek site

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:

Unable to handle kernel paging request at virtual address 00010015
 printing eip:
c01e6608
*pde = 00000000
Oops: 0000
CPU:    0
EIP:    0010:[usb_unlink_urb+8/64]    Tainted: P
EFLAGS: 00010202
eax: 00010001   ebx: d70c6494   ecx: c7c81000   edx: 00010001
esi: c7c81640   edi: d70c6400   ebp: d70c64f0   esp: d2daded0
ds: 0018   es: 0018   ss: 0018
Process kpilotDaemon (pid: 30778, stackpage=d2dad000)
Stack: d892a2ed 00010001 d70c6494 d70c6400 d3df51c0 00000000 d8924350 d70c6494
       d3df51c0 d725a000 cc5faa40 c16063c0 c018c460 d725a000 d3df51c0 d3df51c0
       cc5faa40 c16063c0 c8117e40 00000001 d3df51c0 bffff0e8 00000000 00000000
Call Trace: [] [] [release_dev+576/1280]
[n_tty_ioctl+257/1200] [tty_release+10/16]
   [fput+76/224] [filp_close+92/112] [sys_close+67/96] [system_call+51/56] 

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:

Tecla Descrição
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. :)

5 Comments, Comment or Ping

  1. Um dia, eu sei que serei capaz de fazer tudo isso que estou vendo…

  2. Fala caraaa uahauhua :D

    Ficou bebendo até as 4h30 né? Velho, gostei muito da tua palestra… o KIDS é um puta projeto. Tenho vontade de participar e ajudar em algo só que odeio programar em C :/ será que existe algo em que eu possa ajudar?

    A propósito, to te adicionando no meu blogroll.

    Um abração!

  3. Olá Israel, que bom que gostou :) Estarei fazendo o commit na árvore cvs do projeto nos próximos dias. Ai você poderá ajudar de várias formas, seja documentando, seja usando ou reportando bugs…
    De qualquer forma.. você ficará informado! E obrigado.

  4. Carlos Felipe

    Puts.. muito show… valeu pela dica.

    []’s

  5. Igor Freire

    Parabens pelo artigo cara, show de bola.. ja estava perdendo meus cabelos pra desenrolar esse Oops..vou testar assim que possivel, valew!
    =)

Reply to “Oops”

dsc09109dsc09108dsc09107dsc09106dsc09105dsc09104dsc09103dsc09101dsc09100dsc09098dsc09097dsc09096dsc09094dsc09093dsc09091dsc09090dsc09089dsc09088