Re: Odd happenings - assertion failed at tcp.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello all,

   First, some background on the box producing these errors:

	o VALinux machine, using Intel L440GX+ motherboard
	o 1 gigabyte of RAM
	o 1 IDE hard drive
	o 2 SCSI hard drives
	o Dual P-III 800 MHz CPU's
	o Running kernel 2.4.20

   I run 2.4.20 on almost all of my machines, but this is the first time I 
have seen the error messages in question... They were in dmesg. The 
machine has been in production for about 2 days now.

   Without further adeiu, here's the errors: 

-----[ Begin snip ]-----
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
KERNEL: assertion (newsk->state != TCP_SYN_RECV) failed at tcp.c(2229)
KERNEL: assertion 
((1<<sk2->state)&(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_CLOSE)) failed at 
af_inet.c(689)
-----[ End Snip ]-----

I've done some google searches for these errors, and found a handful of 
other people reporting them (including one that said that they were 
crashing his machine). I however didnt find very many suggestions. There 
was a kernel patch submitted by someone, but I am ort of reluctant to 
patch the kernel, since this is the first and only machine running 2.4.20 
that is producing these errors...

Is there some root cause of these? Is there something I can do to fix 
them? Are they dangerous to the machine stability? Should I just apply the 
patch I saw and let it go at that?

Here's the patch I found:

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#           ChangeSet1.933   -> 1.934 
#net/ipv4/tcp_minisocks.c1.12    -> 1.13  
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/01/30davem@nuts.ninka.net1.934
# [TCP]: In tcp_check_req, handle ACKless packets properly.
# --------------------------------------------
#
diff -Nru a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
--- a/net/ipv4/tcp_minisocks.cThu Jan 30 23:08:40 2003
+++ b/net/ipv4/tcp_minisocks.cThu Jan 30 23:08:40 2003
@@ -938,6 +938,12 @@
 if (flg & (TCP_FLAG_RST|TCP_FLAG_SYN))
 goto embryonic_reset;

+/* ACK sequence verified above, just make sure ACK is
+ * set.  If ACK not set, just silently drop the packet.
+ */
+if (!(flg & TCP_FLAG_ACK))
+return NULL;
+
 /* If TCP_DEFER_ACCEPT is set, drop bare ACK. */
 if (tp->defer_accept && TCP_SKB_CB(skb)->end_seq == req->rcv_isn+1) {
 req->acked = 1;



It looks minimally invasive... But I have to wonder why it's not included 
in the kernel already if its the best solution...

Any words of wisdom would be appreciated...

This machine is our production pop/smtp server, and also does RADIUS and 
DNS. So needless to say, I am concerned about stability.

Thanks in advance,
Brad


-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux