Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 01 Nov 2002 16:39:12 -0800
From:      Terry Lambert <tlambert2@mindspring.com>
To:        Bill Fenner <fenner@research.att.com>
Cc:        mime@traveller.cz, current@FreeBSD.ORG
Subject:   Re: crash with network load (in tcp syncache ?)
Message-ID:  <3DC31EB0.2B79F42E@mindspring.com>
References:  <200211012246.gA1Mki5n001478@stash.attlabs.att.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Bill Fenner wrote:
> sonewconn() hands sofree() a self-inconsistent socket -- so->so_head is
> set, so so must be on a queue, but sonewconn() hasn't put it on a queue yet.
> Please try this patch.

I think this can still crash (just like my patch); the problem is in
what happens when it fails to allocate memory.  Unless you set one of
the flags, it's still going to panic in the same place, I think, when
you run out of memory.

The code that the SYN-cache uses really needs to be refactored, and
seperated out.

The problem is that the delay in allocation is intentional, to permit
the cache to deal with lighter weight instances, until it decides to
actually create a connection.

There's not a clean way to do this, really, without passing the address
of the socket pointer down, and having lower level code fill it out, I
think.  8-(.

The problem is definitely based on what happens in the allocation or
protocol attach failure cases.

-- Terry

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3DC31EB0.2B79F42E>