Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.

Bug 78955

Summary: ifconfig crashes after too many traffic
Product: [Retired] Red Hat Linux Reporter: Oliver Falk <oliver>
Component: net-toolsAssignee: Phil Knirsch <pknirsch>
Status: CLOSED RAWHIDE QA Contact:
Severity: medium Docs Contact:
Priority: high    
Version: 8.0CC: oliver, rvokal
Target Milestone: ---   
Target Release: ---   
Hardware: alpha   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2003-08-19 12:44:19 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Description Oliver Falk 2002-12-03 22:08:13 UTC
From Bugzilla Helper:
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Description of problem:
If too many bytes have been transfered, there seems to be a buffer overflow in 
ifconfig (but only in the RPM-version!!!)

Version-Release number of selected component (if applicable): 1.60--7


How reproducible:
Always

Steps to Reproduce:
1. Produce more than 100 GB Traffic (I expect...)
2. bash# ifconfig -a

Actual Results:  [root@fw root]# ifconfig -a
Segmentation fault

Expected Results:  [root@fw net-tools-1.60]# ./ifconfig -a
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:XXX.XXX.XXX.XXX  Bcast:XXX.XXX.XXX.XXX  
Mask:XXX.XXX.XXX.XXX
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:239419827 errors:123 dropped:0 overruns:0 frame:0
          TX packets:226957786 errors:2444516 dropped:0 overruns:3 
carrier:2444557
          collisions:1780833 txqueuelen:100
          RX bytes:132598045310 (126455.3 Mb)  TX bytes:107059649422 (102100.0 
Mb)
          Interrupt:29 Base address:0x1000

eth1      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:XXX.XXX.XXX.XXX  Bcast:XXX.XXX.XXX.XXX  
Mask:XXX.XXX.XXX.XXX
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:224415069 errors:118 dropped:0 overruns:0 frame:0
          TX packets:229028834 errors:149 dropped:0 overruns:2 carrier:306
          collisions:0 txqueuelen:100
          RX bytes:108550382191 (103521.7 Mb)  TX bytes:129922769167 (123904.0 
Mb)
          Interrupt:30 Base address:0x2000

Additional info:

I used net-tools 1.60-7 from the RedHat Sources (Psyche) and recompiled it on 
our Alpha-Server wich is used as firewall/gateway. ifconfig normally worked 
perfect, but not with this lot of traffic... BUT: If I take a fresh tarball of 
net-tools and recompile it, I do not get the segfault. See example 
in "Expected Results".
So there must be something wrong with the rpm; I haven't found it yet. :o(

Here is also an output of /proc/net/dev
[root@fw net-tools-1.60]# cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    
packets errs drop fifo colls carrier compressed
    lo: 9711371   49084    0    0    0     0          0         0  9711371   
49084    0    0    0     0       0          0
  eth0:132605720519 239440733  123    0    0     0          0         0 
107080310826 226980848 2444668    0    3 1781040 2444709          0
  eth1:108570963314 224437257  118    0    0     0          0         0 
129930219412 229048308  149    0    2     0     306          0

Comment 1 Oliver Falk 2003-01-13 11:50:27 UTC
Here are to diff's I just made. After using the new files (config.{h,make}) it 
works for me.

diff net-tools-1.60-config.h net-tools-1.60-config.h.Oliver
31c31
< #define HAVE_AFINET6 1
---
> #define HAVE_AFINET6 0
36c36
< #define HAVE_AFROSE 1
---
> #define HAVE_AFROSE 0
38c38
< #define HAVE_AFECONET 1
---
> #define HAVE_AFECONET 0
40c40
< #define HAVE_AFASH 1
---
> #define HAVE_AFASH 0
55c55
< #define HAVE_HWROSE 1
---
> #define HAVE_HWROSE 0
59,63c59,63
< #define HAVE_HWSIT 1
< #define HAVE_HWFDDI 1
< #define HAVE_HWHIPPI 1
< #define HAVE_HWASH 1
< #define HAVE_HWHDLCLAPB 1
---
> #define HAVE_HWSIT 0
> #define HAVE_HWFDDI 0
> #define HAVE_HWHIPPI 0
> #define HAVE_HWASH 0
> #define HAVE_HWHDLCLAPB 0
65c65
< #define HAVE_HWEC 1
---
> #define HAVE_HWEC 0

diff net-tools-1.60-config.make net-tools-1.60-config.make.Oliver
4c4
< HAVE_AFINET6=1
---
> # HAVE_AFINET6=0
9c9
< HAVE_AFROSE=1
---
> # HAVE_AFROSE=0
11c11
< HAVE_AFECONET=1
---
> # HAVE_AFECONET=0
13c13
< HAVE_AFASH=1
---
> # HAVE_AFASH=0
22c22
< HAVE_HWROSE=1
---
> # HAVE_HWROSE=0
26,30c26,30
< HAVE_HWSIT=1
< HAVE_HWFDDI=1
< HAVE_HWHIPPI=1
< HAVE_HWASH=1
< HAVE_HWHDLCLAPB=1
---
> # HAVE_HWSIT=0
> # HAVE_HWFDDI=0
> # HAVE_HWHIPPI=0
> # HAVE_HWASH=0
> # HAVE_HWHDLCLAPB=0
32c32
< HAVE_HWEC=1
---
> # HAVE_HWEC=0

Any comments from you, "pknirsch"?

Comment 2 Oliver Falk 2003-01-13 11:57:45 UTC
I have another machine (well another Alpha again) where the same problem 
occured.
The machines ifconfig -a Output after installing my "new" net-tools package:
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:XXX.XXX.XXX.XXX  Bcast:XXX.XXX.XXX.XXX Mask:XXX.XXX.XXX.XXX
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:72358149 errors:28 dropped:0 overruns:0 frame:0
          TX packets:36171170 errors:9 dropped:0 overruns:2 carrier:16
          collisions:0 txqueuelen:100
          RX bytes:102247215433 (97510.5 Mb)  TX bytes:2569220176 (2450.1 Mb)
          Interrupt:29 Base address:0x8000

So it seams, that the problem occurs early than 100 GB...

Comment 3 Phil Knirsch 2003-02-11 13:48:56 UTC
So basically by disabeling tons of stuff it works for you. Unfortunately we want
e.g. IPv6 support etc, so i'll have to dig a little into what really needs to be
disabled and what really makes it crash.

If you could reproduce the bug with a gdb output and attach that here that would
problably help a lot to identify where it crashes and why. Just disabling all
those options is not an option (no pun intended :-).

Thanks,

Read ya, Phil

Comment 4 Oliver Falk 2003-02-19 10:33:15 UTC
I'm not a gdb-guru :-)

(gdb) exec-file ./ifconfig -a
(gdb) run
Starting program: /usr/src/redhat/BUILD/net-tools-1.60/ifconfig

Program received signal SIGILL, Illegal instruction.
warning: Hit beginning of text section without finding
warning: enclosing function for address 0x11fffe244
This warning occurs if you are debugging a function without any symbols
(for example, in a stripped executable).  In that case, you may wish to
increase the size of the search with the `set heuristic-fence-post' command.

Otherwise, you told GDB there was a function where there isn't one, or
(more likely) you have encountered a bug in GDB.
0x11fffe244 in ?? ()

I hope it helps a bit...

Phil, if you need more information, please tell me what steps I have to do... 
And I'll send you the results.

Comment 5 Oliver Falk 2003-07-25 15:30:07 UTC
Hi Phil!

Now it's over... Not even my recompiled ifconfig version works... 
But /proc/net/dev shows me now a lot more traffic!

[root@fw root]# cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    
packets errs drop fifo colls carrier compressed
    lo:20954110  104348    0    0    0     0          0         0 20954110  
104348    0    0    0     0       0          0
  eth0:1007641778197 1662925358  123    0    0     0          0         0 
889609213610 1605652949 20694566    0    4 13864685 20694606          0
  eth1:859146373244 1564344858  126    0    0     8          0         0 
963838248065 1557213761  153    0    6     0     306          0

ifconfig has been compiled with DEBUG... gdb shows this:
(gdb) run
Starting program: /root/net-tools-1.60/ifconfig
Reading symbols from /lib/libc.so.6.1...done.
Reading symbols from /lib/ld-linux.so.2...done.
Reading in symbols for dl-debug.c...done.
Reading in symbols for rtld.c...done.
Reading in symbols for dl-init.c...done.

Program received signal SIGSEGV, Segmentation fault.
warning: Hit heuristic-fence-post without finding
warning: enclosing function for address 0x120003840
This warning occurs if you are debugging a function without any symbols
(for example, in a stripped executable).  In that case, you may wish to
increase the size of the search with the `set heuristic-fence-post' command.

Otherwise, you told GDB there was a function where there isn't one, or
(more likely) you have encountered a bug in GDB.
0x120003840 in ?? ()

Comment 6 Oliver Falk 2003-07-25 16:25:00 UTC
It seems I found a solution... I took out "-O2" from Makefile and now it 
works! You can find a SRPM here:

http://filelister.linux-kernel.at/downloads/packages/SRPMS/net-tools-1.60-
9.src.rpm

For me it's done...

Comment 7 Oliver Falk 2003-07-25 16:26:46 UTC
OK, the URL was too long, here is a short version:
http://t.linux-kernel.at/s.pl?1b.

Comment 8 Phil Knirsch 2003-08-19 12:44:19 UTC
OK, i'm removing the -O2 for alpha now, too.

Thanks for the debugging! :-)

Read ya, Phil

Comment 9 Oliver Falk 2004-06-08 14:16:56 UTC
Please use -O2 for alpha. I had problems with no -0 as well.

Comment 10 Oliver Falk 2004-06-08 14:17:25 UTC
Arg. -O0 I meant.....