Finally got a readable backtrace:
#0 0xb7fd440e in __kernel_vsyscall ()
#1 0xb7e25bc9 in ioctl () from /lib/libc.so.6
#2 0xb7bc4a1d in drmGetLock (fd=10, context=2, flags=3213662516) at
xf86drm.c:1259
#3 0xb7bb951b in psbDRILock (pScrn=0x820bcd0, flags=0) at psb_dri.c:724
#4 0xb7baf983 in psbScreenInit (scrnIndex=0, pScreen=0x821b2d8, argc=6,
argv=0xbf8c9b74) at psb_driver.c:1342
#5 0x08073ddb in AddScreen (pfnInit=0xb7baf7f0 <psbScreenInit>, argc=6,
argv=0xbf8c9b74) at ../../dix/main.c:769
#6 0x080a6e39 in InitOutput (pScreenInfo=0x81fa640, argc=6, argv=0xbf8c9b74)
at ../../../../hw/xfree86/common/xf86Init.c:850
#7 0x08074590 in main (argc=6, argv=0xbf8c9b74, envp=Cannot access memory at
address 0x40086432
) at ../../dix/main.c:369
This also confirms my explorations from the other side, that the issue
is within psbDRILock.
drmGetLock is defined in libdrm, as this:
int drmGetLock(int fd, drm_context_t context, drmLockFlags flags)
{
drm_lock_t lock;
lock.context = context;
lock.flags = 0;
if (flags & DRM_LOCK_READY) lock.flags |= _DRM_LOCK_READY;
if (flags & DRM_LOCK_QUIESCENT) lock.flags |= _DRM_LOCK_QUIESCENT;
if (flags & DRM_LOCK_FLUSH) lock.flags |= _DRM_LOCK_FLUSH;
if (flags & DRM_LOCK_FLUSH_ALL) lock.flags |= _DRM_LOCK_FLUSH_ALL;
if (flags & DRM_HALT_ALL_QUEUES) lock.flags |= _DRM_HALT_ALL_QUEUES;
if (flags & DRM_HALT_CUR_QUEUES) lock.flags |= _DRM_HALT_CUR_QUEUES;
while (ioctl(fd, DRM_IOCTL_LOCK, &lock))
;
return 0;
}
Bryce
--
Ubuntu-mobile mailing list
[email protected]
Modify settings or unsubscribe at:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-mobile