Hi Shuah,
On 02/03/2026 18:57, Shuah Khan wrote:
> All,
>
> I am seeing the following crash on Linux 7.0-rc1 kunit x86_64 run.
> Is this a known problem?
Yes, and there's a fix attached to this email:
https://lore.kernel.org/all/20260226-ungeziefer-erzfeind-13425179c7b2@brauner/
It's fixed in next-20260302 but not in mainline yet.
Cheers,
Guillaume
> ---------------------------------------------------------------------------
>
> Command '['qemu-system-x86_64', '-nodefaults', '-m', '1024', '-kernel',
> '.kunit/arch/x86/boot/bzImage', '-append', 'kunit.enable=1 console=ttyS0
> kunit_shutdown=reboot', '-no-reboot', '-nographic', '-accel', 'kvm',
> '-accel', 'hvf', '-accel', 'tcg', '-serial', 'stdio', '-bios', 'qboot.rom']'
> timed out after 300 seconds
> [10:52:02] [ERROR] Test: string-stream-test: missing expected subtest!
> [10:52:02] # string_stream_performance_test: Time elapsed: 1900
> us
> [10:52:02] # string_stream_performance_test: Total string length:
> 573890
> [10:52:02] # string_stream_performance_test: Bytes requested:
> 823930
> [10:52:02] # string_stream_performance_test: Actual bytes allocated:
> 1048312
> [10:52:02] kernel tried to execute NX-protected page - exploit attempt? (uid:
> 0)
> [10:52:02] BUG: unable to handle page fault for address: ffff9174c12172b8
> [10:52:02] #PF: supervisor instruction fetch in kernel mode
> [10:52:02] #PF: error_code(0x0011) - permissions violation
> [10:52:02] PGD 563f067 P4D 563f067 PUD 5640067 PMD 80000000012001e3
> [10:52:02] Oops: Oops: 0011 [#2] SMP NOPTI
> [10:52:02] CPU: 0 UID: 0 PID: 214 Comm: kunit_try_catch Tainted: G D
> N 7.0.0-rc1 #1 PREEMPT(lazy)
> [10:52:02] Tainted: [D]=DIE, [N]=TEST
> [10:52:02] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.1
> 11/11/2019
> [10:52:02] RIP: 0010:0xffff9174c12172b8
> [10:52:02] Code: 00 00 00 00 00 00 00 00 00 00 30 39 01 80 54 99 ff ff 30 39
> 01 80 54 99 ff ff e0 a9 9a c1 74 91 ff ff 40 ee 86 c1 74 91 ff ff <40> 6d 82
> 88 ff ff ff ff f8 c1 80 c1 74 91 ff ff 00 00 00 00 00 00
> [10:52:02] RSP: 0018:ffff995480003f08 EFLAGS: 00010286
> [10:52:02] RAX: ffff9174c180c1f0 RBX: 0000000000000003 RCX: ffff9174c1397000
> [10:52:02] RDX: ffff9174c12172b8 RSI: 0000000000000001 RDI: ffff9174c180c1f0
> [10:52:02] RBP: ffff9174fec1e100 R08: ffff9174c145c6d8 R09: ffffffff880fe68b
> [10:52:02] R10: ffffffff888080c0 R11: 00000000000000a1 R12: ffff995480003f40
> [10:52:02] R13: ffff9174c186ee40 R14: 0000000000000002 R15: 0000000000000000
> [10:52:02] FS: 0000000000000000(0000) GS:ffff91757602e000(0000)
> knlGS:0000000000000000
> [10:52:02] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [10:52:02] CR2: ffff9174c12172b8 CR3: 0000000005218000 CR4: 00000000000006f0
> [10:52:02] Call Trace:
> [10:52:02] <IRQ>
> [10:52:02] ? rcu_core+0x24b/0x5a0
> [10:52:02] ? rcu_core+0x1e9/0x5a0
> [10:52:02] ? handle_softirqs+0xc7/0x1d0
> [10:52:02] ? irq_exit_rcu+0x47/0x90
> [10:52:02] ? sysvec_apic_timer_interrupt+0x69/0x80
> [10:52:02] </IRQ>
> [10:52:02] <TASK>
> [10:52:02] ? asm_sysvec_apic_timer_interrupt+0x1a/0x20
> [10:52:02] ? __kmem_cache_free_bulk.part.0+0x105/0x240
> [10:52:02] ? __pcs_replace_full_main+0x1ab/0x2f0
> [10:52:02] ? kfree+0x158/0x290
> [10:52:02] ? string_stream_clear+0x64/0xa0
> [10:52:02] ? string_stream_clear+0x64/0xa0
> [10:52:02] ? __pfx_kunit_generic_run_threadfn_adapter+0x10/0x10
> [10:52:02] ? resource_free_string_stream+0x28/0x70
> [10:52:02] ? kunit_remove_resource+0x7b/0xa0
> [10:52:02] ? kunit_cleanup+0x38/0x80
> [10:52:02] ? kunit_generic_run_threadfn_adapter+0x1c/0x40
> [10:52:02] ? kthread+0xc9/0x100
> [10:52:02] ? __pfx_kthread+0x10/0x10
> [10:52:02] ? ret_from_fork+0x124/0x240
> [10:52:02] ? __pfx_kthread+0x10/0x10
> [10:52:02] ? ret_from_fork_asm+0x1a/0x30
> [10:52:02] </TASK>
> [10:52:02] CR2: ffff9174c12172b8
> [10:52:02] ---[ end trace 0000000000000000 ]---
> [10:52:02] RIP: 0010:kunit_test_null_dereference+0x2f/0x80
> [10:52:02] Code: 83 ec 10 49 c7 c1 10 af 75 88 49 c7 c0 20 b1 2a 88 ba 01 00
> 00 00 65 48 8b 05 85 66 93 00 48 89 44 24 08 31 c0 48 8d 4c 24 07 <c7> 04 25
> 00 00 00 00 00 00 00 00 48 c7 c6 20 30 62 88 48 c7 87 a0
> [10:52:02] RSP: 0018:ffff9954800e3ed0 EFLAGS: 00010246
> [10:52:02] RAX: 0000000000000000 RBX: ffff9174c19ab580 RCX: ffff9954800e3ed7
> [10:52:02] RDX: 0000000000000001 RSI: 0000000000000246 RDI: ffff995480013a78
> [10:52:02] RBP: ffff9174c186e200 R08: ffffffff882ab120 R09: ffffffff8875af10
> [10:52:02] R10: 0000000000000001 R11: 00000000000aae60 R12: ffff9954800ebd50
> [10:52:02] R13: ffff9174c180c180 R14: ffffffff882ab7b0 R15: ffff9174c19ab580
> [10:52:02] FS: 0000000000000000(0000) GS:ffff91757602e000(0000)
> knlGS:0000000000000000
> [10:52:02] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [10:52:02] CR2: ffff9174c12172b8 CR3: 0000000005218000 CR4: 00000000000006f0
> [10:52:02] Kernel panic - not syncing: Fatal exception in interrupt
> [10:52:02] Kernel Offset: 0x6e00000 from 0xffffffff81000000 (relocation
> range: 0xffffffff80000000-0xffffffffbfffffff)
> [10:52:02] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
> ]---
> [10:52:02] qemu-system-x86_64: terminating on signal 15 from pid 64729
> (python3)
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: string-stream-test: missing subtest result line!
> [10:52:02] # module: string_stream_test
> [10:52:02] =============== [CRASHED] string-stream-test ===============
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] [ERROR] Test: main: missing expected subtest!
> [10:52:02] [CRASHED]
> [10:52:02] ============================================================
> [10:52:02] Testing complete. Ran 159 tests: passed: 81, crashed: 68, skipped:
> 10, errors: 69
> The kernel seems to have crashed; you can decode the stack traces with:
> $ scripts/decode_stacktrace.sh .kunit/vmlinux .kunit < .kunit/test.log | tee
> .kunit/decoded.log | ./tools/testing/kunit/kunit.py parse
> [10:52:02] Elapsed time: 350.724s total, 4.449s configuring, 46.217s
> building, 300.058s running
>