Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

OpenVPN causes fresh -current to crash



Tom Ivar Helbekkmo <tih%hamartun.priv.no@localhost> writes:

> Didn't go so well.  My main machine does routing between several VLANs,
> using Quagga to manage the routing, NPF and ALTQ for traffic management,
> and OpenVPN for tunnels from remote devices, all the while offering a
> number of network services internally.
>
> After updating to a fresh current, attempting to enable NPF will crash
> the machine, as will starting OpenVPN.  The latter causes a crash the
> moment it tries to create a tun interface.

It's a little more complex than that.

With NPF enabled, the machine will sometimes boot, sometimes not.  It
may hang just after enabling NPF, or it may get hung later in the boot
process -- seemingly mostly while doing stuff with USB.  Turning the
machine fully off and on again before a reboot attempt seems to increase
the chance of a successful boot, but it's still about fifty/fifty.  If
it does boot completely, it seems to be stable after that.

OpenVPN, on the other hand, will reliably crash the system.  I'm running
openvpn-2.3.6nb2 from pkgsrc, compiled about a year ago.  It's set up to
create three tunnels, and to (like the rest of the system) route IPv4
and IPv6 over them.  When it starts, the kernel immediately panics while
handling a syscall number 5 for the openvpn process.  The following
copied by hand, because a recursive panic causes the attempt to dump
core to disk to fail:

panic: kernel diagnostic assertion "(kpreempt_disabled() || cpu_softintr_p() || ISSET(curlwp->l_pflag, LP_BOUND))" failed: file "/usr/src/sys/kern/subr_psref.c", line 291 passive references are CPU-local, but preemption is enabled and the caller is not in a softint or CPU-bound LWP

Backtrace:

vpanic()
ch_voltag_convert_in()
psref_release()
pfil_run_arg.isra.0()
if_initialize()
if_attach()
tun_clone_create()
tunopen()
cdev_open()
spec_open()
VOP_OPEN()
vn_open()
do_open()
do_sys_openat()
sys_open()
syscall()

This is with a NetBSD/amd64-current, updated from cvs yesterday.

-tih
-- 
Most people who graduate with CS degrees don't understand the significance
of Lisp.  Lisp is the most important idea in computer science.  --Alan Kay


Home | Main Index | Thread Index | Old Index