Bug 74096

Summary: EXA uninitialized crash when DRI2 disabled
Product: xorg Reporter: Dylan Simon <dylan>
Component: Driver/RadeonAssignee: xf86-video-ati maintainers <xorg-driver-ati>
Status: RESOLVED MOVED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: howaboutsynergy
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Xorg.log
none
xorg.conf
none
dmesg (boot)
none
possible fix
none
debug patch
none
full Xorg.0.log of the crash but with ShadowPrimary off (doesn't matter tho) none

Description Dylan Simon 2014-01-26 22:44:45 UTC
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
#1  0x00007f912157ee27 in __GI_abort () at abort.c:89
#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
#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
#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
#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
#6  dixGetPrivate (key=0x7f911e2f6820 <exaScreenPrivateKeyRec>, privates=<optimized out>) at /src/xorg-server-1.15.0/src/include/privates.h:137
#7  exaMoveInPixmap (pPixmap=<optimized out>) at /src/xorg-server-1.15.0/src/exa/exa.c:1142
#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
#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
#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
#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
#12 0x00007f911eba0388 in RADEONCreateScreenResources_KMS (pScreen=0x1209930) at /src/xf86-video-ati-7.3.0/src/src/radeon_kms.c:223
#13 0x00000000004a1366 in xf86CrtcCreateScreenResources (screen=0x1209930) at /src/xorg-server-1.15.0/src/hw/xfree86/modes/xf86Crtc.c:709
#14 0x0000000000438636 in dix_main (argc=6, argv=0x7fff12c03eb8, envp=<optimized out>) at /src/xorg-server-1.15.0/src/dix/main.c:221
#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
#16 0x00000000004243c1 in _start () at ../sysdeps/x86_64/start.S:122

It appears that, since direct rendering is disabled, exaDriverInit is never called, but exaMoveInPixmap is called anyway, leading to the crash.
Comment 1 Alex Deucher 2014-01-27 14:30:37 UTC
Please attach your xorg log, xorg config, and dmesg output.
Comment 2 Dylan Simon 2014-01-27 14:41:32 UTC
Created attachment 92861 [details]
Xorg.log
Comment 3 Dylan Simon 2014-01-27 14:44:45 UTC
Created attachment 92862 [details]
xorg.conf

Note that this config works fine once DRI2 enabled (and has otherwise for years).
Comment 4 Dylan Simon 2014-01-27 14:47:40 UTC
Created attachment 92863 [details]
dmesg (boot)

No additional kernel messages from running X.
Comment 5 Alex Deucher 2014-01-27 22:33:59 UTC
Created attachment 92888 [details] [review]
possible fix

Does this patch help?
Comment 6 Dylan Simon 2014-01-27 23:21:23 UTC
It gets farther, and I see acceleration is disabled, but still crashes.  I'm not sure if this is still related to the driver, though, since, it seems to get far enough to start drawing windows.  (I should note that once I figured out that the problem was DRI and installed a new dri2proto, I got everything to work, so this is a fresh xorg-server built explicitly with --disable-dri2 and xf86-video-ati built on that with the patch.)

[2700662.452] (WW) RADEON(0): Direct rendering disabled
[2700662.452] (II) RADEON(0): Acceleration disabled
[2700662.452] (**) RADEON(0): DPMS enabled
[2700662.452] (==) RADEON(0): Silken mouse enabled
[2700662.452] (II) RADEON(0): Textured video requires DRI
[2700662.452] (II) RADEON(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[2700662.453] (--) RandR disabled
[2700662.487] (II) AIGLX: Loaded and initialized swrast
[2700662.487] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[2700662.492] (II) RADEON(0): Setting screen physical size to 508 x 317
[2700662.507] (EE)
[2700662.507] (EE) Backtrace:
[2700662.507] (EE) 0: Xorg (xorg_backtrace+0x42) [0x5746a2]
[2700662.507] (EE) 1: Xorg (0x400000+0x178069) [0x578069]
[2700662.507] (EE) 2: /lib/libpthread.so.0 (0x7fb8c1a08000+0x10770) [0x7fb8c1a18770]
[2700662.507] (EE) 3: /pkg/pixman-0.32.4/lib/libpixman-1.so.0 (0x7fb8c1550000+0x6c235) [0x7fb8c15bc235]
[2700662.507] (EE) 4: /pkg/pixman-0.32.4/lib/libpixman-1.so.0 (0x7fb8c1550000+0x53a67) [0x7fb8c15a3a67]
[2700662.507] (EE) 5: /pkg/pixman-0.32.4/lib/libpixman-1.so.0 (pixman_fill+0x31) [0x7fb8c155b6c1]
[2700662.507] (EE) 6: /usr/lib/xorg/modules/libfb.so (fbFill+0x300) [0x7fb8bd1d4b00]
[2700662.507] (EE) 7: /usr/lib/xorg/modules/libfb.so (fbPolyFillRect+0x198) [0x7fb8bd1d5328]
[2700662.507] (EE) 8: Xorg (0x400000+0x107ae0) [0x507ae0]
[2700662.508] (EE) 9: Xorg (miPaintWindow+0x1d8) [0x557968]
[2700662.508] (EE) 10: Xorg (miWindowExposures+0x1c7) [0x55821f]
[2700662.508] (EE) 11: Xorg (MapWindow+0x239) [0x45f129]
[2700662.508] (EE) 12: Xorg (0x400000+0x3871f) [0x43871f]
[2700662.508] (EE) 13: /lib/libc.so.6 (__libc_start_main+0xf5) [0x7fb8c0871bb5]
[2700662.508] (EE) 14: Xorg (0x400000+0x243c1) [0x4243c1]
[2700662.508] (EE)
[2700662.508] (EE) Segmentation fault at address 0x12a1000

#0  0x00007fb8c0885899 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007fb8c0886e27 in __GI_abort () at abort.c:89
#2  0x00007fb8c08c44d3 in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7fb8c09bd410 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:175
#3  0x00007fb8c08ca15d in malloc_printerr (action=3, str=0x7fb8c09bd580 "free(): corrupted unsorted chunks", ptr=<optimized out>) at malloc.c:4895
#4  0x00007fb8c08cae87 in _int_free (av=<optimized out>, p=0x1149c20, have_lock=0) at malloc.c:3751
#5  0x00007fb8c08ba3d5 in _IO_new_fclose (fp=0x1149c30) at iofclose.c:85
#6  0x000000000057f1be in LogClose (error=error@entry=EXIT_ERR_ABORT) at /src/xorg-server-1.15.0/src/os/log.c:258
#7  0x000000000047c69d in xf86CloseLog (error=error@entry=EXIT_ERR_ABORT) at /src/xorg-server-1.15.0/src/hw/xfree86/common/xf86Helper.c:1253
#8  0x000000000047260d in ddxGiveUp (error=error@entry=EXIT_ERR_ABORT) at /src/xorg-server-1.15.0/src/hw/xfree86/common/xf86Init.c:1059
#9  0x00000000004726e0 in AbortDDX (error=error@entry=EXIT_ERR_ABORT) at /src/xorg-server-1.15.0/src/hw/xfree86/common/xf86Init.c:1107
#10 0x000000000057f07a in AbortServer () at /src/xorg-server-1.15.0/src/os/log.c:770
#11 0x000000000057fd00 in FatalError (f=f@entry=0x5a7668 "Caught signal %d (%s). Server aborting\n") at /src/xorg-server-1.15.0/src/os/log.c:911
#12 0x00000000005780bc in OsSigHandler (signo=11, sip=<optimized out>, unused=<optimized out>) at /src/xorg-server-1.15.0/src/os/osinit.c:147
#13 <signal handler called>
#14 0x00007fb8c15bc235 in _mm_store_si128 (__B=..., __P=<optimized out>) at /pkg/gcc-4.8.2/lib/gcc/x86_64-pc-linux/4.8.2/include/emmintrin.h:696
#15 save_128_aligned (data=..., dst=<optimized out>) at /src/pixman-0.32.4/src/pixman/pixman-sse2.c:391
#16 sse2_fill (imp=<optimized out>, bits=<optimized out>, stride=7680, bpp=<optimized out>, x=<optimized out>, y=<optimized out>, width=1920, height=1069, filler=0) at /src/pixman-0.32.4/src/pixman/pixman-sse2.c:3405
#17 0x00007fb8c15a3a67 in _pixman_implementation_fill (imp=0x1147870, bits=bits@entry=0x11abe48, stride=stride@entry=1920, bpp=bpp@entry=32, x=x@entry=0, y=y@entry=0, width=width@entry=1920, height=height@entry=1200, filler=<optimized out>, filler@entry=0) at /src/pixman-0.32.4/src/pixman/pixman-implementation.c:277
#18 0x00007fb8c155b6c1 in pixman_fill (bits=bits@entry=0x11abe48, stride=stride@entry=1920, bpp=bpp@entry=32, x=x@entry=0, y=y@entry=0, width=width@entry=1920, height=height@entry=1200, filler=0) at /src/pixman-0.32.4/src/pixman/pixman.c:766
#19 0x00007fb8bd1d4b00 in fbFill (pDrawable=pDrawable@entry=0x11ae0c0, pGC=pGC@entry=0x11ada00, x=x@entry=0, y=y@entry=0, width=width@entry=1920, height=height@entry=1200) at /src/xorg-server-1.15.0/src/fb/fbfill.c:43
#20 0x00007fb8bd1d5328 in fbPolyFillRect (pDrawable=0x11ae0c0, pGC=0x11ada00, nrect=<optimized out>, prect=0x127a5a8) at /src/xorg-server-1.15.0/src/fb/fbfillrect.c:72
#21 0x0000000000507ae0 in damagePolyFillRect (pDrawable=0x11ae0c0, pGC=0x11ada00, nRects=1, pRects=<optimized out>) at /src/xorg-server-1.15.0/src/miext/damage/damage.c:1194
#22 0x0000000000557968 in miPaintWindow (pWin=<optimized out>, pWin@entry=0x11ae0c0, prgn=prgn@entry=0x7fff1ad88f80, what=what@entry=0) at /src/xorg-server-1.15.0/src/mi/miexpose.c:641
#23 0x000000000055821f in miWindowExposures (pWin=0x11ae0c0, prgn=0x7fff1ad88f80, other_exposed=0x0) at /src/xorg-server-1.15.0/src/mi/miexpose.c:470
#24 0x000000000045f129 in MapWindow (pWin=0x11ae0c0, client=<optimized out>) at /src/xorg-server-1.15.0/src/dix/window.c:2604
#25 0x000000000043871f in dix_main (argc=3, argv=0x7fff1ad89108, envp=<optimized out>) at /src/xorg-server-1.15.0/src/dix/main.c:261
#26 0x00007fb8c0871bb5 in __libc_start_main (main=0x424390 <main>, argc=3, argv=0x7fff1ad89108, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff1ad890f8) at libc-start.c:269
#27 0x00000000004243c1 in _start () at ../sysdeps/x86_64/start.S:122
Comment 7 Dq8CokMHloQZw 2019-09-14 18:37:39 UTC
Created attachment 145365 [details] [review]
debug patch

I'm using latest git and this issue is still true.

Using debug patch attached.

Section "Device"
  Identifier "Device0" 
  Driver "radeon" 
  BusID       "PCI:0:1:0"  
  Option "DRI" "3" 
	Option      "DRI3"    "1" 
  Option "AccelMethod" "EXA" #note: not Glamor, it (sortof)works with Glamor see this: https://bugs.freedesktop.org/show_bug.cgi?id=111687
  Option  "EXAVSync" "on" 
  Option  "RenderAccel"           "on"  
  Option  "ColorTiling"           "on"  
  Option "ColorTiling2D" "on"
  Option  "EXAPixmaps"            "on"  
  Option  "AccelDFS"              "on"  
  Option "SwapbuffersWait" "true"
  Option  "EnablePageFlip"        "on"  
  Option  "SWcursor"              "off" 
  Option "MigrationHeuristic" "greedy" 
  Option "Backlight" "radeon_bl" 
  Option "ShadowPrimary" "on"
	Option "TearFree" "on"
EndSection
Section "DRI"
  Group "video"
  Mode 0666
EndSection


[ 12355.048] (**) Option "xkb_options" "terminate:ctrl_alt_bksp,numpad:microsoft"
[ 12355.661] (WW) RADEON(0): 22222222 this should happen second
[ 12355.661] (EE) 
[ 12355.661] (EE) Backtrace:
[ 12355.661] (EE) 0: /usr/lib/Xorg (xorg_backtrace+0x4d) [0x563bfc06c69d]
[ 12355.661] (EE) 1: /usr/lib/Xorg (0x563bfbfba000+0xa8be8) [0x563bfc062be8]
[ 12355.661] (EE) 2: /usr/lib/libc.so.6 (0x7fbade3ad000+0x3c1b0) [0x7fbade3e91b0]
[ 12355.661] (EE) 3: /usr/lib/libc.so.6 (gsignal+0xa8) [0x7fbade3e9108]
[ 12355.662] (EE) 4: /usr/lib/libc.so.6 (abort+0x12b) [0x7fbade3d2990]
[ 12355.662] (EE) 5: /usr/lib/libc.so.6 (0x7fbade3ad000+0x25857) [0x7fbade3d2857]
[ 12355.662] (EE) 6: /usr/lib/libc.so.6 (0x7fbade3ad000+0x34506) [0x7fbade3e1506]
[ 12355.662] (EE) 7: /usr/lib/xorg/modules/drivers/radeon_drv.so (0x7fbadcc00000
+0x4f57e) [0x7fbadcc4f57e]
[ 12355.662] (EE) 8: /usr/lib/Xorg (0x563bfbfba000+0x112651) [0x563bfc0cc651]
[ 12355.662] (EE) 9: /usr/lib/Xorg (0x563bfbfba000+0x116367) [0x563bfc0d0367]
[ 12355.662] (EE) 10: /usr/lib/Xorg (0x563bfbfba000+0x1194e0) [0x563bfc0d34e0]
[ 12355.662] (EE) 11: /usr/lib/Xorg (0x563bfbfba000+0x116dd3) [0x563bfc0d0dd3]
[ 12355.662] (EE) 12: /usr/lib/Xorg (0x563bfbfba000+0x38088) [0x563bfbff2088]
[ 12355.662] (EE) 13: /usr/lib/libc.so.6 (__libc_start_main+0xf6) [0x7fbade3d4236]
[ 12355.662] (EE) 14: /usr/lib/Xorg (_start+0x2e) [0x563bfbff23be]
[ 12355.662] (EE) 
[ 12355.662] (EE) 
Fatal server error:
[ 12355.662] (EE) Caught signal 6 (Aborted). Server aborting
[ 12355.662] (EE) 


$ coredumpctl -r gdb
           PID: 590503 (Xorg)
           UID: 1000 (user)
           GID: 1000 (user)
        Signal: 6 (ABRT)
     Timestamp: Sat 2019-09-14 19:55:04 CEST (41min ago)
  Command Line: /usr/lib/Xorg -nolisten tcp :0 vt1 -keeptty -auth /tmp/serverauth.IlmiRkC2z1
    Executable: /usr/lib/Xorg
 Control Group: /user.slice/user-1000.slice/session-c1.scope
          Unit: session-c1.scope
         Slice: user-1000.slice
       Session: c1
     Owner UID: 1000 (user)
       Boot ID: c48fdac020f14c3888142b1a25919bd4
    Machine ID: d5085e3ae51043e897b15a1939322324
      Hostname: Z575
       Storage: /var/lib/systemd/coredump/core.Xorg.1000.c48fdac020f14c3888142b1a25919bd4.590503.1568483704000000000000
       Message: Process 590503 (Xorg) of user 1000 dumped core.
                
                Stack trace of thread 590503:
                #0  0x00007fbade3e9108 __GI_raise (libc.so.6)
                #1  0x00007fbade3d2990 __GI_abort (libc.so.6)
                #2  0x0000563bfc05bc5a OsAbort (Xorg)
                #3  0x0000563bfc05f421 FatalError (Xorg)
                #4  0x0000563bfc062c52 n/a (Xorg)
                #5  0x00007fbade3e91b0 __restore_rt (libc.so.6)
                #6  0x00007fbade3e9108 __GI_raise (libc.so.6)
                #7  0x00007fbade3d2990 __GI_abort (libc.so.6)
                #8  0x00007fbade3d2857 __assert_fail_base (libc.so.6)
                #9  0x00007fbade3e1506 __GI___assert_fail (libc.so.6)
                #10 0x00007fbadcc4f57e dixGetPrivateAddr (radeon_drv.so)
                #11 0x0000563bfc0cc651 n/a (Xorg)
                #12 0x0000563bfc0d0367 n/a (Xorg)
                #13 0x0000563bfc0d34e0 n/a (Xorg)
                #14 0x0000563bfc0d0dd3 n/a (Xorg)
                #15 0x0000563bfbff2088 n/a (Xorg)
                #16 0x00007fbade3d4236 __libc_start_main (libc.so.6)
                #17 0x0000563bfbff23be _start (Xorg)
                
                Stack trace of thread 590505:
                #0  0x00007fbaddc51f9b futex_wait_cancelable (libpthread.so.0)
                #1  0x00007fbadc16b9dc n/a (r600_dri.so)
                #2  0x00007fbadc16b5d8 n/a (r600_dri.so)
                #3  0x00007fbaddc4b5bf start_thread (libpthread.so.0)
                #4  0x00007fbade4af0d3 __clone (libc.so.6)
                
                Stack trace of thread 590504:
                #0  0x00007fbaddc51f9b futex_wait_cancelable (libpthread.so.0)
                #1  0x00007fbadc16b9dc n/a (r600_dri.so)
                #2  0x00007fbadc16b5d8 n/a (r600_dri.so)
                #3  0x00007fbaddc4b5bf start_thread (libpthread.so.0)
                #4  0x00007fbade4af0d3 __clone (libc.so.6)

GNU gdb (GDB) 8.3.50.20190909-git
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
State of pagination is off.
Reading symbols from /usr/lib/Xorg...
(No debugging symbols found in /usr/lib/Xorg)
[New LWP 590503]
[New LWP 590505]
[New LWP 590504]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
bt
Core was generated by `/usr/lib/Xorg -nolisten tcp :0 vt1 -keeptty -auth /tmp/serverauth.IlmiRkC2z1'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50
50	  return ret;
[Current thread is 1 (Thread 0x7fbadd043dc0 (LWP 590503))]
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007fbade3d2990 in __GI_abort () at abort.c:79
#2  0x0000563bfc05bc5a in  ()
#3  0x0000563bfc05f421 in FatalError ()
#4  0x0000563bfc062c52 in  ()
#5  0x00007fbade3e91b0 in <signal handler called> () at /usr/lib/libc.so.6
#6  __GI_raise (sig=sig@entry=6) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50
#7  0x00007fbade3d2990 in __GI_abort () at abort.c:79
#8  0x00007fbade3d2857 in __assert_fail_base (fmt=0x7fbade53fd68 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7fbadcc66181 "key->initialized", file=0x7fbadcc66155 "/usr/include/xorg/privates.h", line=<optimized out>, function=<optimized out>) at assert.c:92
#9  0x00007fbade3e1506 in __GI___assert_fail (assertion=assertion@entry=0x7fbadcc66181 "key->initialized", file=file@entry=0x7fbadcc66155 "/usr/include/xorg/privates.h", line=line@entry=121, function=function@entry=0x7fbadcc6cef0 <__PRETTY_FUNCTION__.10813> "dixGetPrivateAddr") at assert.c:101
#10 0x00007fbadcc4f57e in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>, privates=<optimized out>) at /usr/include/xorg/privates.h:121
#11 dixGetPrivate (key=<optimized out>, privates=<optimized out>) at /usr/include/xorg/privates.h:136
#12 radeon_get_pixmap_private (pixmap=<optimized out>) at radeon.h:325
#13 radeon_present_check_flip (crtc=<optimized out>, window=<optimized out>, pixmap=0x563bfe608920, sync_flip=<optimized out>) at radeon_present.c:259
#14 0x0000563bfc0cc651 in  ()
#15 0x0000563bfc0d0367 in  ()
#16 0x0000563bfc0d34e0 in  ()
#17 0x0000563bfc0d0dd3 in  ()
#18 0x0000563bfbff2088 in  ()
#19 0x00007fbade3d4236 in __libc_start_main (main=0x563bfbff1390, argc=8, argv=0x7fffafaef428, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffafaef418) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/csu/libc-start.c:308
#20 0x0000563bfbff23be in _start ()
(gdb) bt full
#0  __GI_raise (sig=sig@entry=6) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50
        set = {__val = {171515904, 140736140862792, 140736140862952, 140736140862816, 0, 0, 895, 0, 94815631322048, 844420635172768, 0, 0, 0, 0, 0, 0}}
        pid = <optimized out>
        tid = <optimized out>
#1  0x00007fbade3d2990 in __GI_abort () at abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 834766592, sa_restorer = 0x0}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x0000563bfc05bc5a in  ()
#3  0x0000563bfc05f421 in FatalError ()
#4  0x0000563bfc062c52 in  ()
#5  0x00007fbade3e91b0 in <signal handler called> () at /usr/lib/libc.so.6
#6  __GI_raise (sig=sig@entry=6) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50
        set = {__val = {0, 140440569561092, 4222451712, 94815669345264, 94815669345264, 94815669345264, 94815669345264, 94815669345360, 94815669345364, 94815669345264, 94815669345364, 0, 0, 0, 0, 0}}
        pid = <optimized out>
        tid = <optimized out>
#7  0x00007fbade3d2990 in __GI_abort () at abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x563bfe4a5bf0, sa_sigaction = 0x563bfe4a5bf0}, sa_mask = {__val = {0, 94815669345264, 0, 47496561668, 0, 4, 0, 0, 140440570675576, 21474836480, 0, 140736140864960, 5395134641562814208, 0, 140440524173312, 140440570690920}}, sa_flags = -590978731, sa_restorer = 0x7fbadcc66181}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#8  0x00007fbade3d2857 in __assert_fail_base (fmt=0x7fbade53fd68 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7fbadcc66181 "key->initialized", file=0x7fbadcc66155 "/usr/include/xorg/privates.h", line=<optimized out>, function=<optimized out>) at assert.c:92
        str = 0x563bfe4a5bf0 "\200a`\376;V"
        total = 4096
#9  0x00007fbade3e1506 in __GI___assert_fail (assertion=assertion@entry=0x7fbadcc66181 "key->initialized", file=file@entry=0x7fbadcc66155 "/usr/include/xorg/privates.h", line=line@entry=121, function=function@entry=0x7fbadcc6cef0 <__PRETTY_FUNCTION__.10813> "dixGetPrivateAddr") at assert.c:101
#10 0x00007fbadcc4f57e in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>, privates=<optimized out>) at /usr/include/xorg/privates.h:121
        __PRETTY_FUNCTION__ = "dixGetPrivateAddr"
        __PRETTY_FUNCTION__ = "dixGetPrivate"
        xf86_crtc = <optimized out>
        screen = <optimized out>
        scrn = 0x563bfe0de080
        priv = <optimized out>
        config = <optimized out>
        info = <optimized out>
        screen_pixmap = <optimized out>
        num_crtcs_on = <optimized out>
        i = <optimized out>
#11 dixGetPrivate (key=<optimized out>, privates=<optimized out>) at /usr/include/xorg/privates.h:136
        __PRETTY_FUNCTION__ = "dixGetPrivate"
        xf86_crtc = <optimized out>
        screen = <optimized out>
        scrn = 0x563bfe0de080
        priv = <optimized out>
        config = <optimized out>
        info = <optimized out>
        screen_pixmap = <optimized out>
        num_crtcs_on = <optimized out>
        i = <optimized out>
#12 radeon_get_pixmap_private (pixmap=<optimized out>) at radeon.h:325
        xf86_crtc = <optimized out>
        screen = <optimized out>
        scrn = 0x563bfe0de080
        priv = <optimized out>
        config = <optimized out>
        info = <optimized out>
        screen_pixmap = <optimized out>
        num_crtcs_on = <optimized out>
        i = <optimized out>
#13 radeon_present_check_flip (crtc=<optimized out>, window=<optimized out>, pixmap=0x563bfe608920, sync_flip=<optimized out>) at radeon_present.c:259
        xf86_crtc = <optimized out>
        screen = <optimized out>
        scrn = 0x563bfe0de080
        priv = <optimized out>
        config = <optimized out>
        info = <optimized out>
        screen_pixmap = <optimized out>
        num_crtcs_on = <optimized out>
        i = <optimized out>
#14 0x0000563bfc0cc651 in  ()
#15 0x0000563bfc0d0367 in  ()
#16 0x0000563bfc0d34e0 in  ()
#17 0x0000563bfc0d0dd3 in  ()
#18 0x0000563bfbff2088 in  ()
#19 0x00007fbade3d4236 in __libc_start_main (main=0x563bfbff1390, argc=8, argv=0x7fffafaef428, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffafaef418) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/csu/libc-start.c:308
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 7252580439678069739, 94815630861200, 140736140866592, 0, 0, 3976379449421933547, 4009350656480586731}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x7fffafaef470, 0x7fbade5cd120}, data = {prev = 0x0, cleanup = 0x0, canceltype = -1347488656}}}
        not_first_call = <optimized out>
#20 0x0000563bfbff23be in _start ()
(gdb) bt2
#0  __GI_raise (sig=sig@entry=6) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50
50	  return ret;
#1  0x00007fbade3d2990 in __GI_abort () at abort.c:79
79	      raise (SIGABRT);
#2  0x0000563bfc05bc5a in OsAbort ()
#3  0x0000563bfc05f421 in FatalError ()
#4  0x0000563bfc062c52 in ?? ()
#5  <signal handler called>
#6  __GI_raise (sig=sig@entry=6) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50
50	  return ret;
#7  0x00007fbade3d2990 in __GI_abort () at abort.c:79
79	      raise (SIGABRT);
#8  0x00007fbade3d2857 in __assert_fail_base (fmt=0x7fbade53fd68 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7fbadcc66181 "key->initialized", file=0x7fbadcc66155 "/usr/include/xorg/privates.h", line=<optimized out>, function=<optimized out>) at assert.c:92
92	  abort ();
#9  0x00007fbade3e1506 in __GI___assert_fail (assertion=assertion@entry=0x7fbadcc66181 "key->initialized", file=file@entry=0x7fbadcc66155 "/usr/include/xorg/privates.h", line=line@entry=121, function=function@entry=0x7fbadcc6cef0 <__PRETTY_FUNCTION__.10813> "dixGetPrivateAddr") at assert.c:101
101	  __assert_fail_base (_("%s%s%s:%u: %s%sAssertion `%s' failed.\n%n"),
#10 0x00007fbadcc4f57e in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>, privates=<optimized out>) at /usr/include/xorg/privates.h:121
121	    assert(key->initialized);
#11 dixGetPrivate (key=<optimized out>, privates=<optimized out>) at /usr/include/xorg/privates.h:136
136	    return *(void **) dixGetPrivateAddr(privates, key);
#12 radeon_get_pixmap_private (pixmap=<optimized out>) at radeon.h:325
325		return dixGetPrivate(&pixmap->devPrivates, &glamor_pixmap_index);
#13 radeon_present_check_flip (crtc=<optimized out>, window=<optimized out>, pixmap=0x563bfe608920, sync_flip=<optimized out>) at radeon_present.c:259
259	    struct radeon_pixmap *priv = radeon_get_pixmap_private(pixmap);
#14 0x0000563bfc0cc651 in ?? ()
#15 0x0000563bfc0d0367 in ?? ()
#16 0x0000563bfc0d34e0 in ?? ()
#17 0x0000563bfc0d0dd3 in ?? ()
#18 0x0000563bfbff2088 in ?? ()
#19 0x00007fbade3d4236 in __libc_start_main (main=0x563bfbff1390, argc=8, argv=0x7fffafaef428, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffafaef418) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/csu/libc-start.c:308
308	      result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
#20 0x0000563bfbff23be in _start ()
(gdb) bt3
#0  __GI_raise (sig=sig@entry=6) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50
0x7fbade3e9108 is in __GI_raise (/home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50).
45	
46	  int ret = INLINE_SYSCALL (tgkill, 3, pid, tid, sig);
47	
48	  __libc_signal_restore_set (&set);
49	
50	  return ret;
51	}
52	libc_hidden_def (raise)
53	weak_alias (raise, gsignal)
#1  0x00007fbade3d2990 in __GI_abort () at abort.c:79
0x7fbade3d2990 is in __GI_abort (abort.c:81).
76	      stage = 0;
77	      __libc_lock_unlock_recursive (lock);
78	
79	      raise (SIGABRT);
80	
81	      __libc_lock_lock_recursive (lock);
82	      stage = save_stage + 1;
83	    }
84	
85	  /* There was a handler installed.  Now remove it.  */
#2  0x0000563bfc05bc5a in OsAbort ()
#3  0x0000563bfc05f421 in FatalError ()
#4  0x0000563bfc062c52 in ?? ()
#5  <signal handler called>
#6  __GI_raise (sig=sig@entry=6) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50
0x7fbade3e9108 is in __GI_raise (/home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/sysdeps/unix/sysv/linux/raise.c:50).
45	
46	  int ret = INLINE_SYSCALL (tgkill, 3, pid, tid, sig);
47	
48	  __libc_signal_restore_set (&set);
49	
50	  return ret;
51	}
52	libc_hidden_def (raise)
53	weak_alias (raise, gsignal)
#7  0x00007fbade3d2990 in __GI_abort () at abort.c:79
0x7fbade3d2990 is in __GI_abort (abort.c:81).
76	      stage = 0;
77	      __libc_lock_unlock_recursive (lock);
78	
79	      raise (SIGABRT);
80	
81	      __libc_lock_lock_recursive (lock);
82	      stage = save_stage + 1;
83	    }
84	
85	  /* There was a handler installed.  Now remove it.  */
#8  0x00007fbade3d2857 in __assert_fail_base (fmt=0x7fbade53fd68 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7fbadcc66181 "key->initialized", file=0x7fbadcc66155 "/usr/include/xorg/privates.h", line=<optimized out>, function=<optimized out>) at assert.c:92
#9  0x00007fbade3e1506 in __GI___assert_fail (assertion=assertion@entry=0x7fbadcc66181 "key->initialized", file=file@entry=0x7fbadcc66155 "/usr/include/xorg/privates.h", line=line@entry=121, function=function@entry=0x7fbadcc6cef0 <__PRETTY_FUNCTION__.10813> "dixGetPrivateAddr") at assert.c:101
#10 0x00007fbadcc4f57e in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>, privates=<optimized out>) at /usr/include/xorg/privates.h:121
0x7fbadcc4f57e is in radeon_present_check_flip (/usr/include/xorg/privates.h:135).
130	 * no pre-defined storage
131	 */
132	static inline void *
133	dixGetPrivate(PrivatePtr *privates, const DevPrivateKey key)
134	{
135	    assert(key->size == 0);
136	    return *(void **) dixGetPrivateAddr(privates, key);
137	}
138	
139	/*
#11 dixGetPrivate (key=<optimized out>, privates=<optimized out>) at /usr/include/xorg/privates.h:136
0x7fbadcc4f57e is in radeon_present_check_flip (/usr/include/xorg/privates.h:135).
130	 * no pre-defined storage
131	 */
132	static inline void *
133	dixGetPrivate(PrivatePtr *privates, const DevPrivateKey key)
134	{
135	    assert(key->size == 0);
136	    return *(void **) dixGetPrivateAddr(privates, key);
137	}
138	
139	/*
#12 radeon_get_pixmap_private (pixmap=<optimized out>) at radeon.h:325
0x7fbadcc4f57e is in radeon_present_check_flip (/usr/include/xorg/privates.h:135).
130	 * no pre-defined storage
131	 */
132	static inline void *
133	dixGetPrivate(PrivatePtr *privates, const DevPrivateKey key)
134	{
135	    assert(key->size == 0);
136	    return *(void **) dixGetPrivateAddr(privates, key);
137	}
138	
139	/*
#13 radeon_present_check_flip (crtc=<optimized out>, window=<optimized out>, pixmap=0x563bfe608920, sync_flip=<optimized out>) at radeon_present.c:259
0x7fbadcc4f57e is in radeon_present_check_flip (/usr/include/xorg/privates.h:135).
130	 * no pre-defined storage
131	 */
132	static inline void *
133	dixGetPrivate(PrivatePtr *privates, const DevPrivateKey key)
134	{
135	    assert(key->size == 0);
136	    return *(void **) dixGetPrivateAddr(privates, key);
137	}
138	
139	/*
#14 0x0000563bfc0cc651 in ?? ()
#15 0x0000563bfc0d0367 in ?? ()
#16 0x0000563bfc0d34e0 in ?? ()
#17 0x0000563bfc0d0dd3 in ?? ()
#18 0x0000563bfbff2088 in ?? ()
#19 0x00007fbade3d4236 in __libc_start_main (main=0x563bfbff1390, argc=8, argv=0x7fffafaef428, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffafaef418) at /home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/csu/libc-start.c:308
0x7fbade3d4236 is in __libc_start_main (/home/user/build/1packages/4used/glibc/makepkg_pacman/glibc/src/glibc/csu/libc-start.c:342).
337	#else
338	  /* Nothing fancy, just call the function.  */
339	  result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
340	#endif
341	
342	  exit (result);
343	}
#20 0x0000563bfbff23be in _start ()
(gdb) 


I haven't tested possible fix yet, will report afterwards...
Comment 8 Dq8CokMHloQZw 2019-09-14 18:58:14 UTC
the possible fix patch that's attached to this thread (in 2014) doesn't work for me on this issue, even though I applied it (it doesn't apply cleanly on latest git).

However, I noticed that if I turn off vsync via `vsync off` (see script mentioned in bug 111687), then I install latest xf86-video-ati git, then exit Xorg, then startx, it doesn't crash on startup! However, if I dare do `vsync auto` (to turn on vsync without restarting X or xfwm4) then it instantly crashes in the same place(apparently) as before.
Comment 9 Dq8CokMHloQZw 2019-09-16 16:42:17 UTC
Created attachment 145380 [details]
full Xorg.0.log of the crash but with ShadowPrimary off (doesn't matter tho)

as per this request https://bugs.freedesktop.org/show_bug.cgi?id=111687#c2
I'm attaching full Xorg.0.log to this issue also.

The only thing that's changed since Comment 7 is that ShadowPrimary is now off
but the crash seems to be the same.
Comment 10 Dq8CokMHloQZw 2019-09-16 16:46:04 UTC
As the title of this issue says, if I simply replace DRI3 with DRI2, no crashes!

so replacing these 2 lines:

Option "DRI" "3" #dri3 enabled with this line! in arch linux
Option      "DRI3"    "1"

with this line:

Option "DRI" "2"
Comment 11 Martin Peres 2019-11-19 07:44:57 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati/issues/94.

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.