⬢ DragonFlyBSD Kernel Audit
DF-5728 / panic.txt
← back to finding ↓ download raw
DF-5728 — kernel stack guard double-fault frames (both reproductions, stock kernel)

=== RUN 1 (depth 60, sysctl/thread-context DDB entry, CPU1) ===
DOUBLE FAULT - KERNEL STACK GUARD HIT!

Fatal double fault
rip = 0xffffffff802ca73c          db_unary+0xc   (nm: ffffffff802ca730 t db_unary)
rsp = 0xfffff801184cf000          page-aligned -> 16 KB kstack guard page
rbp = 0xfffff801184cf008
cpuid = 1; lapic id = 1
panic: double fault
cpuid = 1
Trace beginning at frame 0xfffff8004f06cec8
dblfault_handler() at dblfault_handler+0x10c 0xffffffff80bd682c
dblfault_handler() at dblfault_handler+0x10c 0xffffffff80bd682c
boot() called on cpu#1
Uptime: 1m8s
Dumping 570 MB ... Dump complete

Preceding session (same run):
  p (1+(2*3))       -> 7          (evaluator sane)
  p ((( x30 ... 1   -> Syntax error, db> returns   (30 levels = 8.2 KB: survives)
  p ((( x60 ... 1   -> DOUBLE FAULT (above)                       (16.3 KB)

=== RUN 2 (depth 40, fresh boot, CPU3) ===
DOUBLE FAULT

Fatal double fault
rip = 0xffffffff802cba0c          db_force_whitespace+0xc (nm: ffffffff802cba00 T)
rsp = 0xfffff80117e77000          page-aligned -> kstack guard page
rbp = 0xfffff80117e77008
cpuid = 3; lapic id = 3
panic: double fault
cpuid = 3
Trace beginning at frame 0xfffff80089631ec8
dblfault_handler() at dblfault_handler+0x10c 0xffffffff80bd682c
dblfault_handler() at dblfault_handler+0x10c 0xffffffff80bd682c
boot() called on cpu#3
Uptime: 21s
Dumping 677 MB ... Dump complete
(wedge followup: "Warning: thread switch from interrupt..." for thread (sysctl))

Frame budget (measured from /boot/kernel/kernel objdump):
  per '(' level = db_term(32) + db_expression(16) + db_shift_expr(64)
                + db_add_expr(64) + db_mult_expr(64) + db_unary(32) = 272 B
  30 levels = 8.2 KB   40 = 10.9 KB   60 = 16.3 KB   118 = 32.1 KB
  kstack = UPAGES(4) * PAGE_SIZE = 16 KB + guard page