How To Cause An Oops
Joseph Salisbury
joseph.salisbury at canonical.com
Wed Jan 18 21:50:50 UTC 2012
On 01/18/2012 03:25 PM, Chris Van Hoof wrote:
> On 01/17/2012 12:23 PM, Joseph Salisbury wrote:
>> Hello,
>>
>> Is there a way to generate or simulate an oops on purpose? This would
>> be helpful to perform testing while the kerneloops.org site is down.
>>
>> Thanks,
>>
>> Joe
>
> Heya Joe -- I've had this laying around for a while; as long as
> /proc/sys/kernel/panic_on_oops is set to 0 it should give you what
> you're after.
>
> --chris
>
> vanhoof at hanzo:~/oops$ cat oops.c
> #include<linux/kernel.h>
> #include<linux/module.h>
> #include<linux/init.h>
>
> static void generate_oops(void) {
> *(int*)0 = 1;
> }
>
> static int __init my_oops_init(void) {
> printk("hi");
> generate_oops();
> return 0;
> }
> static void __exit my_oops_exit(void) {
> printk("bai");
> }
>
> module_init(my_oops_init);
> module_exit(my_oops_exit);
>
> vanhoof at hanzo:~/oops$ cat Makefile
> obj-m := oops.o
> KDIR := /lib/modules/$(shell uname -r)/build
> PWD := $(shell pwd)
> SYM=$(PWD)
>
> all:
> $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
>
>
> vanhoof at hanzo:~/oops$ make
> make -C /lib/modules/3.0.0-15-generic/build SUBDIRS=/home/vanhoof/oops
> modules
> make[1]: Entering directory `/usr/src/linux-headers-3.0.0-15-generic'
> CC [M] /home/vanhoof/oops/oops.o
> Building modules, stage 2.
> MODPOST 1 modules
> CC /home/vanhoof/oops/oops.mod.o
> LD [M] /home/vanhoof/oops/oops.ko
> make[1]: Leaving directory `/usr/src/linux-headers-3.0.0-15-generic'
>
> vanhoof at hanzo:~/oops$ sudo insmod ./oops.ko
> vanhoof at hanzo:~/oops$ dmesg
> [...]
> [ 293.004578] oops: module license 'unspecified' taints kernel.
> [ 293.004584] Disabling lock debugging due to kernel taint
> [ 293.004832] hi
> [ 293.004851] BUG: unable to handle kernel NULL pointer dereference at
> (null)
> [ 293.004925] IP: [<ffffffffa003c012>] my_oops_init+0x12/0x1000 [oops]
> [ 293.004979] PGD 1572e1067 PUD 1559a7067 PMD 0
> [ 293.005024] Oops: 0002 [#1] SMP
> [ 293.005058] CPU 0
> [ 293.005081] Modules linked in: oops(P+) parport_pc autofs4 ppdev
> snd_hda_codec_hdmi rfcomm bnep bluetooth binfmt_misc snd_hda_intel
> snd_hda_codec snd_hwdep snd_pcm i915 snd_seq_midi snd_rawmidi nouveau
> snd_seq_midi_event snd_seq snd_timer snd_seq_device ttm snd
> drm_kms_helper drm mei(C) soundcore mxm_wmi snd_page_alloc i2c_algo_bit
> wmi video lp parport ahci xhci_hcd libahci e1000e
> [ 293.005438]
> [ 293.005448] Pid: 2810, comm: insmod Tainted: P C
> 3.0.0-15-generic #24-Ubuntu Intel Corporation 2012 Client
> Platform/Emerald Lake
> [ 293.005513] RIP: 0010:[<ffffffffa003c012>] [<ffffffffa003c012>]
> my_oops_init+0x12/0x1000 [oops]
> [ 293.005558] RSP: 0018:ffff880155ab5f18 EFLAGS: 00010292
> [ 293.005584] RAX: 0000000000000014 RBX: ffffffffa009f000 RCX:
> 000000000003ffff
> [ 293.005630] RDX: 0000000000000000 RSI: 0000000000000082 RDI:
> 0000000000000246
> [ 293.005681] RBP: ffff880155ab5f18 R08: 000000000000000a R09:
> 0000000000000000
> [ 293.005732] R10: 0000000000000000 R11: 0000000000000000 R12:
> 0000000000000000
> [ 293.005784] R13: ffffffffa003c000 R14: 00000000015a8010 R15:
> 0000000000000003
> [ 293.005836] FS: 00007f19cfc29720(0000) GS:ffff88015e200000(0000)
> knlGS:0000000000000000
> [ 293.005895] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 293.005937] CR2: 0000000000000000 CR3: 000000015357f000 CR4:
> 00000000001406f0
> [ 293.005988] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
> 0000000000000000
> [ 293.006039] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:
> 0000000000000400
> [ 293.006091] Process insmod (pid: 2810, threadinfo ffff880155ab4000,
> task ffff88013a442e40)
> [ 293.006149] Stack:
> [ 293.006166] ffff880155ab5f48 ffffffff81002042 ffffffffa009f000
> ffffffffffffffff
> [ 293.006230] 0000000000000d4e 00000000015a8010 ffff880155ab5f78
> ffffffff8109fede
> [ 293.006293] 00007fff3bc46992 00000000015a8010 0000000000000d4e
> 0000000000004000
> [ 293.006357] Call Trace:
> [ 293.006383] [<ffffffff81002042>] do_one_initcall+0x42/0x180
> [ 293.006428] [<ffffffff8109fede>] sys_init_module+0xbe/0x230
> [ 293.006473] [<ffffffff815fa3c2>] system_call_fastpath+0x16/0x1b
> [ 293.006517] Code:<c7> 04 25 00 00 00 00 01 00 00 00 31 c0 5d c3 00
> 00 00 00 00 00 00
> [ 293.006651] RIP [<ffffffffa003c012>] my_oops_init+0x12/0x1000 [oops]
> [ 293.006704] RSP<ffff880155ab5f18>
> [ 293.006730] CR2: 0000000000000000
> [ 293.066044] ---[ end trace 4e561320e5a93aba ]---
>
>
>
Awesome! thanks for this, Chris. Thanks for the link you provided as
well, Adam.
More information about the kernel-team
mailing list