DF-2747 / run.log
DF-2747 run.log โ baseline (stock kernel #0) and fix validation (kernel #1)
=== BASELINE โ stock INVARIANTS kernel #0 (Thu Jul 2 06:02:54) ===
setup: mountctl -a -w /root/j1.bin -o memfifo=64k /tmp:race
run: (user maxx) /tmp/df2747 12 400 /tmp/jstress
RUN 1: no output โ guest PANICKED (ssh dropped; vm.sh status => down).
vm.sh log capture (panic.txt, first block):
panic: assertion "bytes >= 0 && bytes <= rawp->recsize - sizeof(struct
journal_rawrecbeg) - sizeof(struct journal_rawrecend)" failed in
journal_commit at /usr/src/sys/kern/vfs_journal.c:741 cpuid = 1
journal_commit() at journal_commit+0x219
journal_extend() at journal_extend+0x9f
jrecord_data() at jrecord_data+0xae
jrecord_leaf_uio() at jrecord_leaf_uio+0x48
journal_write() at journal_write+0x16c
Debugger("panic") ... CPU1 stopping CPUs
RUN 2 (after vm.sh reset with-src; fresh boot, same install):
/tmp/df2747 12 150 /tmp/jstress
again no completion output โ PANICKED (vm.sh status => down):
journal_commit() at journal_commit+0x249
journal_extend() at journal_extend+0x9f
jrecord_data() at jrecord_data+0xae
jrecord_write_path.part.6() at ...+0xf6
jrecord_write_vnode_ref() at ...+0x118
cpuid = 0
Baseline score: 2/2 panics, unprivileged trigger, <90 s each.
=== FIX VALIDATION โ patched kernel #1 (Mon Aug 31 16:22:33) ===
fix applied: /usr/src/sys/kern/vfs_journal.c (fix.diff), full
make -j6 nativekernel KERNCONF=X86_64_GENERIC (BUILD_RC=0, build.log)
make installkernel; reboot; uname confirms #1.
setup: mountctl -a -w /root/j1.bin -o memfifo=64k /tmp:race
runs: (user maxx) /tmp/df2747 12 400 /tmp/jstress x4 back-to-back
RUN1: HAMMER DONE (12 procs x 400 iters) RUN1_OK
mountctl -l: membufused=21K total_bytes=4.90M stalls=0
ls /tmp/jstress | wc -l => 4800 (all files created)
RUN2: HAMMER DONE (12 procs x 400 iters) RUN2_OK
RUN3: HAMMER DONE (12 procs x 400 iters) RUN3_OK
RUN4: HAMMER DONE (12 procs x 400 iters) RUN4_OK
mountctl -l: membufused=3.94K total_bytes=5.45M stalls=0
stream integrity (j1_fixed.bin = copy of /root/j1.bin after run 4,
parsed with parse_stream.py):
stream bytes=6146304 records=29880 pads=402
chain_offset_end=0x5dc900 eof=0x5dc900 chain_break=no
transid_monotonic_violations=0
duplicate_transids=0
Patched score: 4/4 clean completions, perfect record chain.
fix_status: fixed.