Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Mar 2000 05:47:32 -0500
From:      Jim Mercer <jim@reptiles.org>
To:        Matthew Dillon <dillon@apollo.backplane.com>
Cc:        hackers@FreeBSD.ORG
Subject:   Re: possible bug in kernel/if_ether.c
Message-ID:  <20000323054731.W983@reptiles.org>
In-Reply-To: <200003230515.VAA96507@apollo.backplane.com>; from dillon@apollo.backplane.com on Wed, Mar 22, 2000 at 09:15:27PM -0800
References:  <20000322225639.T983@reptiles.org> <200003230515.VAA96507@apollo.backplane.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--LpQ9ahxlCli8rRTG
Content-Type: text/plain; charset=us-ascii

On Wed, Mar 22, 2000 at 09:15:27PM -0800, Matthew Dillon wrote:
> :#5  0xc01997c8 in arpintr () at ../../netinet/if_ether.c:447
> 
>     Very, very weird.  Can you disassemble the 'arpintr' function from your
>     kernel binary?
> 
>     gdb -k /kernel	(or kernel.debug if you have it)
>     disassemble arpintr

no problem (although much of this appears well over my head).
thanx for having a look.

>     I can't pinpoint the fault point since my kernel is compiled up
>     differently, but I suspect it's at the line I've indicated below.
> 
>     Unfortunately, it makes no sense whatsoever because %ebx would have to
>     be NULL and that case already checked.  I suspect the actual fault
>     address is somewhere else if you do the dissassembly it should help.

just to clarify, i'm running 4.0-RELEASE, with a cvsup 4.x-stable-supfile
as at approx Mar 21 02:00

i've attached my kernel config file as well.

FreeBSD snuffy.nag.ca 4.0-STABLE FreeBSD 4.0-STABLE #2: Tue Mar 21 03:48:14 EST 2000     toor@snuffy.nag.ca:/usr/src/sys/compile/NAG-ORANGE  i386

also, as at 23:00 last night (currently 05:30) i ifconfig'd the rl0 to 10mbps
and rebooted, and i haven't had a reboot yet.

mind you, it hasn't been rebooting with any regular frequency, nor do the
reboots appear to be related to system load.  (ie, i had some heavy database processing happening and a "make world" at the same time, without a reboot, then
got a reboot later during an idle period).

from kernel.debug:

(kgdb) disassemble arpintr
Dump of assembler code for function arpintr:
0xc019972c <arpintr>:   pushl  %ebp
0xc019972d <arpintr+1>: movl   %esp,%ebp
0xc019972f <arpintr+3>: pushl  %esi
0xc0199730 <arpintr+4>: pushl  %ebx
0xc0199731 <arpintr+5>: cmpl   $0x0,0xc0270084
0xc0199738 <arpintr+12>:        je     0xc019986c <arpintr+320>
0xc019973e <arpintr+18>:        call   0xc0232224 <splimp>
0xc0199743 <arpintr+23>:        movl   %eax,%edx
0xc0199745 <arpintr+25>:        movl   0xc0270084,%ebx
0xc019974b <arpintr+31>:        testl  %ebx,%ebx
0xc019974d <arpintr+33>:        je     0xc0199775 <arpintr+73>
0xc019974f <arpintr+35>:        movl   0x4(%ebx),%eax
0xc0199752 <arpintr+38>:        movl   %eax,0xc0270084
0xc0199757 <arpintr+43>:        testl  %eax,%eax
0xc0199759 <arpintr+45>:        jne    0xc0199768 <arpintr+60>
0xc019975b <arpintr+47>:        movl   $0x0,0xc0270088
0xc0199765 <arpintr+57>:        leal   0x0(%esi),%esi
0xc0199768 <arpintr+60>:        movl   $0x0,0x4(%ebx)
0xc019976f <arpintr+67>:        decl   0xc027008c
0xc0199775 <arpintr+73>:        pushl  %edx
0xc0199776 <arpintr+74>:        call   0xc02320f4 <splx>
0xc019977b <arpintr+79>:        addl   $0x4,%esp
0xc019977e <arpintr+82>:        testl  %ebx,%ebx
0xc0199780 <arpintr+84>:        je     0xc0199788 <arpintr+92>
0xc0199782 <arpintr+86>:        testb  $0x2,0x12(%ebx)
0xc0199786 <arpintr+90>:        jne    0xc0199794 <arpintr+104>
0xc0199788 <arpintr+92>:        pushl  $0xc024bace
0xc019978d <arpintr+97>:        call   0xc0154968 <panic>
0xc0199792 <arpintr+102>:       movl   %esi,%esi
0xc0199794 <arpintr+104>:       cmpl   $0x7,0xc(%ebx)
0xc0199798 <arpintr+108>:       ja     0xc01997c8 <arpintr+156>
0xc019979a <arpintr+110>:       pushl  $0x8
0xc019979c <arpintr+112>:       pushl  %ebx
0xc019979d <arpintr+113>:       call   0xc016e4b8 <m_pullup>
0xc01997a2 <arpintr+118>:       addl   $0x8,%esp
0xc01997a5 <arpintr+121>:       testl  %eax,%eax
0xc01997a7 <arpintr+123>:       sete   %al
0xc01997aa <arpintr+126>:       movzbl %al,%ebx
0xc01997ad <arpintr+129>:       testl  %ebx,%ebx
0xc01997af <arpintr+131>:       je     0xc01997c8 <arpintr+156>
0xc01997b1 <arpintr+133>:       pushl  $0xc024bae0
0xc01997b6 <arpintr+138>:       pushl  $0x3
0xc01997b8 <arpintr+140>:       call   0xc015f524 <log>
0xc01997bd <arpintr+145>:       addl   $0x8,%esp
0xc01997c0 <arpintr+148>:       jmp    0xc0199731 <arpintr+5>
0xc01997c5 <arpintr+153>:       leal   0x0(%esi),%esi
0xc01997c8 <arpintr+156>:       movl   0x8(%ebx),%ecx
0xc01997cb <arpintr+159>:       movzwl (%ecx),%eax
0xc01997ce <arpintr+162>:       xchgb  %ah,%al
0xc01997d0 <arpintr+164>:       cmpw   $0x1,%ax
0xc01997d4 <arpintr+168>:       je     0xc0199804 <arpintr+216>
0xc01997d6 <arpintr+170>:       movzwl (%ecx),%eax
0xc01997d9 <arpintr+173>:       xchgb  %ah,%al
0xc01997db <arpintr+175>:       cmpw   $0x6,%ax
0xc01997df <arpintr+179>:       je     0xc0199804 <arpintr+216>
0xc01997e1 <arpintr+181>:       pushl  $0xc024ba8e
0xc01997e6 <arpintr+186>:       pushl  %ecx
0xc01997e7 <arpintr+187>:       pushl  $0xc024bb20
0xc01997ec <arpintr+192>:       pushl  $0x3
0xc01997ee <arpintr+194>:       call   0xc015f524 <log>
0xc01997f3 <arpintr+199>:       pushl  %ebx
0xc01997f4 <arpintr+200>:       call   0xc016d99c <m_freem>
0xc01997f9 <arpintr+205>:       addl   $0x14,%esp
0xc01997fc <arpintr+208>:       jmp    0xc0199731 <arpintr+5>
0xc0199801 <arpintr+213>:       leal   0x0(%esi),%esi
0xc0199804 <arpintr+216>:       movl   %ebx,%eax
0xc0199806 <arpintr+218>:       xorl   %esi,%esi
0xc0199808 <arpintr+220>:       testl  %ebx,%ebx
0xc019980a <arpintr+222>:       je     0xc0199815 <arpintr+233>
0xc019980c <arpintr+224>:       addl   0xc(%eax),%esi
0xc019980f <arpintr+227>:       movl   (%eax),%eax
0xc0199811 <arpintr+229>:       testl  %eax,%eax
0xc0199813 <arpintr+231>:       jne    0xc019980c <arpintr+224>
0xc0199815 <arpintr+233>:       movzbl 0x4(%ecx),%edx
0xc0199819 <arpintr+237>:       movzbl 0x5(%ecx),%eax
0xc019981d <arpintr+241>:       leal   0x8(,%eax,2),%eax
0xc0199824 <arpintr+248>:       leal   (%eax,%edx,2),%edx
0xc0199827 <arpintr+251>:       cmpl   %edx,%esi
0xc0199829 <arpintr+253>:       jae    0xc0199848 <arpintr+284>
0xc019982b <arpintr+255>:       pushl  $0xc024bb4b
0xc0199830 <arpintr+260>:       pushl  $0x3
0xc0199832 <arpintr+262>:       call   0xc015f524 <log>
0xc0199837 <arpintr+267>:       pushl  %ebx
0xc0199838 <arpintr+268>:       call   0xc016d99c <m_freem>
0xc019983d <arpintr+273>:       addl   $0xc,%esp
0xc0199840 <arpintr+276>:       jmp    0xc0199731 <arpintr+5>
0xc0199845 <arpintr+281>:       leal   0x0(%esi),%esi
0xc0199848 <arpintr+284>:       movzwl 0x2(%ecx),%eax
0xc019984c <arpintr+288>:       xchgb  %ah,%al
0xc019984e <arpintr+290>:       cmpw   $0x800,%ax
0xc0199852 <arpintr+294>:       jne    0xc019985c <arpintr+304>
0xc0199854 <arpintr+296>:       pushl  %ebx
0xc0199855 <arpintr+297>:       call   0xc0199874 <in_arpinput>
0xc019985a <arpintr+302>:       jmp    0xc0199862 <arpintr+310>
0xc019985c <arpintr+304>:       pushl  %ebx
0xc019985d <arpintr+305>:       call   0xc016d99c <m_freem>
0xc0199862 <arpintr+310>:       addl   $0x4,%esp
0xc0199865 <arpintr+313>:       jmp    0xc0199731 <arpintr+5>
0xc019986a <arpintr+318>:       movl   %esi,%esi
0xc019986c <arpintr+320>:       leal   0xfffffff8(%ebp),%esp
0xc019986f <arpintr+323>:       popl   %ebx
0xc0199870 <arpintr+324>:       popl   %esi
0xc0199871 <arpintr+325>:       leave  
0xc0199872 <arpintr+326>:       ret    
End of assembler dump.


-- 
[ Jim Mercer                 jim@reptiles.org              +1 416 506-0654 ]
[          Reptilian Research -- Longer Life through Colder Blood          ]
[  Don't be fooled by cheap Finnish imitations; BSD is the One True Code.  ]

--LpQ9ahxlCli8rRTG
Content-Type: text/plain; charset=us-ascii
Content-Description: kernel config
Content-Disposition: attachment; filename=NAG-ORANGE

#

machine		i386
cpu		I586_CPU
cpu		I686_CPU
ident		"NAG-ORANGE"
maxusers	64

makeoptions	DEBUG=-g		#Build kernel with gdb(1) debug symbols

options 	INET			#InterNETworking
#options 	INET6			#IPv6 communications protocols
options 	FFS			#Berkeley Fast Filesystem
options 	FFS_ROOT		#FFS usable as root device [keep this!]
options 	MFS			#Memory Filesystem
options 	MD_ROOT			#MD is a potential root device
options 	NFS			#Network Filesystem
options 	NFS_ROOT		#NFS usable as root device, NFS required
options 	MSDOSFS			#MSDOS Filesystem
options 	CD9660			#ISO 9660 Filesystem
options 	CD9660_ROOT		#CD-ROM usable as root, CD9660 required
options 	PROCFS			#Process filesystem
options 	COMPAT_43		#Compatible with BSD 4.3 [KEEP THIS!]
options 	SCSI_DELAY=15000	#Delay (in ms) before probing SCSI
options 	UCONSOLE		#Allow users to grab the console
options 	USERCONFIG		#boot -c editor
options 	VISUAL_USERCONFIG	#visual boot -c editor
options 	KTRACE			#ktrace(1) support
options 	SYSVSHM			#SYSV-style shared memory
options 	SYSVMSG			#SYSV-style message queues
options 	SYSVSEM			#SYSV-style semaphores
options 	P1003_1B		#Posix P1003_1B real-time extentions
options 	_KPOSIX_PRIORITY_SCHEDULING
options		ICMP_BANDLIM		#Rate limit bad replies
options 	INCLUDE_CONFIG_FILE     # Include this file in kernel
options 	IPFIREWALL		#firewall
options 	IPFIREWALL_VERBOSE	#print information about
					# dropped packets
options 	IPFIREWALL_FORWARD	#enable transparent proxy support
options 	IPFIREWALL_VERBOSE_LIMIT=100	#limit verbosity
options 	IPFIREWALL_DEFAULT_TO_ACCEPT	#allow everything by default
options 	TCP_DROP_SYNFIN		#drop TCP packets with SYN+FIN
options 	TCP_RESTRICT_RST	#restrict emission of TCP RST
options 	DUMMYNET
options 	MD5

# To make an SMP kernel, the next two are needed
options 	SMP			# Symmetric MultiProcessor Kernel
options 	APIC_IO			# Symmetric (APIC) I/O
# Optionally these may need tweaked, (defaults shown):
#options 	NCPU=2			# number of CPUs
#options 	NBUS=4			# number of busses
#options 	NAPIC=1			# number of IO APICs
#options 	NINTR=24		# number of INTs

device		isa
device		pci

# Floppy drives
device		fdc0	at isa? port IO_FD1 irq 6 drq 2
device		fd0	at fdc0 drive 0

# SCSI Controllers
device		ahc		# AHA2940 and onboard AIC7xxx devices

# SCSI peripherals
device		scbus		# SCSI bus (required)
device		da		# Direct Access (disks)
device		sa		# Sequential Access (tape etc)
device		cd		# CD
device		pass		# Passthrough device (direct SCSI access)

# atkbdc0 controls both the keyboard and the PS/2 mouse
device		atkbdc0	at isa? port IO_KBD
device		atkbd0	at atkbdc? irq 1

device		vga0	at isa?

# splash screen/screen saver
pseudo-device	splash

# syscons is the default console driver, resembling an SCO console
device		sc0	at isa?

# Floating point support - do not disable.
device		npx0	at nexus? port IO_NPX irq 13

# Serial (COM) ports
device		sio0	at isa? port IO_COM1 flags 0x10 irq 4
device		sio1	at isa? port IO_COM2 irq 3

# Parallel port
device		ppc0	at isa? irq 7
device		ppbus		# Parallel port bus (required)
device		lpt		# Printer
device		plip		# TCP/IP over parallel
device		ppi		# Parallel port interface device


# PCI Ethernet NICs that use the common MII bus controller code.
device		miibus		# MII bus support
device		rl		# RealTek 8129/8139

# Pseudo devices - the number indicates how many units to allocated.
pseudo-device	loop		# Network loopback
pseudo-device	ether		# Ethernet support
pseudo-device	pty		# Pseudo-ttys (telnet etc)
pseudo-device	md		# Memory "disks"
pseudo-device	bpf		#Berkeley packet filter


--LpQ9ahxlCli8rRTG--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000323054731.W983>