debug: nt_conntrack and KVM crash



Folks,

I've hooked up Jason's kgb/kgdb patches and been able to gather some
more information about the most recent crashes on this test system.

The last few crashes have occurred after starting an F12 guest, at which
point __nf_conntrack_find is called with the following tuple:

--- begin ---
(gdb) print tuple->src->u3
$45 = {all = {16777343, 0, 0, 0}, ip = 16777343, ip6 = {16777343, 0, 0,
0},
in = {s_addr = 16777343}, in6 = {in6_u = {
u6_addr8 = "\177\000\000\001", '\000' <repeats 11 times>,
u6_addr16 = {
127, 256, 0, 0, 0, 0, 0, 0}, u6_addr32 = {16777343, 0, 0, 0}}}}

(gdb) print tuple->src->u
$46 = {all = 3607, tcp = {port = 3607}, udp = {port = 3607}, icmp = {
id = 3607}, dccp = {port = 3607}, sctp = {port = 3607}, gre = {key =
3607}}

(gdb) print tuple->dst
$48 = {u3 = {all = {16777343, 0, 0, 0}, ip = 16777343, ip6 = {16777343,
0, 0,
0}, in = {s_addr = 16777343}, in6 = {in6_u = {
u6_addr8 = "\177\000\000\001", '\000' <repeats 11 times>,
u6_addr16 = {
127, 256, 0, 0, 0, 0, 0, 0}, u6_addr32 = {16777343, 0, 0,
0}}}},
u = {all = 12761, tcp = {port = 12761}, udp = {port = 12761}, icmp = {
type = 217 '\331', code = 49 '1'}, dccp = {port = 12761}, sctp = {
port = 12761}, gre = {key = 12761}}, protonum = 6 '\006', dir = 0
'\000'}
---end ---

Which (after converting from network to host addressing) is a VNC (port
5902) TCP packet being broadcast (by the guest maybe? I didn't know
Fedora started VNC by default these days, but I'll look).

After looking through the netfilter code, I understand now that it
maintains a hashtable (which size is computed at boot time according to
system memory size, and is usually kmalloced but might be vmalloced if
there is a problem - not here though). Each time a packet of interest
relating to a connection we might want to track comes in, we get a
"tuple" passed in to the conntrack functions, and this is hashed using
hash_conntrack into an entry in an array of hlists (buckets) stored in
the "ct" (conntrack) entry in the current network namespace (there is
only one on this system, I checked that). In this case, when we come to
look at the hashtable, it contains a number of valid entries (I looked)
but not for the hashed entry calculated for this VNC packet.

I would love to have advice on the best way to debug conntrack hashtable
missbehavior (there's a lot of RCU use in there), especially with
freeing entries. Is there more debug code I can turn on? Is there
anything you guys would suggest that I look at?

Jon.


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: debug: nt_conntrack and KVM crash
    ... more information about the most recent crashes on this test system. ... "tuple" passed in to the conntrack functions, ... the "ct" entry in the current network namespace (there is ...
    (Linux-Kernel)
  • Re: network problems
    ... In flowtable_lookupwhere it searches for the destination in the ... The flowtable_lookupseems to alway assume a valid entry ... My network is also working fine, but it crashes when I ping the endpoint of the tunnel interface. ...
    (freebsd-current)
  • Re: ipf and oow - bug under 6.1?
    ... Mike Scott wrote: ... The L entry is fine - I log out bound syn requests anyway. ... though - before and after this chunk of log entries, ... I have got entries which should not have been blocked and even worse crashes ...
    (comp.unix.bsd.freebsd.misc)
  • Re: K9copy crashes
    ... Ian Pawson wrote: ... Just had an update to k9copy and I find that it has removed its entry in ... the menu and when you press the button to open a disk it crashes! ...
    (alt.os.linux.suse)