DragonFlyBSD Kernel Audit
DF-2448 / panic.txt
← back to finding ↓ download raw
Fatal trap 12: page fault while in kernel mode
cpuid = 1; lapic id = 1
fault virtual address	= 0x40
fault code		= supervisor write data, page not present
instruction pointer	= 0x8:0xffffffff809d9a7b
stack pointer	        = 0x10:0xfffff80118303618
frame pointer	        = 0x10:0xfffff80118303638
code segment		= base 0x0, limit 0xfffff, type 0x1b
 			= DPL 0, pres 1, long 0, def32 0, gran 1
processor eflags	= interrupt enabled, resume, IOPL = 0
current process		= 906
current thread          = pri 6 
kernel: type 12 trap, code=2

CPU1 stopping CPUs: 0x0000003d
 stopped
Stopped at      prop_array_iterator+0x1b:       lock cmpxchgl   %edx,0x40(%rdi)
db>

---
Context from boot.log (preceding lines):
Sun Aug  9 00:01:31 UTC 2026
login: Device Mapper version 4.16.0 loaded
dm_target_error: Successfully initialized
dm_target_zero: Successfully initialized
Fatal user address access from kernel mode from dm_nulldata_dere at ffffffff809d9a7b

(then the Fatal trap 12 block above)

Analysis:
- Process 906 = dm_nulldata_deref (the PoC)
- Trap 12 = page fault in kernel mode
- fault VA = 0x40 = offsetof(struct prop_array, pa_rwlock) [NULL + 0x40]
- Stopped at prop_array_iterator+0x1b:  lock cmpxchgl %edx,0x40(%rdi)
  This is mtx_lock(&(pa->pa_rwlock)) with %rdi==0 (pa==NULL)
- Confirms: prop_dictionary_get(dm_dict, "cmd_data") returned NULL (key absent),
  prop_array_iterator(NULL) dereferenced it BEFORE the prop_object_is_array()
  guard could run (the rwlock take is the first stmt in prop_array_iterator).