NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-i386/40143 (Viewing an mpeg transport stream with mplayer causes crash)



The following reply was made to PR port-i386/40143; it has been noted by GNATS.

From: Andrew Doran <ad%NetBSD.org@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: port-i386/40143 (Viewing an mpeg transport stream with mplayer 
causes crash)
Date: Fri, 20 Mar 2009 19:43:01 +0000

 1. A trap or syscall occurs. Entry is through a call gate or trap gate:
    PSL_I is set.
 
 2. An interrupt occurs before the trap/syscall frame is constructed on the
    stack. Interrupt is handled as in ring0, but saves ring3 descriptors in
    its frame.
 
 3. The interrupt is handled successfully. During this time the running user
    thread's selectors become invalid.
 
 4. On return from the interrupt (back to ring0) we restore invalid ring3
    descriptors.
 
 5. Segment fault code cannot determine if this is user state causing the
    trap, because the outer user frame is only partially constructed.
 
 6. we_re_toast
 
 trap type 4 code 94 eip c0100ea9 cs 8 eflags 10046 cr2 bbaee000 ilevel 0
 kernel: supervisor trap protection fault, code=0
 Stopped in pid 410.1 (test_ldt) at      netbsd:Xdoreti+0x89:    mov     
0x4(%esp),%fs
 db{0}> bt
 Xdoreti() at netbsd:Xdoreti+0x89
 --- interrupt ---
 0:
 db{0}> info reg
 ...
 esp         0xcf9fed38
 ...
 db{0}> x/Lx 0xcf9fed38,40
 0xcf9fed38:     cfa700b3    bfbf0097    c010001f    cf9f001f    0           12
 0xcf9fed50:     bfbfeca8    bbaee000    97          1000        97          3 
 0xcf9fed68:     0           c010c9a0    8           246 
 
                ^ frame from kernel mode interrupt (ring0->ring0)
                                                                6           
8048877
                 17          10246       bfbfec7c    1f
 
                ^ partially constructed frame from ring3->ring0 transition
 


Home | Main Index | Thread Index | Old Index