xorg-server-1.20.{7,8} crash with dixGetPrivateAddr: Assertion `key->initialized' failed when starting spice-gtk
From downstream bug report: https://bugs.gentoo.org/729036
Starting /usr/bin/spicy from spice-gtk-0.37 immediately crashes the Xorg server:
X: ../../../include/privates.h:121: dixGetPrivateAddr: Assertion `key->initialized' failed.
From the GDB log:
X: ../../../include/privates.h:121: dixGetPrivateAddr: Assertion `key->initialized' failed.
Thread 1 "X" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
set =
{__val = {0, 140737348803552, 18384884767774310400, 93825004694704, 93825004694704, 93825004694704, 93825004694704, 93825004694796, 93825004694804, 93825004694704, 93825004694804, 0, 0, 0, 0, 0}}
pid = <optimized out>
tid = <optimized out>
#1 0x00007ffff7a9155d in __GI_abort () at abort.c:79
save_stage = 1
act =
{__sigaction_handler = {sa_handler = 0x555556136cb0, sa_sigaction = 0x555556136cb0}, sa_mask = {__val = {0, 93825004694704, 92, 140737349893260, 47244640784, 0, 0, 0, 21474836480, 140737488346096, 0, 140737349916080, 18285507533332519680, 0, 140737340698624, 140737349900920}}, sa_flags = 1433528956, sa_restorer = 0x55555571a0a6}
sigs = {__val = {32, 0 <repeats 15 times>}}
#2 0x00007ffff7a91431 in __assert_fail_base
(fmt=0x7ffff7bf5a78 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55555571a0a6 "key->initialized", file=0x55555571ea7c "../../../include/privates.h", line=<optimized out>, function=<optimized out>) at assert.c:92
str = 0x555556136cb0 " )\023VUU"
total = 4096
#3 0x00007ffff7aa0442 in __GI___assert_fail
(assertion=assertion@entry=0x55555571a0a6 "key->initialized", file=file@entry=0x55555571ea7c "../../../include/privates.h", line=line@entry=121, function=function@entry=0x55555573d720 <__PRETTY_FUNCTION__.7> "dixGetPrivateAddr")
at assert.c:101
#4 0x00005555556d34f5 in dixGetPrivateAddr
(key=0x5555557b8ba0 <dri2ClientPrivateKeyRec>, privates=0x555555838060)
at ../../../include/privates.h:121
__PRETTY_FUNCTION__ = "dixGetPrivateAddr"
#5 0x00005555556d583c in dixGetPrivateAddr
(key=<optimized out>, privates=<optimized out>) at dri2.c:1371
__PRETTY_FUNCTION__ = "dixGetPrivateAddr"
ds = <optimized out>
dri2_client = <optimized out>
primescreen = <optimized out>
#6 dixLookupPrivate (key=<optimized out>, privates=<optimized out>)
at ../../../include/privates.h:164
ds = <optimized out>
dri2_client = <optimized out>
primescreen = <optimized out>
#7 DRI2Authenticate
(client=client@entry=0x555556162ea0, pScreen=0x555555837ff0, magic=1)
at dri2.c:1367
ds = <optimized out>
dri2_client = <optimized out>
primescreen = <optimized out>
#8 0x00005555556d65d2 in ProcDRI2Authenticate (client=0x555556162ea0)
at dri2ext.c:152
stuff = 0x555555f941f0
rep =
{type = 0 '\000', pad1 = 0 '\000', sequenceNumber = 0, length = 0, authenticated = 1433434916, pad2 = 21845, pad3 = 1444294304, pad4 = 359, pad5 = 1, pad6 = 0}
pDraw = 0x555555910a70
status = 0
stuff = 0x555555f941f0
#9 ProcDRI2Dispatch (client=0x555556162ea0) at dri2ext.c:609
stuff = 0x555555f941f0
#10 0x00005555555abffd in Dispatch () at dispatch.c:478
result = <optimized out>
client = 0x555556162ea0
start_tick = 235
#11 0x00005555555b0113 in dix_main
(argc=13, argv=0x7fffffffdf98, envp=<optimized out>) at main.c:276
i = <optimized out>
alwaysCheckForInput = {0, 1}
#12 0x00007ffff7a92d6b in __libc_start_main (main=
0x555555599730 <main>, argc=13, argv=0x7fffffffdf98, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdf88)
at ../csu/libc-start.c:308
result = <optimized out>
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {0, 4918808907280168905, 93824992515904, 140737488347024, 0, 0, 1231254831528032201, 1231271685478430665}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x7fffffffe008, 0x7ffff7ffe130}, data = {prev = 0x0, cleanup = 0x0, canceltype = -8184}}}
not_first_call = <optimized out>
#13 0x000055555559976a in _start () at dri2ext.c:659
(EE)
(EE) Backtrace:
(EE) 0: /usr/bin/X (OsLookupColor+0x135) [0x555555708f95]
(EE) 1: /lib64/libc.so.6 (killpg+0x40) [0x7ffff7aa7e3f]
(EE) 2: /lib64/libc.so.6 (gsignal+0x141) [0x7ffff7aa7d81]
(EE) 3: /lib64/libc.so.6 (abort+0x127) [0x7ffff7a9155d]
(EE) unw_get_proc_name failed: no unwind info found [-10]
(EE) 4: /lib64/libc.so.6 (?+0x0) [0x7ffff7a91422]
(EE) 5: /lib64/libc.so.6 (__assert_fail+0x42) [0x7ffff7aa0442]
(EE) 6: /usr/bin/X (DRIMoveBuffersHelper+0xc85) [0x5555556d4155]
(EE) 7: /usr/bin/X (DRI2Authenticate+0xec) [0x5555556d583c]
(EE) 8: /usr/bin/X (DRI2GetParam+0x6c2) [0x5555556d6962]
(EE) 9: /usr/bin/X (SendErrorToClient+0x35d) [0x5555555ac05d]
(EE) 10: /usr/bin/X (InitFonts+0x3a3) [0x5555555b0153]
(EE) 11: /lib64/libc.so.6 (__libc_start_main+0xeb) [0x7ffff7a92d6b]
(EE) 12: /usr/bin/X (_start+0x2a) [0x55555559976a]
(EE)
(EE)
Fatal server error:
(EE) Caught signal 6 (Aborted). Server aborting
(EE)
(EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE)
(EE) Server terminated with error (1). Closing log file.
Thread 1 "X" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 in ../sysdeps/unix/sysv/linux/raise.c