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

Bug#261251: xserver-xfree86: [ati/radeon+crusoe] Xclients are crashing at start



Ok,

I have made some "progress" with this bug, but now I am a bit stuck. 
I really need assistance for the following because I don't know what to
do next. 

Here are the facts:

I have a laptop Vaio C1MZX with a Transmeta Crusoe TM5800.
The graphic card is a ATI Radeon Mobility M6 LY.

>From time to time the Xserver stop to work properly and refuse new
connections from any Xclients. The Xserver itself is still standing but
any Xclient trying to connect get a message from the Xserver that makes
it crash (see the gdb log attached to this mail: xlogo_bug.log). It
seems to be the 9th reply from the Xserver that makes the Xclients crash
(the normal negotiation between the Xserver and the Xclient is traced in
xlogo_nobug.log).

I also noticed that stopping the Xserver and starting it again was not
helping to remove the bug. The Xserver will still behave the same.

More surprisingly, if you do a copy of the binary file of the "buggy"
Xserver and run it, then it will work without bug, but when running the
original binary file that started with the bug, the bug will appear
again.

All Xservers (with optimization or not, with debug or not, or all the
combinations) will crash at some point and behave as mentioned
previously.

I tried to go inside the Xserver by attaching gdb to the Xserver process
but the Xserver start to use a lot of cpu time and nothing happen. When
interrupted inside gdb by a Ctrl-C, gdb give a prompt again but a "bt"
gives some nonsense informations (when the bug is not present this
process of attaching gdb to the process works normally).


Some Hypothesis...

Well, I don't know if it is right but it seems that there is a "cache"
which contains a wrong image of the Xserver which is not flushed.

If we accept this hypothesis, I don't know why the bug is still the same
(usually these cache problems are random).

Another problem is that I don't know what to try next and how to get
deeper or how to have a better understanding on what is going on.

Can somebody confirm the behavior that I described or give me some hints
on what to do next ?

Some useful links to better understand the specificities of the Crusoe
processors:
http://www.realworldtech.com/page.cfm?ArticleID=RWT010204000000
http://www.realworldtech.com/page.cfm?ArticleID=RWT012704012616

Regards
-- 
Emmanuel Fleury
 
Computer Science Department, |  Office: B1-201
Aalborg University,          |  Phone:  +45 96 35 72 23
Fredriks Bajersvej 7E,       |  Fax:    +45 98 15 98 89
9220 Aalborg East, Denmark   |  Email:  fleury@cs.auc.dk
GNU gdb 6.1-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-linux"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

(gdb) b XlibInt.c:_XReply
Make breakpoint pending on future shared library load? (y or [n]) 
Breakpoint 1 (XlibInt.c:_XReply) pending.
(gdb) r
Starting program: /home/fleury/devel/crusoe_bug/src/xfree86-4.3.0-dfsg/xc/programs/xlogo/xlogo 
Breakpoint 2 at 0x4026f3bc: file XlibInt.c, line 1642.
Pending breakpoint "XlibInt.c:_XReply" resolved

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff590, extra=0, discard=0)
    at XlibInt.c:1642
	in XlibInt.c
(gdb) c
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff5b0, extra=0, discard=0)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff420, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff600, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff600, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbfffe4d0, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbfffe4e0, extra=0, discard=0)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff3d0, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

X Error of failed request:  BadLength (poly request too large or internal Xlib length error)
  Major opcode of failed request:  18 (X_ChangeProperty)
  Serial number of failed request:  15
  Current serial number in output stream:  18

Program exited with code 01.
(gdb) quit
GNU gdb 6.1-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-linux"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

(gdb) b XlibInt.c:_XReply
Make breakpoint pending on future shared library load? (y or [n]) 
Breakpoint 1 (XlibInt.c:_XReply) pending.
(gdb) r
Starting program: /home/fleury/devel/crusoe_bug/src/xfree86-4.3.0-dfsg/xc/programs/xlogo/xlogo 
Breakpoint 2 at 0x4026f3bc: file XlibInt.c, line 1642.
Pending breakpoint "XlibInt.c:_XReply" resolved

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff590, extra=0, discard=0)
    at XlibInt.c:1642
	in XlibInt.c
(gdb) c
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff5b0, extra=0, discard=0)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff420, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff600, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff600, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbfffe4d0, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbfffe4e0, extra=0, discard=0)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff3d0, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff530, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff730, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Breakpoint 2, _XReply (dpy=0x8050488, rep=0xbffff6f0, extra=0, discard=1)
    at XlibInt.c:1642
1642	in XlibInt.c
(gdb) 
Continuing.

Program received signal SIGINT, Interrupt.
0x403e7398 in select () from /lib/tls/libc.so.6
(gdb) quit
The program is running.  Exit anyway? (y or n) 

Reply to: