[Bug 227404] UP FreeBSD VM always hangs on reboot since 20180329-r331740

Dexuan Cui decui at microsoft.com
Tue Apr 10 21:06:26 UTC 2018


> From: Bruce Evans <brde at optusnet.com.au>
> Sent: Tuesday, April 10, 2018 13:09
> > Here the bug is that UP FreeBSD VM hangs on reboot or power-off, and
> > I'm sure this recent patch (which was committed by Jeff on Mar 26) caused
> > this bug:
> > r331561:Fix a bug introduced in r329612 that slowly invalidates all clean bufs.
> >
> > However, SMP VM with 2 or more CPUs doesn't hang on reboot/power-off
> > according to our tests.
> 
> Actually, r329612 is what causes this bug.  I already did the bisection
> to find almost this bug a couple of weeks ago.  The hang occurs on amd64
> with 4 CPUs but not on amd64 with 8 CPUs or i386 with 4 or 8 CPUS.  I
> just checked that it occurs on i386 with 1 CPU.  All on the same machine.
> But r329611 doesn't hang for any of these cases.

So, it looks to me that: r329612 introduced a hang issue, so Jeff made r331561,
trying to fix the issue, but it looks the issue is not completely fixed (at least for me).

I didn't test r329612.

We noticed our amd64 VM (which has a single CPU) hung . The VM kernel was 
built with yesterday's latest kernel code + the default GENERIC kernel config.

However, using the same kernel binary, if we configure 2 or more CPUs
to the VM, the VM doesn't hang on reboot.

If I use the latest code but manually remove the changes made by r331561, 
the hang issue with our single-CPU VM will go away.

I hope the info is helpful.
 
> I still think there is an older bug, but now think it is related.  I
> only tested with SCHED_4BSD.  For SCHED_4BSD, I suspect that the bug
> is from pinning a thread to a CPU and then stopping that CPU.  Pure
> UP has no problems since pinning is null for it.  SCHED_4BSD has especially
> special handing for SMP (a separate runq for each CPU.  I have been
> modifying
> SCHED_4BSD and the separate queues mostly get in the way).
> 
> Bruce

I always use the default GENERIC kernel options, so I guess I'm using SCHED_4BSD(?)..

Thanks,
-- Dexuan


More information about the freebsd-bugs mailing list