Re: 2.4.x oops with X

From: Andreas Hartmann
Date: Sat Jan 08 2005 - 11:21:26 EST


Andreas Hartmann schrieb:
[...]
> But now, the question is:
> Why does X crash running kernel 2.4.x with glibc 2.3.4 and not with kernel
> 2.6.10? Why does X run fine using kernel 2.4 and 2.6 with glibc 2.3.3?
>
> ----------------------------------------------
> | glibc
> | 2.3.3 2.3.4
> ------|-------------------------------------
> kernel|
> 2.4 | X ok X segfaults
> 2.6 | X ok X ok


Meanwhile, I could find where X crashes using glibc 2.3.4 with kernel 2.4.
It's this piece of code in linux_vm86.c:267

static int
vm86_rep(struct vm86_struct *ptr)
{
int __res;

#ifdef __PIC__
/* When compiling with -fPIC, we can't use asm constraint "b" because
%ebx is already taken by gcc. */
__asm__ __volatile__("pushl %%ebx\n\t"
"movl %2,%%ebx\n\t"
"movl %1,%%eax\n\t"
"int $0x80\n\t"
"popl %%ebx"
:"=a" (__res)
:"n" ((int)113), "r" ((struct vm86_struct *)ptr));
#else
__asm__ __volatile__("int $0x80\n\t"
:"=a" (__res):"a" ((int)113),
"b" ((struct vm86_struct *)ptr));
#endif

if (__res < 0) {
errno = -__res;
__res = -1;
}
else errno = 0;
return __res;
}


The function ExecX86int10 (vbe.c) calls do_vm86 (linux_vm86.c), which
calls vm86_rep (linux_vm86.c).


I don't understand, why this piece of assembler code works fine with glibc
2.3.3, but not with glibc 2.3.4, running kernel 2.4.x. It works fine again
with kernel 2.6.



Kind regards,
Andreas Hartmann
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/