Re: [patch] Re: [2.1.117] GPF in APM while using WINE

Marcus Meissner (marcus@jet.franken.de)
Thu, 27 Aug 1998 01:12:33 +0200 (MEST)


> > Except for one thing, saving %fs and %gs should be done _before_ loading
> > the new ldt, otherwise %fs and/or %gs can be automagically zeroed in an
> > APM interrupt (or any other which happens to use these segment
> > registers) and saved as such in task struct (with interesting side
> > effects on Wine and friends ;)). Ingo's patch is right in this respect.
>
> Good point. Fixed.

Umm, Linus, should 2.1.118 really fix the crash I did report?

Well, it doesn't. I get exactly the same backtrace (minus address differences)
now:

|EIP: 0010:[<C0180B4C>] apm_get_event+0x28
|Call Trace: C0181100 do_apm_timer
| C0180F74 get_event+0x10
| C0181041 check_events+0x9
| C0181174 do_apm_timer+0x74
| C01115B1 timer_bh+0x305
| C0117949 do_bottom_half+0x49
| C010AD53 do_IRQ+0x3b
| C0109CA0 ret_from_intr
| C4923000 ??? unknown
| C0108A00 __switch_to+0x68
(this points to the opcode right after the lldt call)
c01089f4: 39 42 64 cmpl %eax,0x64(%edx)
c01089f7: 74 07 je c0108a00 <__switch_to+0x68>
c01089f9: 0f 00 91 48 02 lldt 0x248(%ecx)
c01089fe: 00 00
c0108a00:>>>>>>>8b 83 04 02 00 movl 0x204(%ebx),%eax
c0108a05: 00
| C0110B07 schedule+0x22f
| C0110560 process_timeout
| C012D331 do_select+0x1a1
| C012D6B5 sys_select+0x345
| C01822BE tty_read+0xb2
| C010DB1E old_select+0x5a
| C0109BC8 system_call+0x38
|Code: 0F A1 07 1F 89 C5 8B 44 24 14 66 89
|apm_get_event+0x28:
| popl %fs
| popl %es
| popl %ds
| movl %eax,%ebp
| movl 0x14(%esp,1),%eax
| ...

Or should drivers/char/apm_bios.c be fixed with exceptionhandlers or
something like it?

The only difference between the vanilla kernel and mine is that mine
does 100 times more APM timerinterrupts (1/100 s) to show the bug.

(BTW: Mingo's first patch *DID* fix the problem.)

Ciao, Marcus

-
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.altern.org/andrebalsa/doc/lkml-faq.html