On Monday, November 28, 2011 5:37:27 pm Mike Andrews wrote: > *Sometimes* when booting 9.0-RC2 on *some* of my machines, I'll get one of > the following two panics during multiuser startup, usually while running > the /usr/local/etc/rc.d scripts. (The instruction pointer is always > exactly one of these two, and they look fairly related.) If after two or > three reboots it manages to not panic, the system will run perfectly > stable. > > For some probably-unrelated reason, the dump never finishes in either case. > > First panic (note em0 warning before it): > ----- > em0: discard frame w/o packet header
This is odd. I see one bug that could possibly trigger this, but not on x86: Index: if_em.c =================================================================== --- if_em.c (revision 228074) +++ if_em.c (working copy) @@ -4305,8 +4305,10 @@ em_rxeof(struct rx_ring *rxr, int count, int *done #ifndef __NO_STRICT_ALIGNMENT if (adapter->max_frame_size > (MCLBYTES - ETHER_ALIGN) && - em_fixup_rx(rxr) != 0) - goto skip; + em_fixup_rx(rxr) != 0) { + sendmp = NULL; + goto next_desc; + } #endif if (status & E1000_RXD_STAT_VP) { sendmp->m_pkthdr.ether_vtag = @@ -4318,9 +4320,6 @@ em_rxeof(struct rx_ring *rxr, int count, int *done sendmp->m_pkthdr.flowid = rxr->msix; sendmp->m_flags |= M_FLOWID; #endif -#ifndef __NO_STRICT_ALIGNMENT -skip: -#endif rxr->fmp = rxr->lmp = NULL; } next_desc: @@ -4426,6 +4425,7 @@ em_fixup_rx(struct rx_ring *rxr) adapter->dropped_pkts++; m_freem(rxr->fmp); rxr->fmp = NULL; + rxr->lmp = NULL; error = ENOMEM; } } -- John Baldwin _______________________________________________ freebsd-stable@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"