Word of warning - I'm not a kernel hacker, so forgive me if I give
incomplete information.
Seems that QuakeII bombs on syscall 166 (sys_vm86) on my 2.2.6 based SMP
system (2 PII-350's).
Here's the last strace line:
SYS_166(0x402f20f8, 0, 0x402f2288, 0x1150, 0x1000 <unfinished ...>
+++ killed by SIGSEGV +++
with the kernel output of:
no vm86_info: BAD
Looking at the definition for this syscall -
asmlinkage int sys_vm86(unsigned long subfunction, struct
vm86plus_struct * v86);
it looks like quake2 is passing garbage to the function? Shouldn't it
have only two arguments (the subfunction and a pointer to a
vm86plus_struct structure)?
It's actually bombing in save_v86_state, which gets called only from
return_to_32_bit, which is called from a few places. But, it only
prints this info if vm86_info is blank. Tracing the sys_vm86 call, it
looks like vm86_info is set during a VM86_ENTER or VM86_ENTER_NO_BYPASS
before save_v86_state could possibly get called.
Was sys_vm86old once syscall 166 and sys_vm86 replaced it (Doesn't look
like it from the numbering of the two syscalls)? Can't think of any
other possibility other than quake2 is just passing the kernel garbage.
Is there any way I can trace it to give more info (like checking the
address that is passed as a pointer or something)? I'll try it on an
earlier kernel if needed.
BTW, it works under software rendering (+set vid_ref softx). It only
bombs when I'm trying to use my Voodoo2 board. I have the 2.0 version
of the 3dfx.o module compiled under 2.2.6 installed.
Also, it doesn't work with the ad1816 sound driver as a module (havn't
tried compiled in yet). It core dumps during a memset when initializing
the sound. Don't know if this is ad1816 specific, or just a generic
problem with quake2...
Sorry for the long fractured post. It's late.
Fred Reimer
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/