On Sun, Mar 25, 2001 at 10:51:52PM -0500, [EMAIL PROTECTED] wrote:
> I was almost certain the following kernel oops occurred during packet
> capture.
> The packet received was an arp request. Kernel syslog indicated the kernel
> received the arp request. My application captures arp packet as well.
> The calls leading to the oops :
> pcap_dispatch ...
> sys_recvfrom ...
> kfree_skbmem ...free_block.
>
> The call stack of the oops is below. The oops does not happen all the time.
> However, there is a steady memory leak - Tops reported memory used by my
> pcap application is stable at 0.3%, but system memory usage keeps going up
> (reaching 250M used, 4M free before staying there).
>
> I am running Linux 2.4.0 kernel and libpcap-0.6.2. Does this look like a
> libpcap problem or skbmem problem? Does anyone recognize the problem?
>
> >>EIP; c012c504 <free_block+84/d8> <=====
> Trace; c011b77a <do_softirq+5a/88>
> Trace; c012c82a <kfree+72/98>
> Trace; c01d00fd <kfree_skbmem+25/80>
> Trace; c01d024b <__kfree_skb+f3/f8>
> Trace; c01d0d1d <skb_free_datagram+1d/24>
> Trace; c0203a61 <packet_recvmsg+139/148>
> Trace; c01cd441 <sock_recvmsg+41/b0>
> Trace; c0203928 <packet_recvmsg+0/148>
> Trace; c01ce2fd <sys_recvfrom+ad/108>
It is almost certainly a kernel problem of some sort; I see little, if
any, reason to believe it couldn't be reproduced with, say, a program
that does the same sort of straightforward PF_PACKET-socket reading that
libpcap does. Perhaps there's some specific things that libpcap does
that cause a bad code path in the kernel to be followed, but the fact
that this can happen indicates that there *is* a bad code path in the
kernel....
Without a kernel crash dump and stack trace, I can't say much about
*why* it's happening - "free_block()" does
spin_lock(&cachep->spinlock);
__free_block(cachep, objpp, len);
spin_unlock(&cachep->spinlock);
and I don't know whether the problem is that "&cachep->spinlock" is
bogus or if the inline "__free_block()" routine blew up because the list
of objects passed to it to free is bogus.
-
This is the TCPDUMP workers list. It is archived at
http://www.tcpdump.org/lists/workers/index.html
To unsubscribe use mailto:[EMAIL PROTECTED]?body=unsubscribe