Bug 15281

Summary: X crashes/hangs with EXA
Product: xorg Reporter: Hasso Tepper <hasso>
Component: Server/Acceleration/EXAAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: major    
Priority: medium    
Version: git   
Hardware: x86 (IA32)   
OS: BSD (Others)   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 12560    

Description Hasso Tepper 2008-03-31 05:14:13 UTC
With EXA X crashes (desktop with Q965) or hangs (laptop with 965GM) 100% reproduceably with this method:

* Shortcut bound to kwin (KDE 3.5.9) maximise event (in my case Ctrl+Alt+M).
* Open some window, press and hold down this shortcut and release after some seconds.

It might take several attempts or it crash/hang without release some point, but it happens 100% quite quickly. My xserver isn't compiled with debug info, so backtrace isn't very informative. It happens with both with and without DRI.

xorg-server: 1.4.0.90
xf86-video-intel: 2.2.99.902

Platfrom is DragonFly BSD and in case that matters, agp inkernel code DragonFly BSD is using, is direct port from FreeBSD 7.0.

Backtrace from crashing X on Q965:

(gdb) bt
#0  0x286aabd0 in exaPolylines () from /usr/pkg/lib/xorg/modules//libexa.so
#1  0x0814de94 in ?? ()
#2  0x0807fc17 in ProcPolyLine ()
#3  0x0812f725 in ?? ()
#4  0x0808247f in Dispatch ()
#5  0x0806be6f in main ()
Comment 1 Michel Dänzer 2008-04-01 07:50:16 UTC
Can you try xserver 1.4.99.x or the Git master branch? If not, or if the problem persists with that, can you get a better backtrace with gdb?
Comment 2 Hasso Tepper 2008-04-02 00:04:18 UTC
I have trouble getting 1.5 or master branch to work at all for now (libpciaccess, driver etc), but 1.4 branch from git compiles and here is better backtrace:

(gdb) bt
#0  0x28341b8c in kill () from /usr/lib/libc.so.6
#1  0x2838c126 in abort () from /usr/lib/libc.so.6
#2  0x0809a2c5 in ddxGiveUp () at xf86Init.c:1063
#3  0x081941ec in AbortServer () at log.c:406
#4  0x0819467f in FatalError (f=0x819e160 "Caught signal %d.  Server aborting\n") at log.c:552
#5  0x080b50f1 in xf86SigHandler (signo=11) at xf86Events.c:766
#6  <signal handler called>
#7  0x28602bc4 in exaPolylines (pDrawable=0x38c7c000, pGC=0x38c20c00, mode=0, npt=4, ppt=0x38d42ff0) at exa_accel.c:543
#8  0x0814dfbc in damagePolylines (pDrawable=0x38c7c000, pGC=0x38c20c00, mode=0, npt=4, ppt=0x38d42ff0) at damage.c:997
#9  0x0807fbe3 in ProcPolyLine (client=0x38af2c00) at dispatch.c:1906
#10 0x0812f86d in XaceCatchDispatchProc (client=0x38af2c00) at xace.c:281
#11 0x0808244b in Dispatch () at dispatch.c:502
#12 0x0806be4f in main (argc=6, argv=0xbfbffc24, envp=Cannot access memory at address 0x34
) at main.c:452
(gdb) frame 7
#7  0x28602bc4 in exaPolylines (pDrawable=0x38c7c000, pGC=0x38c20c00, mode=0, npt=4, ppt=0x38d42ff0) at exa_accel.c:543
543                 x2 = ppt[i + 1].x;
(gdb) print *pDrawable
$1 = {type = 1 '\001', class = 0 '\0', depth = 16 '\020', bitsPerPixel = 16 '\020', id = 20972155, x = 0, y = 0, width = 55, height = 46,
  pScreen = 0x28618000, serialNumber = 815789}
(gdb) print *pGC
$2 = {pScreen = 0x28618000, depth = 16 '\020', alu = 3 '\003', lineWidth = 0, dashOffset = 0, numInDashList = 2,
  dash = 0x81af7a8 "\004\004", lineStyle = 0, capStyle = 1, joinStyle = 0, fillStyle = 0, fillRule = 0, arcMode = 1, subWindowMode = 0,
  graphicsExposures = 0, clientClipType = 0, miTranslate = 1, tileIsPixel = 1, fExpose = 1, freeCompClip = 1, unused = 2584,
  planemask = 4294967295, fgPixel = 4294945408, bgPixel = 4294963069, tile = {pixmap = 0x0, pixel = 0}, stipple = 0x28678100, patOrg = {
    x = 0, y = 0}, font = 0x28680c00, clipOrg = {x = 0, y = 0}, lastWinOrg = {x = 0, y = 0}, clientClip = 0x0, stateChanges = 0,
  serialNumber = 815789, funcs = 0x81b7360, ops = 0x2860a9e0, devPrivates = 0x38c20c58, pRotatedPixmap = 0x0, pCompositeClip = 0x38d95fe0}
(gdb) print *ppt
$3 = {x = 40, y = 44}
(gdb)
Comment 3 Hasso Tepper 2008-04-02 00:33:28 UTC
OK, tracked it down, seems. The fix is already in 1.5, but not in 1.4.
http://gitweb.freedesktop.org/?p=xorg/xserver.git;a=commit;h=d502521c3669f3f22b94c39a64ab63bfd92c6a97
Comment 4 Michel Dänzer 2008-04-02 02:34:25 UTC
The fix has been nominated on http://wiki.x.org/wiki/Server14Branch for a while. Making a blocker for 1.4.1, though it's looking like 1.5 might come around earlier anyway.
Comment 5 Daniel Stone 2008-04-30 02:08:26 UTC
Pushed to 1.4; in any case, it's already in 1.5 as well as master.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.