Is this panic a known problem? I just tried to use a Sun Ray for the
first time since I upgraded from snv_62 to snv_91 and I get this panic
within a few minutes every time I log in to a Sun Ray. I don't know if
this is a bug in SRSS or OpenSolaris but I thought I'd mention it here
in case it's something that should be fixed.
The server is running SXCE snv_91 (amd64), Masayuki Murayama's vfe
driver, and SRSS 3.1. Sun Rays were working fine when I was running
snv_62. I just tried upgrading the vfe driver from 2.3.1 to 2.6.2a, but
still get the panics.
Maybe SRSS 3.1 is just buggy on newer Nevada builds (post-Clearview,
perhaps)?
panic[cpu1]/thread=ffffff000447ac80:
BAD TRAP: type=e (#pf Page fault) rp=ffffff000447a6d0 addr=0 occurred in module
"vfe" due to a NULL pointer dereference
> $c
gem_send_common+0x192()
gem_gld_send+0x47()
gld_start+0x25e(ffffff01476e9e40, ffffff014ec88ee0, 0, 0)
gld_wput+0xf8(ffffff01476e9e40, ffffff014ec88ee0)
putnext+0x22b(ffffff0148a90e20, ffffff014ec88ee0)
softmac_m_tx+0xb3(ffffff014c967200, ffffff014ec88ee0)
dls_tx+0x1d(ffffff0141149d20, ffffff014ec88ee0)
dld_wsrv+0xb7(ffffff0149cfab50)
runservice+0x42(ffffff0149cfab50)
queue_service+0x42(ffffff0149cfab50)
stream_service+0x73(ffffff014cf03838)
taskq_d_thread+0xbb(ffffff014bbe9a50)
thread_start+8()
> ::modinfo ! grep vfe
165 fffffffff7d79000 d860 1 vfe (via rhine nic driver v2.6.2)
> gem_send_common+141,10?ia
gem_send_common+0x141:movl -0x48(%rbp),%r12d ; nmblk
gem_send_common+0x145: movq +0x3b7cd5c(%rip),%r11 <_pageoffset>
gem_send_common+0x14c: movl +0x3b7cd11(%rip),%r10d <_pageshift>
gem_send_common+0x153: addl 0x110(%r13),%r14d
gem_send_common+0x15a: movl 0x288(%r13),%r15d
gem_send_common+0x161: decl %r15d
gem_send_common+0x164: andl %r15d,%r14d
gem_send_common+0x167: imulq $0x130,%r14,%r15
gem_send_common+0x16e: addq 0x108(%r13),%r15
gem_send_common+0x175: movl %r12d,-0x4c(%rbp) ; i
gem_send_common+0x179: movq %r11,-0xa0(%rbp)
gem_send_common+0x180: movl %r10d,-0xa4(%rbp)
gem_send_common+0x187: movq -0x40(%rbp),%r13 ; mp_head
gem_send_common+0x18b: movq %r13,-0xb0(%rbp) ; mp
gem_send_common+0x192: movq 0x0(%r13),%rdx ; mp_head->b_next
gem_send_common+0x196: movq %rdx,-0x40(%rbp) ; mp_head
gem_send_common+0x19a:
> <rbp-0x48/D
0xffffff000447a848: 47
> <rbp-0x4C/D
0xffffff000447a844: 7
The panic is here in the vfe driver:
mblk_t *
gem_send_common(struct gem_dev *dp, mblk_t *mp_head, uint32_t flags)
{
...
mp = mp_head;
nmblk = 1;
while ((mp = mp->b_next) != NULL) {
nmblk++;
}
...
i = nmblk;
do {
...
mp = mp_head;
mp_head = mp_head->b_next, !! TRAP HERE, mp_head is zero !!
mp->b_next = NULL;
...
} while (--i > 0);
And apparently, nmblk = 47 and i = 7 at the time of the panic. It looks
like somebody handed a long chain of packets to vfe and then munged the
pointers while vfe was processing it.
The first packet in the chain can still be seen as an argument to
gld_start, and it is a packet from the sunray server to a sunray.
> ffffff014ec88ee0::print -t mblk_t
{
struct msgb *b_next = 0
struct msgb *b_prev = 0
struct msgb *b_cont = 0
unsigned char *b_rptr = 0xffffff014ed0c082
unsigned char *b_wptr = 0xffffff014ed0c53c
struct datab *b_datap = 0xffffff014ed0c000
unsigned char b_band = 0
unsigned char b_tag = 0
unsigned short b_flag = 0x2
queue_t *b_queue = 0
}
> 0xffffff014ed0c082,40::dump
0 1\/ 3 4 5 6 7 8 9 a b c d e f 01v3456789abcdef
ffffff014ed0c080: feca0003 bab00f1a 00301b41 db910800 .........0.A....
ffffff014ed0c090: 450004ac 68434000 ff118cd5 c0a88001 [EMAIL PROTECTED]
ffffff014ed0c0a0: c0a880d5 9c42d22d 049826df de4d0000 .....B.-..&..M..
ffffff014ed0c0b0: 66810000 085200c8 01000908 a600b239 f....R.........9
ffffff014ed0c0c0: 048c022d 007c0001 c8b9b6c9 b9b3caba ...-.|..........
> ffffff014ed0c090::iphdr
IPv4 header
SRC DST
HLEN TOS LEN ID OFFSET TTL PROTO CHKSUM EXP-CSUM FLGS
192.168.128.1 192.168.128.213
20 0 1196 26691 0 255 17 54668 54668 <DF>
>
-=] Mike [=-
_______________________________________________
networking-discuss mailing list
[email protected]