On Thu, Jul 17, 2014 at 06:56, David Gwynne wrote: > CVSROOT: /cvs > Module name: src > Changes by: [email protected] 2014/07/17 06:56:07 > > Modified files: > sys/arch/i386/i386: ioapic.c > > Log message: > interrupt handlers established via the ioapic didnt get their > ih_flags set. ih_flags are used by the intr_handler() code to > determine if the kernel lock should be taken or not. > > because the flags werent set, random memory was used instead which > in turn meant you sometimes didnt have the biglock when running > interrupt handlers which relied on it. races ahoy. > > this was found by jmatthew@ while helping me try to figure out why > bnx was blowing up and causing double frees and use after frees. > turns out bnx was the smoke for this fire.
The smoke happened to start pouring out at this particular instant because of the commit to subr_poison.c to use inverted deadbeef patterns, which flipped the MPSAFE flag from off to on. So blame Theo for making me do that. :)
