Date: Tue, 29 Aug 2000 17:22:35 -0400 (EDT) From: rwatson@freebsd.org To: FreeBSD-gnats-submit@freebsd.org Subject: kern/20927: looutput: mbuf allocation failed Message-ID: <200008292122.RAA02996@fledge.watson.org>
next in thread | raw e-mail | index | archive | help
>Number: 20927
>Category: kern
>Synopsis: dmesg output: looutput: mbuf allocation failed
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Aug 29 14:30:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Robert Watson
>Release: FreeBSD 4.1-STABLE i386
>Organization:
>Environment:
fledge:/data/fbsd-stable/src/sys/net> uname -a
FreeBSD fledge.watson.org 4.1-STABLE FreeBSD 4.1-STABLE #2: Fri Jul 28 01:08:28 EDT 2000 root@fledge.watson.org:/data/fbsd-stable/src/sys/compile/FLEDGE i386
>Description:
Found a weird message in my dmesg. Exploration below; don't know what
prompted it, but the exploration suggests some possibilities.
% dmesg | grep looutput
looutput: mbuf allocation failed
looutput: mbuf allocation failed
looutput: mbuf allocation failed
looutput: mbuf allocation failed
looutput: mbuf allocation failed
looutput: mbuf allocation failed
from src/sys/net/if_loop.c:
if (0) {
contiguousfail:
printf("looutput: mbuf allocation failed\n");
}
So apparently contiguousfail is being jumped to. One of the following
conditions:
/*
* KAME requires that the packet to be contiguous on the
* mbuf. We need to make that sure.
* this kind of code should be avoided.
* XXX: fails to join if interface MTU > MCLBYTES. jumbogram?
*/
if (m && m->m_next != NULL && m->m_pkthdr.len < MCLBYTES) {
struct mbuf *n;
MGETHDR(n, M_DONTWAIT, MT_HEADER);
if (!n)
goto contiguousfail;
MCLGET(n, M_DONTWAIT);
if (! (n->m_flags & M_EXT)) {
m_freem(n);
goto contiguousfail;
}
m_copydata(m, 0, m->m_pkthdr.len, mtod(n, caddr_t));
n->m_pkthdr = m->m_pkthdr;
n->m_len = m->m_pkthdr.len;
m_freem(m);
m = n;
}
From src/sys/i386/include/param.h:
#define MCLSHIFT 11 /* convert bytes to m_buf clusters */
#endif /* MCLSHIFT */
#define MCLBYTES (1 << MCLSHIFT) /* size of an m_buf cluster */
For reference, MTU on lo0 is 16k, and MCLBYTES is 2048 on i386. I'm guessing
this means that lo0 has problems with packets over 2k in size. I could be
wrong.
>How-To-Repeat:
Unfortunately, have no idea. Don't know what was going on on the system
at the time, and it's a multi-user machine with an average of 10 - 20
people logged in at any moment.
>Fix:
Not available.
>Release-Note:
>Audit-Trail:
>Unformatted:
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?200008292122.RAA02996>
