netdev
[Top] [All Lists]

Re: Failed assertion

To: "David S. Miller" <davem@xxxxxxxxxx>
Subject: Re: Failed assertion
From: "Petr Vandrovec" <VANDROVE@xxxxxxxxxx>
Date: Mon, 26 Feb 2001 12:21:40 MET-1
Cc: netdev@xxxxxxxxxxx, ralf@xxxxxxxxxxx
Organization: CC CTU Prague
Sender: owner-netdev@xxxxxxxxxxx
On 25 Feb 01 at 21:37, David S. Miller wrote:
>  > During heavy outgoing traffic while benchmarking a network driver I
>  > received this message:
>  > 
>  > KERNEL: assertion (atomic_read(&sk->wmem_alloc) == 0) failed at 
> af_inet.c(164):inet_sock_destruct
>  > 
>  > This was with (almost ...) stock 2.4.1.
> 
> What platform and what driver?  It is the first time that any such
> instance of this message has been reported.

Dave, it is not first time. Unfortunately, I do not have my original
message anymore, only Alexey's reply... 

It happened on dual PIII/800, with tulip driver at:
Nov 23, 13:30:37
Nov 24, 22:24:02 - and whoa at 
        22:24:10:
                  Unable to handle kernel NULL pointer dereference 
                      at virtual address 00000000
           *pde = 0
           Oops: 0002
           CPU: 1
           EIP:    remove_wait_queue+6/36
           EFLAGS: 00010086
           ...
           Process ping (pid: 3948, stackpage=c712d000)
           ...
           trace: wait_for_packet+230/300
                  skb_recv_datagram+208/240
                  raw_recvmsg+104/308
                  inet_recvmsg+88/112
                  sock_recvmsg+61/172
                  sys_recvfrom+173/264
                  do_page_fault+323/1000   ??
                  [<dcf02093>]             ??
                  do_page_fault+0/1000     ??
                  do_mmap_pgoff+895/1044   ??
                  do_getitimer+156/164     ??
                  sys_socketcall+383/508
                  system_call+51/56

It did not happened since that time, although I was running 2.4.0-test11
up to 28th November.

Machine is running arpwatch, and periodically pings all hosts on my
local C subnet. It is not perfect, but:

while true; do
  Q=1
  while [ $Q -ne 255 ]; do
    IP=147.32.240.$Q
    if [ ! -f $IP ]; then
      if [ `ping -c 1 $IP | wc -l` -ne 6 ]; then
        echo $IP is dead
      else
        Y=`cat /proc/net/arp | grep "^147.32.240.$Q " | cut -c42-58`
        echo $IP is alive, ethernet node $Y
        echo $IP $Y > $IP
        host -t any $IP | tee /dev/tty >> $IP
      fi
    fi
    Q=`expr $Q + 1`
  done
done


I hope this helps.                 
                                        Petr Vandrovec
                                        vandrove@xxxxxxxxxx
                                        
Reply from Alexey follows:

From: kuznet@xxxxxxxxxxxxx
Message-Id: <200011232008.XAA06575@xxxxxxxxxxxxx>
Subject: Re: 2.4.0-test11 and af_inet.c(164)
To: VANDROVE@xxxxxxxxxx (Petr Vandrovec)
Date:   Thu, 23 Nov 2000 23:08:16 +0300 (MSK)
Cc: netdev@xxxxxxxxxxx
In-Reply-To: <DB22ED31E32@xxxxxxxxxxxxxxxx> from "Petr Vandrovec" at Nov 23, 0 
07:45:43 pm
X-Mailer: ELM [version 2.4 PL24]
MIME-Version: 1.0
X-Orcpt: rfc822;netdev@xxxxxxxxxxx
Sender: owner-netdev@xxxxxxxxxxx
Precedence: bulk

Hello!

> KERNEL: assertion (atomic_read(&sk->wmem_alloc) == 0) failed at 
> af_inet.c(164):inet_sock_destruct
....
> Everything still works and I have no idea how to find whether some 100 bytes
> were leaked somewhere or not... (of course, error is non-repeatable)

Well, it is not plain 100 bytes leaked.
It is rather an absolutely impossible event, which cannot happen
even if all the bits leaked. 8)

OK... Audit is started.

Alexey


<Prev in Thread] Current Thread [Next in Thread>