Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Mar 2007 19:58:43 +0300
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        Andrey Chernov <ache@freebsd.org>, current@freebsd.org
Subject:   Re: Latest -current complete lockup (tcp changes?)
Message-ID:  <20070325165843.GA1558@kobe.laptop>
In-Reply-To: <20070324124732.GA767@nagual.pp.ru>
References:  <20070324124732.GA767@nagual.pp.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2007-03-24 15:47, Andrey Chernov <ache@freebsd.org> wrote:
> Very recent -current cause complete lockup in case and after small
> amount of network activity happens. No panic, no ddb console - nothing
> just lockup. Previously working kernel is from Mar 22. I suspect
> recent round of TCP changes.

I'm seeing kernel panics with a kernel updates to:

    changeset:   129918:f239d4a0fa1e
    tag:         tip
    user:        imp
    date:        Fri Mar 23 23:47:59 2007 +0000
    summary:     Default to booting off the SD card.  It is more useful, [...]

The panic happens after a small amount of network activity, inside the
TCP SACK code:

---------------------------------------------------------------------------
Physical memory: 495 MB
Dumping 54 MB: 39 23 7

#0  doadump () at pcpu.h:172
172     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) bt
#0  doadump () at pcpu.h:172
#1  0xc048043f in db_fncall (dummy1=-747300744, dummy2=0, dummy3=-1065545344, dummy4=0xd3751854 "@\037\206À") at /home/build/src/sys/ddb/db_command.c:486
#2  0xc048024b in db_command (last_cmdp=0xc07dec24, cmd_table=0x0) at /home/build/src/sys/ddb/db_command.c:401
#3  0xc0480306 in db_command_loop () at /home/build/src/sys/ddb/db_command.c:453
#4  0xc0481f51 in db_trap (type=3, code=0) at /home/build/src/sys/ddb/db_main.c:222
#5  0xc058a574 in kdb_trap (type=3, code=0, tf=0xd37519ec) at /home/build/src/sys/kern/subr_kdb.c:502
#6  0xc07164c9 in trap (frame=0xd37519ec) at /home/build/src/sys/i386/i386/trap.c:621
#7  0xc070041b in calltrap () at /home/build/src/sys/i386/i386/exception.s:139
#8  0xc058a29b in kdb_enter (msg=0x12 <Address 0x12 out of bounds>) at cpufunc.h:60
#9  0xc056b628 in panic (fmt=0xc0776652 "%s: SACK invalid") at /home/build/src/sys/kern/kern_shutdown.c:547
#10 0xc0627513 in tcp_sack_doack (tp=0xc300f740, to=0xd3751ac8, th_ack=3759729646) at /home/build/src/sys/netinet/tcp_sack.c:374
#11 0xc0623f88 in tcp_do_segment (m=0xc310ca00, th=0xc3140834, so=0xc3020570, tp=0xc300f740, drop_hdrlen=52, tlen=138) at /home/build/src/sys/netinet/tcp_input.c:1900
#12 0xc0622f01 in tcp_input (m=0xc310ca00, off0=20) at /home/build/src/sys/netinet/tcp_input.c:1004
#13 0xc061c3a5 in ip_input (m=0xc310ca00) at /home/build/src/sys/netinet/ip_input.c:662
#14 0xc05ee3c4 in netisr_dispatch (num=2, m=0x0) at /home/build/src/sys/net/netisr.c:278
#15 0xc05e7f85 in ether_demux (ifp=0xc2a55800, m=0xc310ca00) at /home/build/src/sys/net/if_ethersubr.c:829
#16 0xc05e7dc5 in ether_input (ifp=0xc2a55800, m=0xc310ca00) at /home/build/src/sys/net/if_ethersubr.c:687
#17 0xc04bdb18 in fxp_intr_body (sc=0xc2a74000, ifp=0xc2a55800, statack=0 '\0', count=-1) at /home/build/src/sys/dev/fxp/if_fxp.c:1705
#18 0xc04bd871 in fxp_intr (xsc=0xc2a74000) at /home/build/src/sys/dev/fxp/if_fxp.c:1526
#19 0xc0556d85 in ithread_execute_handlers (p=0xc2a4f480, ie=0xc2976800) at /home/build/src/sys/kern/kern_intr.c:682
#20 0xc0556eab in ithread_loop (arg=0xc2a7bad0) at /home/build/src/sys/kern/kern_intr.c:766
#21 0xc0555e84 in fork_exit (callout=0xc0556e44 <ithread_loop>, arg=0xc2a7bad0, frame=0xd3751d38) at /home/build/src/sys/kern/kern_fork.c:814
#22 0xc0700490 in fork_trampoline () at /home/build/src/sys/i386/i386/exception.s:205
(kgdb) up 10
#10 0xc0627513 in tcp_sack_doack (tp=0xc300f740, to=0xd3751ac8, th_ack=3759729646) at /home/build/src/sys/netinet/tcp_sack.c:374
374             KASSERT(to->to_flags & TOF_SACK, ("%s: SACK invalid", __func__));
(kgdb) list
369             struct sackhole *cur, *temp;
370             struct sackblk sack, sack_blocks[TCP_MAX_SACK + 1], *sblkp;
371             int i, j, num_sack_blks;
372
373             INP_LOCK_ASSERT(tp->t_inpcb);
374             KASSERT(to->to_flags & TOF_SACK, ("%s: SACK invalid", __func__));
375
376             num_sack_blks = 0;
377             /*
378              * If SND.UNA will be advanced by SEG.ACK, and if SACK holes exist,
(kgdb)
---------------------------------------------------------------------------

Disabling SACK lets me use my laptop again:

    net.inet.tcp.sack.enable=0

without any panics.




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