EXA uninitialized crash when DRI2 disabled
Submitted by Dylan Simon
Assigned to xf86-video-ati maintainers
Description
xorg-server-1.15.0 xf86-video-ati-7.3.0 (also seen with previous versions)
Log excerpts:
(--) RADEON(0): Chipset: "ATI Mobility Radeon HD 5000 Series" (ChipID = 0x68e1)
(II) Loading /pkg/xorg-server-1.15.0/lib/xorg/modules/libexa.so
(II) Module exa: vendor="X.Org Foundation"
compiled for 1.15.0, module version = 2.6.0
...
(==) RADEON(0): Backing store enabled
(WW) RADEON(0): Direct rendering disabled
(II) RADEON(0): Acceleration enabled
(**) RADEON(0): DPMS enabled
(==) RADEON(0): Silken mouse enabled
(II) RADEON(0): Textured video requires CP on R5xx/R6xx/R7xx/IGP
(II) RADEON(0): RandR 1.2 enabled, ignore the following RandR disabled message.
(--) RandR disabled
(II) AIGLX: Loaded and initialized swrast
(II) GLX: Initialized DRISWRAST GL provider for screen 0
Xorg: /src/xorg-server-1.15.0/src/include/privates.h:122: dixGetPrivateAddr: Assertion `key->initialized' failed.
backtrace:
#0 0x00007f912157d899 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56<br>
#1 0x00007f912157ee27 in __GI_abort () at abort.c:89<br>
#2 0x00007f9121576866 in __assert_fail_base (fmt=0x7f91216b4128 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7f911e0f209b "key->initialized", file=file@entry=0x7f911e0f1fc0 "/src/xorg-server-1.15.0/src/include/privates.h", line=line@entry=122, function=function@entry=0x7f911e0f2850 <__PRETTY_FUNCTION__.8617> "dixGetPrivateAddr") at assert.c:92<br>
#3 0x00007f9121576922 in __GI___assert_fail (assertion=assertion@entry=0x7f911e0f209b "key->initialized", file=file@entry=0x7f911e0f1fc0 "/src/xorg-server-1.15.0/src/include/privates.h", line=line@entry=122, function=function@entry=0x7f911e0f2850 <__PRETTY_FUNCTION__.8617> "dixGetPrivateAddr") at assert.c:101<br>
#4 0x00007f911e0e2520 in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>, privates=<optimized out>) at /src/xorg-server-1.15.0/src/include/privates.h:122<br>
#5 0x00007f911e0e477a in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>, privates=<optimized out>) at /src/xorg-server-1.15.0/src/exa/exa.c:1149<br>
#6 dixGetPrivate (key=0x7f911e2f6820 <exaScreenPrivateKeyRec>, privates=<optimized out>) at /src/xorg-server-1.15.0/src/include/privates.h:137<br>
#7 exaMoveInPixmap (pPixmap=<optimized out>) at /src/xorg-server-1.15.0/src/exa/exa.c:1142<br>
#8 0x00007f911eba3b28 in drmmode_create_bo_pixmap (width=1920, height=1200, depth=24, bpp=32, pitch=7680, tiling=tiling@entry=0, bo=bo@entry=0x12460e0, psurf=psurf@entry=0x0, pScrn=<optimized out>, pScrn=<optimized out>) at /src/xf86-video-ati-7.3.0/src/src/drmmode_display.c:111<br>
#9 0x00007f911eba41d6 in create_pixmap_for_fbcon (drmmode=0x12460e0, drmmode=0x12460e0, fbcon_id=0, pScrn=0x11ff3c0) at /src/xf86-video-ati-7.3.0/src/src/drmmode_display.c:343<br>
#10 drmmode_copy_fb (pScrn=pScrn@entry=0x11ff3c0, drmmode=drmmode@entry=0x11ffc88) at /src/xf86-video-ati-7.3.0/src/src/drmmode_display.c:386<br>
#11 0x00007f911eba5f44 in drmmode_set_desired_modes (pScrn=pScrn@entry=0x11ff3c0, drmmode=drmmode@entry=0x11ffc88) at /src/xf86-video-ati-7.3.0/src/src/drmmode_display.c:1826<br>
#12 0x00007f911eba0388 in RADEONCreateScreenResources_KMS (pScreen=0x1209930) at /src/xf86-video-ati-7.3.0/src/src/radeon_kms.c:223<br>
#13 0x00000000004a1366 in xf86CrtcCreateScreenResources (screen=0x1209930) at /src/xorg-server-1.15.0/src/hw/xfree86/modes/xf86Crtc.c:709<br>
#14 0x0000000000438636 in dix_main (argc=6, argv=0x7fff12c03eb8, envp=<optimized out>) at /src/xorg-server-1.15.0/src/dix/main.c:221<br>
#15 0x00007f9121569bb5 in __libc_start_main (main=0x424390 <main>, argc=6, argv=0x7fff12c03eb8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff12c03ea8) at libc-start.c:269<br>
#16 0x00000000004243c1 in _start () at ../sysdeps/x86_64/start.S:122<br>
```<br>
<br>
It appears that, since direct rendering is disabled, exaDriverInit is never called, but exaMoveInPixmap is called anyway, leading to the crash.