somewhat reproducable vimage panic
John-Mark Gurney
jmg at funkthat.com
Tue Jul 21 09:16:59 UTC 2020
I'm running:
FreeBSD test 13.0-CURRENT FreeBSD 13.0-CURRENT #0 r362596: Thu Jun 25 05:02:51 UTC 2020 root at releng1.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
and I'm working on improve the if_ure driver. I've put together a
little script that I've attached that I'm using to test the driver..
It puts a couple ue interfaces each into their own jail, configures
them, and tries to pass traffic. This assumes that the two interfaces
are connected together.
Pretty regularly when destroying the jails, I get the following
panic: CURVNET_SET at /usr/src/sys/netinet/in_mcast.c:626 inm_release() curvnet=0 vnet=0xfffff80154c82a80
(kgdb) #0 __curthread () at /usr/src/sys/amd64/include/pcpu_aux.h:55
#1 doadump (textdump=1) at /usr/src/sys/kern/kern_shutdown.c:394
#2 0xffffffff80bc6250 in kern_reboot (howto=260)
at /usr/src/sys/kern/kern_shutdown.c:481
#3 0xffffffff80bc66aa in vpanic (fmt=<optimized out>, ap=<optimized out>)
at /usr/src/sys/kern/kern_shutdown.c:913
#4 0xffffffff80bc6403 in panic (fmt=<unavailable>)
at /usr/src/sys/kern/kern_shutdown.c:839
#5 0xffffffff80d6553b in inm_release (inm=0xfffff80029043700)
at /usr/src/sys/netinet/in_mcast.c:630
#6 inm_release_task (arg=<optimized out>, pending=<optimized out>)
at /usr/src/sys/netinet/in_mcast.c:312
#7 0xffffffff80c2521a in taskqueue_run_locked (queue=0xfffff80003116b00)
at /usr/src/sys/kern/subr_taskqueue.c:476
#8 0xffffffff80c26294 in taskqueue_thread_loop (arg=<optimized out>)
at /usr/src/sys/kern/subr_taskqueue.c:793
#9 0xffffffff80b830f0 in fork_exit (
callout=0xffffffff80c26200 <taskqueue_thread_loop>,
arg=0xffffffff81cf4f70 <taskqueue_thread>, frame=0xfffffe0049e99b80)
at /usr/src/sys/kern/kern_fork.c:1052
#10 <signal handler called>
(kgdb)
I have the core files so I can get additional information.
Let me know if you need any additional information.
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
-------------- next part --------------
#!/bin/sh -
#
# ls testinterfaces.sh | entr sh -c 'fsync testinterfaces.sh && sh testinterfaces.sh ue0 ue1'
#
testiface="$1"
checkiface="$2"
echo starting, test $1, check $2
# ifconfig <iface> -m to get caps
getcaps()
{
ifconfig -m "$1" | awk '$1 ~ /^capabilities=/ { split($0, a, "<"); split(a[2], b, ">"); split(b[1], caps, ","); for (i in caps) print caps[i] }'
}
if ! testjail=$(jail -i -c persist=1 path=/ name=testjail vnet=new vnet.interface="$testiface"); then
echo failed to start test jail
exit 1
fi
if ! checkjail=$(jail -i -c persist=1 path=/ name=checkjail vnet=new vnet.interface="$checkiface"); then
echo failed to start check jail
exit 1
fi
cleanup()
{
jail -r "$testjail"
jail -r "$checkjail"
}
trap cleanup EXIT
run()
{
if [ x"$1" = x"check" ]; then
jid="$checkjail"
elif [ x"$1" = x"test" ]; then
jid="$testjail"
else
echo Invalid: "$1" >&2
exit 1
fi
shift
jexec "$jid" "$@"
}
ifjail()
{
if [ x"$1" = x"check" ]; then
iface="$checkiface"
elif [ x"$1" = x"test" ]; then
iface="$testiface"
else
echo Invalid: "$1" >&2
exit 1
fi
j="$1"
shift
run "$j" ifconfig "$iface" "$@"
}
waitcarrier()
{
local i
for i in test check; do
while :; do
if ifjail "$i" | grep 1000baseT >/dev/null; then
break
fi
sleep .5
done
done
}
hwvlantest()
{
run test ifconfig lo0 up
run check ifconfig lo0 up
for i in "vlanhwtag" "-vlanhwtag"; do
ifjail test down
ifjail check down
ifjail test "$i"
ifjail check -vlanhwtag
ifjail test up
ifjail check up
sleep 2
run test ifconfig $testiface.42 create 172.30.5.5/24
run check ifconfig $checkiface.42 create 172.30.5.4/24
waitcarrier
run check tcpdump -p -q -c 2 -n -i "$checkiface" vlan 42 and icmp &
sleep 1
if ! run test ping -c 1 -t 2 172.30.5.4; then
echo FAILED on "$i"!!!!
exit 1
fi
done
}
hwvlantest
More information about the freebsd-net
mailing list