netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jon Masters <jonathan@jonmasters.org>
To: linux-kernel <linux-kernel@vger.kernel.org>
Cc: netdev <netdev@vger.kernel.org>,
	netfilter-devel <netfilter-devel@vger.kernel.org>,
	Eric Dumazet <eric.dumazet@gmail.com>,
	Patrick McHardy <kaber@trash.net>
Subject: debug: nt_conntrack and KVM crash
Date: Fri, 29 Jan 2010 20:10:32 -0500	[thread overview]
Message-ID: <1264813832.2793.446.camel@tonnant> (raw)

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.



             reply	other threads:[~2010-01-30  1:10 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-30  1:10 Jon Masters [this message]
2010-01-30  1:57 ` debug: nt_conntrack and KVM crash Jon Masters
2010-01-30  1:59   ` Jon Masters
2010-01-30  6:58     ` Eric Dumazet
2010-01-30  7:36       ` Jon Masters
2010-01-30  7:40         ` Jon Masters
2010-01-30  8:33         ` Eric Dumazet
2010-01-30 10:03           ` Jon Masters
2010-02-01  9:32       ` Jon Masters
2010-02-01  9:36         ` Alexey Dobriyan
2010-02-01 10:12           ` Eric Dumazet
2010-02-01 10:25             ` Alexey Dobriyan
2010-02-01 10:38               ` Jon Masters
2010-02-01 11:23               ` Eric Dumazet
2010-02-01 14:48                 ` Alexey Dobriyan
2010-02-01 14:57                   ` Eric Dumazet
2010-02-01 14:52                 ` [PATCH] netfilter: per netns nf_conntrack_cachep Eric Dumazet
2010-02-01 14:58                   ` Alexey Dobriyan
2010-02-01 15:02                     ` Eric Dumazet
2010-02-02 11:04                       ` Jon Masters
2010-02-02 11:35                         ` Jon Masters
2010-02-02 16:46                           ` Jon Masters
2010-02-02 16:48                             ` Patrick McHardy
2010-02-02 17:07                               ` Jon Masters
2010-02-02 17:58                                 ` Alexey Dobriyan
2010-02-02 18:16                                   ` Jon Masters
2010-02-02 18:34                                     ` Jon Masters
2010-02-02 18:36                                     ` Patrick McHardy
2010-02-02 18:39                                       ` Jon Masters
2010-02-02 18:42                                         ` Jon Masters
2010-02-03 12:10                                       ` Patrick McHardy
2010-02-03 18:38                                         ` Jon Masters
2010-02-03 19:09                                           ` Alexey Dobriyan
2010-02-03 19:43                                             ` Jon Masters
2010-02-03 19:46                                               ` Jon Masters
2010-02-03 19:53                                                 ` Alexey Dobriyan
2010-02-03 20:04                                                   ` Jon Masters
2010-02-03 19:51                                               ` Alexey Dobriyan
2010-02-03 19:53                                                 ` Jon Masters
2010-02-03 20:01                                                   ` Alexey Dobriyan
2010-02-04 12:25                                               ` Patrick McHardy
2010-02-04 12:27                                                 ` Alexey Dobriyan
2010-02-04 12:30                                                   ` Patrick McHardy
2010-02-04 12:35                                                     ` Alexey Dobriyan
2010-02-04 13:04                                                       ` Patrick McHardy
2010-02-04 13:18                                                         ` Jon Masters
2010-02-04 13:37                                                           ` Patrick McHardy
2010-02-04 13:42                                                             ` Jon Masters
2010-02-03 20:21                                         ` Jon Masters
2010-02-04 12:24                                           ` Patrick McHardy
2010-02-02 16:58                             ` PROBLEM with summary: " Jon Masters
2010-02-02 17:04                               ` Patrick McHardy
2010-02-02 17:16                                 ` Eric Dumazet
2010-02-02 17:23                                   ` Jon Masters
2010-02-02  4:36                   ` Jon Masters
2010-02-02  7:02                     ` Jon Masters
2010-02-02 10:47                   ` Jon Masters
2010-02-04 14:00                   ` Patrick McHardy
2010-02-01 10:35           ` debug: nt_conntrack and KVM crash Jon Masters
2010-02-01 10:44             ` Alexey Dobriyan
2010-02-01 10:47               ` Alexey Dobriyan
2010-02-01 10:49                 ` Alexey Dobriyan
2010-02-01 10:53                   ` Jon Masters

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1264813832.2793.446.camel@tonnant \
    --to=jonathan@jonmasters.org \
    --cc=eric.dumazet@gmail.com \
    --cc=kaber@trash.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).