Crash related to subsurfaces
When testing the new language popup, crashes seem to happen often.
Most likely scenario:
- start keyboard
- open popup
- stop keyboard (?)
- start keyboard again
Thread 1 (Thread 0x7ffff5fd7500 (LWP 2054)):
#0 0x000000000045af40 in wlr_output_transformed_resolution (output=output@entry=0x16, width=width@entry=0x7fffffffdc48, height=height@entry=0x7fffffffdc4c) at ../phoc/subprojects/wlroots/types/wlr_output.c:365
#1 0x000000000045b072 in wlr_output_effective_resolution (output=0x16, width=width@entry=0x7fffffffdc48, height=height@entry=0x7fffffffdc4c) at ../phoc/subprojects/wlroots/types/wlr_output.c:376
#2 0x0000000000417c12 in get_surface_box (surface_box=0x7fffffffdc10, sy=11256928, sx=-8960, surface=0xabc460, data=0x7fffffffdd00) at ../phoc/src/output.c:85
sw = <optimized out>
_sy = 0
box = {x = 14, y = 501, width = 146, height = 148}
rotated_box = {x = 14, y = 501, width = 146, height = 148}
output = 0xa126d0
sh = 148
_sx = 0
output_box = {x = 0, y = 0, width = 0, height = 0}
intersection = {x = -8736, y = 32767, width = -8944, height = 32767}
data = 0x7fffffffdd00
box = {x = 14, y = 501, width = 146, height = 148}
intersects = <optimized out>
#3 0x0000000000417c12 in output_for_each_surface_iterator (surface=surface@entry=0xabc460, sx=sx@entry=0, sy=sy@entry=0, _data=_data@entry=0x7fffffffdd00) at ../phoc/src/output.c:97
data = 0x7fffffffdd00
box = {x = 14, y = 501, width = 146, height = 148}
intersects = <optimized out>
#4 0x000000000045fa5a in surface_for_each_surface (surface=0xabc460, x=x@entry=0, y=y@entry=0, iterator=iterator@entry=0x417ae0 <output_for_each_surface_iterator>, user_data=user_data@entry=0x7fffffffdd00) at ../phoc/subprojects/wlroots/types/wlr_surface.c:1069
subsurface = <optimized out>
#5 0x00000000004617cf in wlr_surface_for_each_surface (surface=<optimized out>, iterator=iterator@entry=0x417ae0 <output_for_each_surface_iterator>, user_data=user_data@entry=0x7fffffffdd00) at ../phoc/subprojects/wlroots/types/wlr_surface.c:1084
#6 0x00000000004188b6 in output_surface_for_each_surface (user_data=0x7fffffffdcff, iterator=0x4184a0 <damage_surface_iterator>, oy=<optimized out>, ox=<optimized out>, surface=<optimized out>, output=<optimized out>) at ../phoc/src/output.c:120
data = {user_iterator = 0x4184a0 <damage_surface_iterator>, user_data = 0x7fffffffdcff, output = 0xa126d0, ox = 14, oy = 501, width = 146, height = 148, rotation = 0}
whole = true
#7 0x00000000004188b6 in output_damage_whole_local_surface (output=<optimized out>, surface=<optimized out>, ox=<optimized out>, oy=<optimized out>) at ../phoc/src/output.c:397
whole = true
#8 0x000000000041648b in subsurface_damage (subsurface=subsurface@entry=0xa96d60, whole=whole@entry=true) at ../phoc/src/layer_shell.c:590
layer = <optimized out>
wlr_output = <optimized out>
output = <optimized out>
ox = <optimized out>
oy = <optimized out>
#9 0x000000000041662f in subsurface_handle_unmap (listener=0xa96d90, data=<optimized out>) at ../phoc/src/layer_shell.c:608
server = 0x4b3400
subsurface = 0xa96d60
#10 0x000000000046577c in wlr_signal_emit_safe (signal=signal@entry=0x8d9a98, data=data@entry=0x8d9940) at ../phoc/subprojects/wlroots/util/signal.c:29
pos = 0xa96d90
l = 0xa96d90
cursor = {link = {prev = 0xa96d90, next = 0x7fffffffdd90}, notify = 0x465700 <handle_noop>}
end = {link = {prev = 0x7fffffffdd70, next = 0x8d9a98}, notify = 0x465700 <handle_noop>}
#11 0x0000000000460018 in subsurface_unmap (subsurface=subsurface@entry=0x8d9940) at ../phoc/subprojects/wlroots/types/wlr_surface.c:850
child = <optimized out>
#12 0x00000000004600de in subsurface_unmap (subsurface=0x8d9940) at ../phoc/subprojects/wlroots/types/wlr_surface.c:918
subsurface = 0x8d9940
#13 0x00000000004600de in subsurface_handle_parent_destroy (listener=0x8d9a60, data=<optimized out>) at ../phoc/subprojects/wlroots/types/wlr_surface.c:918
subsurface = 0x8d9940
#14 0x000000000046577c in wlr_signal_emit_safe (signal=signal@entry=0xa44d30, data=data@entry=0xa44a70) at ../phoc/subprojects/wlroots/util/signal.c:29
pos = 0x8d9a60
l = 0x8d9a60
cursor = {link = {prev = 0x8d9a60, next = 0x6783f0}, notify = 0x465700 <handle_noop>}
end = {link = {prev = 0x6783f0, next = 0xa44d30}, notify = 0x465700 <handle_noop>}
#15 0x0000000000460588 in surface_handle_resource_destroy (resource=<optimized out>) at ../phoc/subprojects/wlroots/types/wlr_surface.c:567
surface = 0xa44a70
#16 0x00007ffff7258856 in () at /lib64/libwayland-server.so.0
#17 0x00007ffff725cc42 in () at /lib64/libwayland-server.so.0
#18 0x00007ffff725d183 in () at /lib64/libwayland-server.so.0
#19 0x00007ffff72589d1 in wl_client_destroy () at /lib64/libwayland-server.so.0
#20 0x00007ffff7258aad in () at /lib64/libwayland-server.so.0
#21 0x00007ffff725a2e2 in wl_event_loop_dispatch () at /lib64/libwayland-server.so.0
#22 0x00000000004176a7 in wayland_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../phoc/src/main.c:48
source = <optimized out>
loop = <optimized out>
#23 0x00007ffff7c7806d in g_main_dispatch (context=0x666880) at gmain.c:3182
dispatch = 0x417690 <wayland_event_source_dispatch>
prev_source = 0x0
was_in_call = 0
user_data = 0x0
callback = 0x0
cb_funcs = 0x0
cb_data = 0x0
need_destroy = <optimized out>
source = 0x8cc4f0
current = 0x8c60a0
i = 0
__func__ = "g_main_dispatch"
#24 0x00007ffff7c7806d in g_main_context_dispatch (context=context@entry=0x666880) at gmain.c:3847
#25 0x00007ffff7c78438 in g_main_context_iterate (context=0x666880, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3920
max_priority = 2147483647
timeout = -1
some_ready = 1
nfds = <optimized out>
allocated_nfds = 2
fds = 0x7c0830
#26 0x00007ffff7c78762 in g_main_loop_run (loop=0x8d62a0) at gmain.c:4116
__func__ = "g_main_loop_run"
#27 0x000000000040fa6b in main (argc=<optimized out>, argv=<optimized out>) at ../phoc/src/main.c:197
loop = 0x8d62a0
server = 0x4b3400
__PRETTY_FUNCTION__ = "main"
socket = <optimized out>