Como receber uma notificação na área de trabalho em um bloqueio de kernel ou bug / aviso?

2

O Apport não reage em nenhum dos segfaults / problems avisos que acontecem no kernel [modules], a única maneira que eu sei de vê-los é verificar o log do kernel ( dmesg ) . Gostaria de receber uma notificação imediatamente se isso acontecer, é possível?

Exemplos

link

[17348.408329] ------------[ cut here ]------------
[17348.408353] WARNING: CPU: 0 PID: 12897 at drivers/gpu/drm/i915/intel_display.c:11098 intel_check_page_flip+0x107/0x120 [i915]()
[17348.408355] Kicking stuck page flip: queued at 1040374, now 1040379
[17348.408356] Modules linked in: ...
[17348.408430] CPU: 0 PID: 12897 Comm: gdb Not tainted 4.2.0-0.rc6.git0.2.fc23.x86_64+debug #1
[17348.408432] Hardware name: Gigabyte Technology Co., Ltd. Z87M-D3H/Z87M-D3H, BIOS F11 08/12/2014
[17348.408433]  0000000000000000 0000000055ba9279 ffff8807fdc03ce8 ffffffff81868d8e
[17348.408436]  0000000000000000 ffff8807fdc03d40 ffff8807fdc03d28 ffffffff810ab406
[17348.408438]  ffff8807fdc03d58 ffff8807f32e7000 ffff8807f29c5000 0000000000000000
[17348.408441] Call Trace:
[17348.408442]  <IRQ>  [<ffffffff81868d8e>] dump_stack+0x4c/0x65
[17348.408451]  [<ffffffff810ab406>] warn_slowpath_common+0x86/0xc0
[17348.408453]  [<ffffffff810ab495>] warn_slowpath_fmt+0x55/0x70
[17348.408466]  [<ffffffffa0166917>] intel_check_page_flip+0x107/0x120 [i915]
[17348.408477]  [<ffffffffa012c028>] ironlake_irq_handler+0x288/0xbf0 [i915]
[17348.408480]  [<ffffffff81026d79>] ? sched_clock+0x9/0x10
[17348.408483]  [<ffffffff810e6ddc>] ? local_clock+0x1c/0x20
[17348.408486]  [<ffffffff8111f0d0>] handle_irq_event_percpu+0x40/0x490
[17348.408488]  [<ffffffff8111f564>] handle_irq_event+0x44/0x70
[17348.408491]  [<ffffffff811228f8>] handle_edge_irq+0x78/0x140
[17348.408493]  [<ffffffff8101f2e2>] handle_irq+0x72/0x120
[17348.408496]  [<ffffffff8112d18e>] ? rcu_irq_enter+0x8e/0xa0
[17348.408499]  [<ffffffff8187575f>] do_IRQ+0x4f/0xe0
[17348.408502]  [<ffffffff818733b0>] common_interrupt+0x70/0x70
[17348.408503]  <EOI>  [<ffffffff8127c72f>] ? unlazy_walk+0x13f/0x310
[17348.408508]  [<ffffffff8127c6fd>] ? unlazy_walk+0x10d/0x310
[17348.408510]  [<ffffffff8127d163>] lookup_fast+0x293/0x3b0
[17348.408513]  [<ffffffff813969a5>] ? security_inode_permission+0x45/0x70
[17348.408515]  [<ffffffff8127d5b9>] walk_component+0x49/0x2a0
[17348.408517]  [<ffffffff8127e2f2>] ? path_init+0x552/0x7f0
[17348.408519]  [<ffffffff8127e2aa>] ? path_init+0x50a/0x7f0
[17348.408521]  [<ffffffff8127e66d>] path_lookupat+0x5d/0x110
[17348.408523]  [<ffffffff81280219>] filename_lookup+0xa9/0x180
[17348.408526]  [<ffffffff8124bd0e>] ? kmem_cache_alloc+0x33e/0x360
[17348.408527]  [<ffffffff8127fe26>] ? getname_flags+0x56/0x1f0
[17348.408531]  [<ffffffff812943e5>] ? mntput_no_expire+0x5/0x3c0
[17348.408533]  [<ffffffff812803ca>] user_path_at_empty+0x3a/0x50
[17348.408536]  [<ffffffff81274476>] vfs_fstatat+0x66/0xc0
[17348.408539]  [<ffffffff81274a0e>] SYSC_newstat+0x2e/0x60
[17348.408542]  [<ffffffff81003044>] ? lockdep_sys_exit_thunk+0x12/0x14
[17348.408545]  [<ffffffff81274b9e>] SyS_newstat+0xe/0x10
[17348.408547]  [<ffffffff8187282e>] entry_SYSCALL_64_fastpath+0x12/0x76
[17348.408550] ---[ end trace f4b96237241a9872 ]---

Não declarado, tentando reproduzi-lo de forma confiável, assim a pergunta:

[39204.778745] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 23s! [thumbnail.so:11253]
[39204.778748] Modules linked in: ...
[39204.778795] CPU: 1 PID: 11253 Comm: thumbnail.so Tainted: P        W  OEL  4.2.0-23-generic #28-Ubuntu
[39204.778796] Hardware name: LENOVO 20208/20208  , BIOS H1ET85WW(1.23) 04/15/2014
[39204.778798] task: ffff8801f95c2940 ti: ffff8801dee20000 task.ti: ffff8801dee20000
[39204.778800] RIP: 0010:[<ffffffff810c422e>]  [<ffffffff810c422e>] native_queued_spin_lock_slowpath+0x15e/0x170
[39204.778806] RSP: 0018:ffff8801dee23e48  EFLAGS: 00000202
[39204.778807] RAX: 0000000000000101 RBX: ffff8800884bc480 RCX: 0000000000000001
[39204.778809] RDX: 0000000000000101 RSI: 0000000000000001 RDI: ffff8801dee23f58
[39204.778810] RBP: ffff8801dee23e48 R08: 0000000000000101 R09: ffff8800b2891064
[39204.778811] R10: 0000000000000001 R11: ffff8801f94582c0 R12: 000000118120d84e
[39204.778812] R13: ffff8801dee23eb8 R14: ffff8801dee23db8 R15: ffff8801f9568b00
[39204.778814] FS:  00007faec8c43780(0000) GS:ffff88022e240000(0000) knlGS:0000000000000000
[39204.778815] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[39204.778816] CR2: 0000000000f5f000 CR3: 0000000189284000 CR4: 00000000001406e0
[39204.778817] Stack:
[39204.778819]  ffff8801dee23e58 ffffffff817efdbc ffff8801dee23e88 ffffffffc0662dec
[39204.778821]  ffff8801dee23e98 00000000c61800cc ffff8800b2891000 fffffffffffffffb
[39204.778823]  ffff8801dee23ea8 ffffffff81266b12 0000000000f0a8d8 ffff8801f9568b00
[39204.778825] Call Trace:
[39204.778831]  [<ffffffff817efdbc>] _raw_spin_lock_bh+0x2c/0x30
[39204.778862]  [<ffffffffc0662dec>] wl_proc_read+0x3c/0xc0 [wl]
[39204.778866]  [<ffffffff81266b12>] proc_reg_read+0x42/0x70
[39204.778869]  [<ffffffff811fccd8>] __vfs_read+0x18/0x40
[39204.778871]  [<ffffffff811fd2a7>] vfs_read+0x87/0x130
[39204.778873]  [<ffffffff811fe025>] SyS_read+0x55/0xc0
[39204.778877]  [<ffffffff817f02b2>] entry_SYSCALL_64_fastpath+0x16/0x75
    
por int_ua 27.01.2016 / 20:47

1 resposta

4

Essas mensagens em particular são ADVERTÊNCIAS e Soft Lockups. Às vezes, você pode continuar executando sem problemas e, portanto, nem sempre são problemas de parada de exibição. Dependendo do que você quer fazer, você tem poucas opções.

Você pode travar em travamentos leves, pânicos ou outros eventos. Este wiki tem informações relevantes sobre como configurá-lo: link Note que quando você faz um crashdump, seu computador irá resetar, então isso pode não ser o que você quer.

Outra opção seria pesquisar esses eventos usando um pequeno script bash. Aqui está uma tentativa:

 #!/bin/bash -x                                                                  

rm /tmp/dmesg.*                                                                 
touch /tmp/dmesg.old                                                            
while true; do                                                                  
  dmesg > /tmp/dmesg.new                                                        
  diff /tmp/dmesg.old /tmp/dmesg.new > /tmp/dmesg.diff                          
  if egrep \(BUG\|WARNING\) /tmp/dmesg.diff; then                 
    notify-send "$(tail -n 3 /tmp/dmesg.diff)"                                  
  fi                                                                            
  dmesg > /tmp/dmesg.old                                                        
  sleep 10                                                                      
done     

Isso aparecerá como uma notificação quando um novo BUG ou WARNING aparecer.

    
por Chris J Arges 27.01.2016 / 22:01