Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Feb 2001 08:56:45 +0200
From:      Valentin Nechayev <netch@iv.nn.kiev.ua>
To:        freebsd-bugs@freebsd.org
Subject:   panic on dummynet code
Message-ID:  <20010216085645.A381@iv.nn.kiev.ua>

next in thread | raw e-mail | index | archive | help
System is 5.0-CURRENT-20010211.

The panic was occured ~2 seconds after commands:
ipfw pipe 1 config bw 300
ipfw add 1000 pipe 1 tcp from any to 193.193.193.107 80

and while wget downloaded a file from http server at 193.193.193.107.

Panic description from console: fault 12: page fault in kernel mode:
supervisor read, page not present; EIP=0xc01e42aa, ESP=0xc7bebedc
Command: transmit_event+0x7a: movl 0x14(%ebx),%eax
EBX is 0x1006

This command is from DN_KEY_LEQ() macro in transmit_event(), file
netinet/ip_dummynet.c, line is marked below with '>':

==={{{
static void
transmit_event(struct dn_pipe *pipe)
{
    struct dn_pkt *pkt ;

>     while ( (pkt = pipe->head) && DN_KEY_LEQ(pkt->output_time, curr_time) ) {
        /*
         * first unlink, then call procedures, since ip_input() can invoke
         * ip_output() and viceversa, thus causing nested calls
         */
        pipe->head = DN_NEXT(pkt) ;
===}}}

pipe equals to 0xc0b79b00, but pipe->head (placed at faulty command in %ebx)
is 0x1006, i.e. outside of kernel address space.

Stack is (excluding debugger and panic routines):

(kgdb) bt
[...]
#10 0xc027ace7 in trap ()
#11 0xc01e42aa in transmit_event ()
#12 0xc01e485e in ready_event_wfq ()
#13 0xc01e48f7 in dummynet ()
#14 0xc01891a6 in softclock ()
#15 0xc0176f6b in ithread_loop ()
#16 0xc0176381 in fork_exit ()

Kernel config is

==={{{
machine		i386
cpu		I486_CPU
cpu		I586_CPU
cpu		I686_CPU
ident		nn12
maxusers	32
hints		"GENERIC.hints"		#Default places to look for devices.
options 	INET			#InterNETworking
options 	IPFIREWALL
options 	IPFIREWALL_VERBOSE
options 	IPFIREWALL_VERBOSE_LIMIT=100	#limit verbosity
options 	IPFIREWALL_DEFAULT_TO_ACCEPT	#allow everything by default
options 	IPDIVERT		#divert sockets
options 	TCP_DROP_SYNFIN		#drop TCP packets with SYN+FIN
options 	TCP_RESTRICT_RST	#restrict emission of TCP RST
options 	DUMMYNET
options 	FFS			#Berkeley Fast Filesystem
# options 	FFS_ROOT		#FFS usable as root device [keep this!]
options		SOFTUPDATES
options 	MFS			#Memory Filesystem
options 	NFS			#Network Filesystem
options 	MSDOSFS			#MSDOS Filesystem
options 	CD9660			#ISO 9660 Filesystem
options 	PROCFS			#Process filesystem
options 	EXT2FS
options 	COMPAT_43		#Compatible with BSD 4.3 [KEEP THIS!]
options 	SCSI_DELAY=5000
options		HZ=230
options 	MSGBUF_SIZE=81920
options 	DDB
options 	USERCONFIG		#boot -c editor
options 	VISUAL_USERCONFIG	#visual boot -c editor
options		INCLUDE_CONFIG_FILE
options 	KTRACE			#ktrace(1) support
options 	SYSVSHM			#SYSV-style shared memory
options 	SYSVMSG			#SYSV-style message queues
options 	SYSVSEM			#SYSV-style semaphores
options 	VFS_AIO
options 	P1003_1B		#Posix P1003_1B real-time extensions
options 	_KPOSIX_PRIORITY_SCHEDULING
options 	_KPOSIX_VERSION=199309L
options 	KBD_INSTALL_CDEV	# install a CDEV entry in /dev
device		random
device		isa
device		eisa
device		pci
#options 	COMPAT_OLDISA		# compatability shims for lnc, fe, le
#options 	COMPAT_OLDPCI		# compatability shims for lnc, vx
# Floppy drives
device		fdc
# ATA and ATAPI devices
device		ata
device		atadisk			# ATA disk drives
device		atapicd			# ATAPI CDROM drives
options 	ATA_STATIC_ID		#Static device numbering
#options 	ATA_ENABLE_ATAPI_DMA	#Enable DMA on ATAPI devices
# atkbdc0 controls both the keyboard and the PS/2 mouse
device		atkbdc	1
device		atkbd
device		psm
device		vga
options 	VESA
# splash screen/screen saver
device		splash
# syscons is the default console driver, resembling an SCO console
device		sc	1
options 	SC_HISTORY_SIZE=200	# number of history buffer lines
options 	SC_MOUSE_CHAR=0x3	# char code for text mode mouse cursor
# Floating point support - do not disable.
device		npx
# Power management support (see LINT for more options)
device		apm
# Serial (COM) ports
device		sio
# Parallel port
device		ppc
device		ppbus		# Parallel port bus (required)
device		lpt		# Printer
device		plip		# TCP/IP over parallel
device		ppi		# Parallel port interface device
#device		vpo		# Requires scbus and da
# Pseudo devices - the number indicates how many units to allocated.
device		loop		# Network loopback
device		ether		# Ethernet support
device		sl		# Kernel SLIP
device		ppp	1	# Kernel PPP
device		tun		# Packet tunnel.
device		pty	32	# Pseudo-ttys (telnet etc)
device		md		# Memory "disks"
device		speaker
device		bpf	2	# Berkeley packet filter
device		vn	4
device		snp
device		pcm
device		sbc
device		pca
===}}}

Kernel core is being kept yet, please feel free to ask additional info.


/netch


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




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