Kernel panic reproduced twice (two separate boots) by kldload of pqb_rig.ko. === Run 1 (guest boot 1, pre-reset, INVARIANTS kernel) === panic: vm_page_bits: illegal base/size 0/8192 cpuid = 1 Trace beginning at frame 0xfffff801185977a8 vm_page_bits() at vm_page_bits+0x46 0xffffffff809b5ae6 vm_page_bits() at vm_page_bits+0x46 0xffffffff809b5ae6 rig_loader() at rig_loader+0x38 0xffffffff82600038 module_register_init() at module_register_init+0x49 0xffffffff806232e9 linker_load_file.part.3() at linker_load_file.part.3+0x1b9 0xffffffff80624619 linker_load_module() at linker_load_module+0x116 0xffffffff80625e16 Debugger("panic") CPU1 stopping CPUs: 0x0000003d stopped Stopped at Debugger+0x7c: movb $0,0xbdaf09(%rip) db> === Run 2 (fresh `vm.sh reset with-src` boot, clean guest) === login: panic: vm_page_bits: illegal base/size 0/8192 cpuid = 1 Trace beginning at frame 0xfffff801181587a8 vm_page_bits() at vm_page_bits+0x46 0xffffffff809b5ae6 vm_page_bits() at vm_page_bits+0x46 0xffffffff809b5ae6 rig_loader() at rig_loader+0x38 0xffffffff82600038 module_register_init() at module_register_init+0x49 0xffffffff806232e9 linker_load_file.part.3() at linker_load_file.part.3+0x1b9 0xffffffff80624619 linker_load_module() at linker_load_module+0x116 0xffffffff80625e16 Debugger("panic") CPU1 stopping CPUs: 0x0000003d stopped Stopped at Debugger+0x7c: movb $0,0xbdaf09(%rip) db> Notes: - The panic message echoes the rig's exact arguments (base=0, size=8192): proof that out-of-page arguments reach vm_page_bits() with no validation anywhere upstream (the rig calls the exported kernel function directly). - The panic is the INVARIANTS KASSERT doing its job. On release/production kernels (no `options INVARIANTS`, sys/sys/systm.h:116-119) the KASSERT is a no-op and the same input computes `(2<<15)-(1<<0) = 0xFFFF` silently - see bitsarith.log for the exact arithmetic on the guest's own compiler.