Bug 441058 - Hang getting DRI lock on restart
Hang getting DRI lock on restart
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: xorg-x11-drv-ati (Show other bugs)
rawhide
All Linux
low Severity high
: ---
: ---
Assigned To: Dave Airlie
Fedora Extras Quality Assurance
: Reopened
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2008-04-05 12:39 EDT by Owen Taylor
Modified: 2008-05-06 00:24 EDT (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2008-05-06 00:24:50 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Owen Taylor 2008-04-05 12:39:19 EDT
With xorg-x11-drv-ati-6.8.0-8 (and several previous versions,
and also with a recent git checkout of the ATI driver), the driver
intermittantly hangs trying to get the DRI lock when started
and on server reset (when the last client exits.) 

The backtrace is:

#0  0x00110416 in __kernel_vsyscall ()
#1  0x0030d7c9 in ioctl () from /lib/libc.so.6
#2  0x001e9b24 in drmGetLock (fd=<value optimized out>, context=<value optimized
out>, flags=<value optimized out>) at xf86drm.c:1266
#3  0x001e0de0 in DRILock (pScreen=0x82f41b0, flags=0) at dri.c:2182
#4  0x001e22ce in DRIScreenInit (pScreen=0x82f41b0, pDRIInfo=0x82f16d0,
pDRMFD=0x82dd590) at dri.c:512
#5  0x004923c3 in RADEONDRIScreenInit (pScreen=0x82f41b0) at radeon_dri.c:1528
#6  0x0046be63 in RADEONScreenInit (scrnIndex=0, pScreen=0x82f41b0, argc=1,
argv=0xbfbf42a4) at radeon_driver.c:3249
#7  0x0806a97f in AddScreen (pfnInit=0x469ec0 <RADEONScreenInit>, argc=1,
argv=0xbfbf42a4) at main.c:743
#8  0x080a320e in InitOutput (pScreenInfo=0x8220040, argc=1, argv=0xbfbf42a4) at
xf86Init.c:1051
#9  0x0806b119 in main (argc=1, argv=0xbfbf42a4, envp=0xbfbf42ac) at main.c:358

What's going on there is that it is continually getting EINTR from the kernel
and retrying.

This happens maybe once every 3-5 restarts of the server. I've never seen 
it on the first start of the X server, so I suspect it might be related
to the shutdown of the previous X server.

I have EXA enabled in my Xorg.conf; I can't say one way or the other whether
I was getting the same hang before enabling EXA.

Hardware is a T42 with an RV350. I saw Jonathan have what looked superficially
like the same lockup on an R500 laptop, but we didn't investigate closely.
Comment 1 Charles R. Anderson 2008-04-07 17:08:04 EDT
xorg-x11-drv-ati-6.8.0-10.fc9.i386

Same results here with a X600 PCIe card in dual-head mode.  Strace also reveals
the same thing:

ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
ioctl(11, 0x4008642a, 0xbfba5634)       = -1 EINTR (Interrupted system call)
Comment 2 Dave Airlie 2008-04-08 21:36:52 EDT
should be fixed in rawhide.
Comment 3 Owen Taylor 2008-04-09 13:59:18 EDT
I'm still seeing lockups in similar circumstances with:

  2.6.25-0.216.rc8.git7.fc9.i686

(everything else as of this morning's rawhide compose)

I'm not sure if the backtrace is the same since I had trouble getting
one ... I couldn't attach, and when I started Xorg under gdb and
reproduced it there, I couldn't interrupt it to get a backtrace.

Comment 4 Dave Airlie 2008-05-06 00:24:50 EDT
the dri lock hangs should be fixed.

Note You need to log in before you can comment on or make changes to this bug.