Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 09 Dec 2003 00:07:01 +0000
From:      Robin Breathe <robin@isometry.net>
To:        Julian Elischer <julian@elischer.org>
Cc:        current@freebsd.org
Subject:   Re: Fatal trap 12: page fault while in kernelmode(subr_turnstile.c) w/ trace
Message-ID:  <3FD51225.1010004@isometry.net>
In-Reply-To: <Pine.BSF.4.21.0312081540280.44692-100000@InterJet.elischer.org>
References:  <Pine.BSF.4.21.0312081540280.44692-100000@InterJet.elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Julian Elischer wrote:
>>ng_eiface_rmnode(c4d42200,0,0,c4d42200,c4d42200) at ng_eiface_rmnode+0x61
>>ng_rmnode(c4d42200,0,0,0,0) at ng_rmnode+0xc7
>>ng_generic_msg(c4d42200,c4a04200,0,0,0) at ng_generic_msg+0x11f
>>ng_apply_item(c4d42200,c4a04200,c06d115c,7d6,c4a04200) at 
>>ng_apply_item+0x365
>>ng_snd_item(c4a04200,0,c47a0820,0,0) at ng_snd_item+0x7cb
>>ngc_send(c4ab91e0,0,c1d12e00,c47a07a0,0) at ngc_send+0x146
>>sosend(c4ab91e0,c47a07a0,dcaccc4c,c1d12e00,0) at sosend+0x44d
>>kern_sendit(c48a48c0,3,dcacccc4,0,0) at kern_sendit+0x17c
>>sendit(c48a48c0,3,dcacccc4,0,804f034) at sendit+0x16e
>>sendto(c48a48c0,dcaccd14,c06e14fe,3ee,6) at sendto+0x5b
>>syscall(2f,2f,2f,bfbfe9c8,bfbfe9c2) at syscall+0x2c0
> 
> Ok so This caught my attention..

Excellent ;)

> you are removing an eiface node?

Yup, the code I'm using to reliably reproduce the panic is:

# cat panic
#!/bin/sh -x

cat <<'EOF' >/tmp/ngctl.cmd
  list
  mkpeer . eiface hook ether
  name .:hook vif0
  rmhook . hook
  list
  show vif0:
EOF
ngctl -f /tmp/ngctl.cmd

# check the mac is current zero
ifconfig ngeth0
ifconfig ngeth0 link '00:bd:03:11:25:01'
# check it got set properly
ifconfig ngeth0

ngctl show vif0:
sleep 1

ngctl shutdown vif0:
#EOF

This is just whittled down from an rc.d script I wrote to manage 
creation of an ng_bridge(4) attached to an external "real" interface, 
with arbitrarily many ng_eiface(4) nodes attached. Essentially trying to 
emulate Solaris logical interfaces (not aliasing). I want to be able to 
remove logical interfaces as well as add them.

In light of the "Turnstile assertion failure" show stopper (for which 
I've failed to find any public backtraces) and turnstile's prominence in 
the panics, I wondered if it might be responsible/involved/something.

> I can believe that the interface code may not be very well tested in
> this..
> there have been some changes in the last couple of years regarding
> interface attaching and detatching and I have not kept up with it..

I can certainly believe this too. I initially thought the problem was 
entirely ng_eiface, but I don't know. As I mentioned earlier in the 
thread, there's no panic under 4.9-R or 5.1-R, so whatever change is 
responsible likely came in the last few months (I first noticed this 
panic about 2-3 weeks ago, though I hadn't been looking for it).

Ideally ng_eiface would support cloning with ifconfig(8), and the 
netgraph nodes would have default names (probably identical to the 
interface name). If anyone can give me a reading list or some other 
helpful shove in the right direction, I'm perfectly happy to go off and 
do the gruntwork, at present I'm simply not sure where to begin.

- Robin
-- 
Robin Breathe              robin@isometry.net              +441865741800



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