Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Mar 2014 22:23:50 -0800
From:      hiren panchasara <hiren.panchasara@gmail.com>
To:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   Include port number in "Listen queue overflow" messages
Message-ID:  <CALCpEUHHxKE2P=i92eZrFSe-cX5%2BrpQLcD%2BbGfksb8hHP4WPag@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
I am thinking of committing following change that includes port number
in "Listen queue overflow" messages.

New message would look something like:
sonewconn: pcb 0xfffff8001b155760: Listen queue overflow on port
13120: 1 already in queue awaiting acceptance (454 occurrences)

I've recently ran into a situation at $work where I could not catch
the culprit application via "netstat -A" and had to dive into kgdb to
find the port from pcb where this application was listening to.

IMO, this change will make debugging easier.

cheers,
Hiren

Index: sys/kern/uipc_socket.c
===================================================================
--- sys/kern/uipc_socket.c      (revision 262861)
+++ sys/kern/uipc_socket.c      (working copy)
@@ -136,6 +136,7 @@
 #include <sys/jail.h>
 #include <sys/syslog.h>
 #include <netinet/in.h>
+#include <netinet/in_pcb.h>

 #include <net/vnet.h>

@@ -491,8 +492,11 @@
        static int overcount;

        struct socket *so;
+       struct inpcb *inp;
        int over;

+       inp = sotoinpcb(head);
+
        ACCEPT_LOCK();
        over = (head->so_qlen > 3 * head->so_qlimit / 2);
        ACCEPT_UNLOCK();
@@ -504,10 +508,12 @@
                overcount++;

                if (ratecheck(&lastover, &overinterval)) {
-                       log(LOG_DEBUG, "%s: pcb %p: Listen queue overflow: "
-                           "%i already in queue awaiting acceptance "
+                       log(LOG_DEBUG, "%s: pcb %p: Listen queue overflow on "
+                           "port %d: %i already in queue awaiting acceptance "
                            "(%d occurrences)\n",
-                           __func__, head->so_pcb, head->so_qlen, overcount);
+                           __func__, head->so_pcb,
+                           ntohs(inp->inp_inc.inc_lport), head->so_qlen,
+                           overcount);

                        overcount = 0;
                }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALCpEUHHxKE2P=i92eZrFSe-cX5%2BrpQLcD%2BbGfksb8hHP4WPag>