Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Jul 2020 02:16:55 -0700
From:      John-Mark Gurney <jmg@funkthat.com>
To:        freebsd-net@FreeBSD.org, freebsd-current@FreeBSD.org
Subject:   somewhat reproducable vimage panic
Message-ID:  <20200721091654.GC4213@funkthat.com>

next in thread | raw e-mail | index | archive | help

--tK3TaB1xs9ylLrl6
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

I'm running:
FreeBSD test 13.0-CURRENT FreeBSD 13.0-CURRENT #0 r362596: Thu Jun 25 05:02:51 UTC 2020     root@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."

--tK3TaB1xs9ylLrl6
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="testinterfaces.txt"

#!/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

--tK3TaB1xs9ylLrl6--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200721091654.GC4213>