2.0.33 (and before) OOPS with heavily multithreaded app

Ryan Smith-Roberts (rsr@lab.net)
Thu, 18 Dec 1997 23:56:31 -0800 (PST)


There is a commercial news server called Cyclone that has been recently
ported to Linux. It runs under glibc and is very heavily multithreaded.

Trying to run it on my system with a full set of 35 feeds causes
multiple kernel OOPSes (killing off a bunch of cyclone threads and
generally taking the whole process down), of the form:

general protection: 0000
CPU: 0
EIP: 0010:[<0013c93b>]
EFLAGS: 00010012
eax: 712e6f63 ebx: 00000246 ecx: 00000000 edx: 712e6f63
esi: 0173e414 edi: 0173e4d4 ebp: 00000000 esp: 0c188e40
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process cycloned (pid: 371, process nr: 26, stackpage=0c188000)
Stack: 0173e414 0c188ee4 0173e414 0c188f64 0014dea1 0173e414 00000000 00000000
0c188e78 0173e414 0c188ed8 00000000 00000000 00000000 0c188ed4 001521a2
0173e414 0c188f64 00000400 00000000 00000000 0c188ed8 00000400 0c7a2d00
Call Trace: [<0014dea1>] [<001521a2>] [<0013af03>] [<0015179d>]
[<0013be5b>] [<0013c15b>] [<0013c5d6>] [<0017def8>] [<0013b623>]
[<001105fd>]
Code: 8b 10 ff 8e c8 00 00 00 89 7a 04 89 96 c0 00 00 00 c7 00 00

Code:
Code: 8b 10 movl (%eax),%edx
Code: ff 8e c8 00 00 decl 0xc8(%esi)
Code: 00
Code: 89 7a 04 movl %edi,0x4(%edx)
Code: 89 96 c0 00 00 movl %edx,0xc0(%esi)
Code: 00
Code: c7 00 00 00 90 movl $0x90900000,(%eax)
Code: 90
Code: 90 nop
>>EIP: 13c93b <skb_recv_datagram+11f/178>
Trace: 14dea1 <udp_recvmsg+35/b0>
Trace: 1521a2 <inet_recvmsg+72/88>
Trace: 13af03 <sys_recvfrom+12f/174>
Trace: 15179d <def_callback3+35/3c>
Trace: 13be5b <sock_wfree+23/2c>
Trace: 13c15b <kfree_skb+b7/f4>
Trace: 13c5d6 <dev_kfree_skb+3e/4c>
Trace: 17def8 <de4x5_tx+118/1b4>
Trace: 13b623 <sys_socketcall+23b/2dc>
Trace: 1105fd <system_call+55/7c>

Configuration (minus the nots):

CONFIG_EXPERIMENTAL=y
CONFIG_NET=y
CONFIG_PCI=y
CONFIG_PCI_OPTIMIZE=y
CONFIG_SYSVIPC=y
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
CONFIG_M586=y
CONFIG_BLK_DEV_FD=y
CONFIG_BLK_DEV_MD=y
CONFIG_MD_STRIPED=y
CONFIG_INET=y
CONFIG_IP_NOSR=y
CONFIG_SKB_LARGE=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_BUSLOGIC=y
CONFIG_SCSI_OMIT_FLASHPOINT=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_NET_EISA=y
CONFIG_DE4X5=y
CONFIG_EXT2_FS=y
CONFIG_PROC_FS=y
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y

This machine is on an Asus P55T2P4 motherboard with 256MB of RAM, a
DE500-XA ethernet card (100bT HDX mode) and dual BusLogic 948 controllers.

This machine has run stably for many months under sustained 12Mb/s+
aggregate traffic load.

-- 
\/\ | Ryan Smith-Roberts <rsr@lab.net> | finger 4 PGP
/\/ | "Consistency requires you to be as ignorant
\/\ | today as you were a year ago." -Bernard Berenson
  51BD 5149 992E F3AC BB82  6BC9 6253 74BA 71E3 078E