NetBSD-Bugs archive

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

kern/37732: i386 fork() fails on fs register not being zero; fs register not preserved?



>Number:         37732
>Category:       kern
>Synopsis:       i386 fork() fails on fs register not being zero; fs register 
>not preserved?
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jan 09 23:05:00 +0000 2008
>Originator:     Reinoud Zandijk
>Release:        4.99.42
>Organization:
NetBSD
>Environment:
NetBSD heethoofdje.13thmonkey.org 4.99.42 NetBSD 4.99.42 (GENERIC) #2: Sat Dec 
15 16:03:07 CET 2007  
root%heethoofdje.13thmonkey.org@localhost:/usr/sources/cvs.netbsd.org/src/sys/arch/i386/compile/GENERIC
 i386

>Description:
When debugging pkgsrc/emulators/wine it turns out that when the %fs flag is not 
set to zero, the child of fork() will coredump. Explicit setting of this 
register to zero before fork() doesn't coredump anymore though wine won't run 
on.

What happends i think is that the segment register %fs is not preserved or can 
have wierd side-effects.


>How-To-Repeat:
Set %fs segment register to non-zero or some random value and fork(). The 
child() will panic in __fork()

>Fix:
Most likely store fs on trap entry and restore on trap exit.




Home | Main Index | Thread Index | Old Index