Panic in 6.2-PRERELEASE with bge on amd64
Sven Willenberger
sven at dmv.com
Wed Jan 10 20:39:06 UTC 2007
Bruce Evans presumably uttered the following on 01/09/07 21:42:
> On Tue, 9 Jan 2007, John Baldwin wrote:
>
>> On Tuesday 09 January 2007 09:37, Sven Willenberger wrote:
>>> On Tue, 2007-01-09 at 12:50 +1100, Bruce Evans wrote:
>>>> Oops. I should have asked for the statment in bge_rxeof().
>>>
>>> #7 0xffffffff801d5f17 in bge_rxeof (sc=0xffffffff8836b000)
>> at /usr/src/sys/dev/bge/if_bge.c:2528
>>> 2528 m->m_pkthdr.len = m->m_len = cur_rx->bge_len -
>> ETHER_CRC_LEN;
>>>
>>> (where m is defined as:
>>> 2449 struct mbuf *m = NULL;
>>> )
>>
>> It's assigned earlier in between those two places.
>
> Its initialization here is just a style bug.
>
>> Can you 'p rxidx' as well
>> as 'p sc->bge_cdata.bge_rx_std_chain[rxidx]' and 'p
>> sc->bge_cdata.bge_rx_jumbo_chain[rxidx]'? Also, are you using jumbo
>> frames
>> at all?
>
> Also look at nearby chain entries (especially at (rxidx - 1) mod 512)).
> I think the previous 255 entries and the rxidx one should be
> non-NULL since we should have refilled them as we used them (so the
> one at rxidx is least interesting since we certainly just refilled
> it), and the next 256 entries should be NULL since we bogusly only use
> half of the entries. If the problem is uninitialization, then I expect
> all 512 entries except the one just refilled at rxidx to be NULL.
>
> Bruce
> _______________________________________________
(kgdb) p sc->bge_cdata.bge_rx_std_chain[rxidx]
$1 = (struct mbuf *) 0xffffff0097a27900
(kgdb) p rxidx
$2 = 499
since rxidx = 499, I assume you are most interested in 498:
(kgdb) p sc->bge_cdata.bge_rx_std_chain[498]
$3 = (struct mbuf *) 0xffffff00cf1b3100
for the sake of argument, 500 is null:
(kgdb) p sc->bge_cdata.bge_rx_std_chain[500]
$13 = (struct mbuf *) 0x0
the indexes with values basically are 243 through 499:
(kgdb) p sc->bge_cdata.bge_rx_std_chain[241]
$30 = (struct mbuf *) 0x0
(kgdb) p sc->bge_cdata.bge_rx_std_chain[242]
$31 = (struct mbuf *) 0x0
(kgdb) p sc->bge_cdata.bge_rx_std_chain[243]
$32 = (struct mbuf *) 0xffffff005d4ab700
(kgdb) p sc->bge_cdata.bge_rx_std_chain[244]
$33 = (struct mbuf *) 0xffffff004f644b00
so it does not seem to be a problem with "uninitialization".
More information about the freebsd-amd64
mailing list