{
  "finding_id": "DF-2729",
  "title": "_lwkt_schedule() KKASSERT(TDF_MIGRATING == 0) contradicts _lwkt_enqueue()'s by-design TDF_MIGRATING swallow during push/pull migration windows (INVARIANTS panic)",
  "verdict": "reproduced",
  "impact": "panic",
  "reproduce": {
    "build": "cd /tmp/df2728 && make obj && make   (kmod.mk against /usr/src/sys, INVARIANTS X86_64_GENERIC kernel)",
    "run": "usched :1 kldload /usr/obj/tmp/df2728/df2728.ko; usched :1 sysctl -n debug.df2728=2",
    "expected": "panic: assertion \"(td->td_flags & TDF_MIGRATING) == 0\" failed in _lwkt_schedule at /usr/src/sys/kern/lwkt_thread.c:1293 (observed at sender-side entry of the same inlined check, cpuid=0; the IPI-side re-entry executes the identical check)"
  },
  "kernel_refs": [
    "sys/kern/lwkt_thread.c:1293",
    "sys/kern/lwkt_thread.c:188",
    "sys/kern/lwkt_thread.c:1562-1594",
    "sys/kern/lwkt_thread.c:862-868",
    "sys/kern/lwkt_thread.c:1363-1420",
    "sys/kern/lwkt_thread.c:1616-1629"
  ],
  "artifacts": [
    "df2728.c", "Makefile", "build.sh", "run.sh", "build.log", "run.log",
    "panic.txt", "env.txt", "VERDICT.md", "fix.diff", "manifest.json", "verdict.json"
  ]
}
