Kernel bug... definitely up to 2.0.34

David Luyer (luyer@ucs.uwa.edu.au)
Sat, 13 Jun 1998 11:50:24 +0800


I emailed a couple of linux-kernel people directly about this a while ago
but nobody has got back to me with a solution. This bug is verified on
a 200MHz PPro w/512M RAM and a 3c905 and a Toshiba Libretto P133MMX w/32M
of RAM and a Xircom CEM33, ie, two completely unrelated computers and
ethernet cards. It exists in stock 2.0.34 and the Debian Linux kernel
2.0.33, as well as earlier kernels. I haven't tested 2.1.x.

The bug shows up when trying to do network scans of large networks.

Here is a script to replicate the bug, it requires the 'strobe' program
found in Debian's "netdiag" package (the program is known as "Proff's strobe").
The first of these two scripts prints out various kfree errors, the second
doesn't.

Note that to run this script without running out of resources you need
to set in /proc/sys/kernel file-max = 8192 and inode-max = 16384, or
somewhere around there. Just watch them in another window while it's
running to make sure they don't run out (I've never run a system where
I haven't had to tune up these values anyway).

Also, 10.3 is an unroutable network from where I run this, but it was working
with the university LAN as the network just I didn't want to fill up
everyone's firewall logs each time I tested a kernel bug! :)

I'd like to hear from...
1) other people who have done things which show this bug up
2) someone who can suggest how I could debug it
3) anyone who has a suggested patch
etc.

[it would be nice to have someone other than me able to replicate
the bug, too:)]

TIA,
David.

#!/usr/bin/perl
# NOTE: Make sure you have sufficiently tuned /proc/sys/kernel to run this!
# This DOES produce kfree errors
$prefix = "10.3";
$SIG{'CHLD'} = 'IGNORE';
for($i=0;$i<=255;$i++) {
if(!fork()) {
for($j=1;$j<255;$j++) {
push @hosts, $prefix.".$i.$j"; # note this line is where the change is
}
exec ("/usr/bin/strobe", "-q", "-d", "-m", "-p", "25", "-n", "252", @hosts);
}
sleep 1;
}

#!/usr/bin/perl
# NOTE: Make sure you have sufficiently tuned /proc/sys/kernel to run this!
# This DOES NOT produce kfree errors
$prefix = "10.3";
$SIG{'CHLD'} = 'IGNORE';
for($i=0;$i<=255;$i++) {
if(!fork()) {
for($j=1;$j<255;$j++) {
push @hosts, $prefix.".5.$j"; # note this line is where the change is
}
exec ("/usr/bin/strobe", "-q", "-d", "-m", "-p", "25", "-n", "252", @hosts);
}
sleep 1;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu