OpenSolaris

Printable Version Enter a New Search
Bug ID 6656657
Synopsis ASSERT failure in ip_fast_forward() caused by uninitialized return action
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:tcp-ip
Keywords rtiq_regression
Responsible Engineer Jonathan Anderson
Reported Against snv_83
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_83
Fixed In snv_83
Release Fixed solaris_nevada(snv_83) , solaris_10u7(s10u7_01) (Bug ID:2160558)
Related Bugs 6638327
Submit Date 29-January-2008
Last Update Date 13-February-2008
Description
snst-router.east panics after a few minutes of running a recent onnv nightly build.  It panics while otherwise idle when forwarding IP traffic:

> ::status
debugging crash dump vmcore.0 (64-bit) from snst-router
operating system: 5.11 onnv-gate:2008-01-29 (i86pc)
panic message: 
assertion failed: ret_action != Forward_check_multirt, file: ../../common/inet/i
p/ip.c, line: 13899
dump content: kernel pages only
> $c
vpanic()
assfail+0x7e(fffffffff7be41d0, fffffffff7be62a8, 364b)
ip_fast_forward+0x78c(0, 10fd9481, ffffff02f0c337e8, ffffff030bba8f00)
ip_input+0x54a(ffffff02f0c337e8, 0, ffffff030bba8f00, ffffff000f7968b0)
i_dls_link_rx+0x2c0(ffffff02f07d8760, 0, ffffff030bba8f00)
mac_do_rx+0xba(ffffff02ec665680, 0, ffffff030bba8f00, 0)
mac_rx+0x1b(ffffff02ec665680, 0, ffffff030bba8f00)
aggr_recv_cb+0x1a7(ffffff02f13abad0, 0, ffffff030bba8f00)
mac_do_rx+0xba(ffffff02ec665cf8, 0, ffffff030bba8f00, 0)
mac_rx+0x1b(ffffff02ec665cf8, 0, ffffff030bba8f00)
nge_receive+0x47(ffffff02eca2d000)
nge_intr_handle+0x118(ffffff02eca2d000, ffffff000f796b9c)
nge_chip_intr+0xd9(ffffff02eca2d000, 0)
av_dispatch_autovect+0x8c(16)
dispatch_hardint+0x2f(16, 0)
switch_sp_and_call+0x13()
do_interrupt+0xe6(ffffff000f760b20, ffffff02ead2dbe0)
_interrupt+0x1ec()
mach_cpu_idle+0x17()
cpu_idle+0xc8()
idle+0x10e()
thread_start+8()

The x86 crash dump is located at snst-router.east:/var/crash/snst-router.East.Sun.COM/*.0, and is also attached to this bug report in case the system is inaccessible.

The ASSERT() was introduced by the recent fix to 6638327.  The problem appears to be that ire_forward() doesn't set ret_action when it returns at line 897, and ip_fast_foward() then bases its ASSERT() on uninitialized stack-local garbage.
Work Around
N/A
Comments
N/A