translate + outset shadow = assertion (on arm64/pinephone)
Steps to reproduce
On a Pinephone (Mali-860T GPU) running Mobian (Debian Derivative) I can run into one of two failed assertions
Gsk:ERROR:../../../gsk/gl/gskglcommandqueue.c:1276:gsk_gl_command_queue_create_render_target: assertion failed (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE): (0x00008cd4 == 0x00008cd5)
or
Gsk:ERROR:../../../gsk/gl/gskglcommandqueue.c:1276:gsk_gl_command_queue_create_render_target: assertion failed (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE): (0x00008cd6 == 0x00008cd5)
with
gnome-todo (originally reported here):
- Start gnome-todo (41.0)
- Click hamburger menu
- Crash before the popover is rendered (see below)
gnome-text-editor (originally reported here):
- Start gnome-text-editor (42.1)
- Try saving any document
- Crash
The bug #4457 seems like it could be related.
I've not yet figured out any pattern as to when the framebuffer status is 0x8cd4
and when 0x8cd6
.
Running the same versions on my (amd64) desktop machine with AMD graphics does not produce these crashes.
Version information
- Mobian on ARM64 (Pinephone); this is basically Debian Bookworm
- GTK 4.6.5+ds-1 (here is a list of patches that Debian applies, in case it's relevant
Warnings
No warnings in either case.
Backtrace
The following backtraces are very similar, but I thought it might still be illuminating to share both of them.
gnome-todo
$ G_MESSAGES_DEBUG=all gdb gnome-todo
GNU gdb (Debian 11.2-1) 11.2
<snip>
(gdb) r
Starting program: /usr/bin/gnome-todo
<snip>
**
Gsk:ERROR:../../../gsk/gl/gskglcommandqueue.c:1276:gsk_gl_command_queue_create_render_target: assertion failed (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE): (0x00008cd6 == 0x00008cd5)
Bail out! Gsk:ERROR:../../../gsk/gl/gskglcommandqueue.c:1276:gsk_gl_command_queue_create_render_target: assertion failed (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE): (0x00008cd6 == 0x00008cd5)
Thread 1 "gnome-todo" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1 0x0000007ff6c8130c in __GI_abort () at abort.c:79
#2 0x0000007ff7ee218c in g_assertion_message
(domain=domain@entry=0x7ff7b95f00 "Gsk", file=file@entry=0x7ff7b99a20 "../../../gsk/gl/gskglcommandqueue.c", line=line@entry=1276, func=func@entry=0x7ff7b9a330 <__func__.4> "gsk_gl_command_queue_create_render_target", message=message@entry=0x5557f40e30 "assertion failed (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE): (0x00008cd6 == 0x00008cd5)") at ../../../glib/gtestutils.c:3253
#3 0x0000007ff7ee25ac in g_assertion_message_cmpnum
(domain=domain@entry=0x7ff7b95f00 "Gsk", file=file@entry=0x7ff7b99a20 "../../../gsk/gl/gskglcommandqueue.c", line=line@entry=1276, func=func@entry=0x7ff7b9a330 <__func__.4> "gsk_gl_command_queue_create_render_target", expr=expr@entry=0x7ff7b99e38 "glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE", arg1=<optimized out>, cmp=cmp@entry=0x7ff7b55020 "==", arg2=<optimized out>, numtype=numtype@entry=120 'x') at ../../../glib/gtestutils.c:3312
#4 0x0000007ff7ad4fd4 in gsk_gl_command_queue_create_render_target
(self=<optimized out>, width=width@entry=100, height=height@entry=100, format=format@entry=34836, min_filter=min_filter@entry=9728, mag_filter=mag_filter@entry=9728, out_fbo_id=out_fbo_id@entry=0x7fffffd8a0, out_texture_id=out_texture_id@entry=0x7fffffd8a4)
at ../../../gsk/gl/gskglcommandqueue.c:1276
#5 0x0000007ff7adc6bc in gsk_gl_driver_create_render_target
(self=0x5555870fa0 [GskGLDriver], width=width@entry=100, height=height@entry=100, format=34836, min_filter=min_filter@entry=9728, mag_filter=mag_filter@entry=9728, out_render_target=out_render_target@entry=0x7fffffd930) at ../../../gsk/gl/gskgldriver.c:961
#6 0x0000007ff7ae4ff0 in blur_offscreen
(job=job@entry=0x55559dec60, offscreen=offscreen@entry=0x7fffffdab0, texture_to_blur_width=texture_to_blur_width@entry=100, texture_to_blur_height=texture_to_blur_height@entry=100, blur_radius_x=blur_radius_x@entry=10, blur_radius_y=blur_radius_y@entry=10)
at ../../../gsk/gl/gskglrenderjob.c:1322
#7 0x0000007ff7ae6998 in gsk_gl_render_job_visit_blurred_outset_shadow_node
(job=job@entry=0x55559dec60, node=node@entry=0x5557cfed90 [GskOutsetShadowNode]) at ../../../gsk/gl/gskglrenderjob.c:2570
#8 0x0000007ff7ae7a88 in gsk_gl_render_job_visit_node (job=job@entry=0x55559dec60, node=node@entry=0x5557cfed90 [GskOutsetShadowNode])
at ../../../gsk/gl/gskglrenderjob.c:3783
#9 0x0000007ff7ae72b4 in gsk_gl_render_job_visit_node (job=job@entry=0x55559dec60, node=node@entry=0x5557d24870 [GskContainerNode])
at ../../../gsk/gl/gskglrenderjob.c:3733
#10 0x0000007ff7ae72b4 in gsk_gl_render_job_visit_node (job=job@entry=0x55559dec60, node=node@entry=0x5557d24260 [GskContainerNode])
at ../../../gsk/gl/gskglrenderjob.c:3733
#11 0x0000007ff7ae9ec4 in gsk_gl_render_job_visit_transform_node
(job=job@entry=0x55559dec60, node=node@entry=0x5557e06780 [GskTransformNode]) at ../../../gsk/gl/gskglrenderjob.c:2055
#12 0x0000007ff7ae7704 in gsk_gl_render_job_visit_node (job=job@entry=0x55559dec60, node=node@entry=0x5557e06780 [GskTransformNode])
at ../../../gsk/gl/gskglrenderjob.c:3820
#13 0x0000007ff7ae72b4 in gsk_gl_render_job_visit_node (job=job@entry=0x55559dec60, node=node@entry=0x5557cb7930 [GskContainerNode])
at ../../../gsk/gl/gskglrenderjob.c:3733
#14 0x0000007ff7aeb5a0 in gsk_gl_render_job_render (job=0x55559dec60, root=0x5557cb7930 [GskContainerNode])
at ../../../gsk/gl/gskglrenderjob.c:4132
#15 0x0000007ff7acfac8 in gsk_gl_renderer_render
(renderer=0x5557cfecf0 [GskGLRenderer], root=0x5557cb7930 [GskContainerNode], update_area=<optimized out>)
at ../../../gsk/gl/gskglrenderer.c:310
#16 0x0000007ff7ab97ac in gsk_renderer_render
(renderer=0x5557cfecf0 [GskGLRenderer], root=0x5557cb7930 [GskContainerNode], region=<optimized out>) at ../../../gsk/gskrenderer.c:467
#17 0x0000007ff7936af8 in gtk_widget_render
(widget=<optimized out>, surface=0x555567e690 [GdkWaylandPopup], region=region@entry=0x555596cdb0) at ../../../gtk/gtkwidget.c:11694
#18 0x0000007ff782c870 in surface_render (surface=<optimized out>, region=region@entry=0x555596cdb0, widget=<optimized out>)
at ../../../gtk/gtkpopover.c:824
#19 0x0000007ff7a38180 in _gdk_marshal_BOOLEAN__BOXEDvPython Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x8
(closure=0x5555858d10, return_value=0x7fffffe9c8, instance=0x555567e690, args=#20 0x0000007ff72f25a0 in _g_closure_invoke_va
(closure=closure@entry=0x5555858d10, return_value=0x7fffffe9c8,
return_value@entry=0x0, instance=instance@entry=0x555567e690, args=..., n_params=1, param_types=0x5555b30920)
at ../../../gobject/gclosure.c:893
#21 0x0000007ff730b768 in g_signal_emit_valist (instance=instance@entry=0x555567e690, signal_id=0, detail=detail@entry=0, var_args=...)
at ../../../gobject/gsignal.c:3406
#22 0x0000007ff730c4cc in g_signal_emit (instance=instance@entry=0x555567e690, signal_id=<optimized out>, detail=detail@entry=0)
at ../../../gobject/gsignal.c:3553
#23 0x0000007ff7a68048 in gdk_surface_process_updates_internal (surface=0x555567e690 [GdkWaylandPopup]) at ../../../gdk/gdksurface.c:1348
#24 gdk_surface_paint_on_clock (clock=<optimized out>, data=<optimized out>) at ../../../gdk/gdksurface.c:1436
#28 0x0000007ff730c4cc in <emit signal ??? on instance 0x555562a290 [GdkFrameClockIdle]>
(instance=<optimized out>, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3553
#25 0x0000007ff72f2368 in g_closure_invoke
(closure=0x5557d771a0, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffed40, invocation_hint=invocation_hint@entry=0x7fffffed08) at ../../../gobject/gclosure.c:830
#26 0x0000007ff730606c in signal_emit_unlocked_R (node=node@entry=0x5555762be0, detail=0,
detail@entry=4294962944, instance=instance@entry=0x555562a290, emission_return=emission_return@entry=0x0, instance_and_params=0x7fffffed40, instance_and_params@entry=0x7ffffff060) at ../../../gobject/gsignal.c:3743
#27 0x0000007ff730bedc in g_signal_emit_valist (instance=0x555562a290, signal_id=<optimized out>, detail=detail@entry=0, var_args=...)
at ../../../gobject/gsignal.c:3496
#29 0x0000007ff7a56b18 in _gdk_frame_clock_emit_paint (frame_clock=<optimized out>) at ../../../gdk/gdkframeclock.c:708
#30 0x0000007ff7a5763c in gdk_frame_clock_paint_idle (data=<error reading variable: value has been optimized out>)
at ../../../gdk/gdkframeclockidle.c:605
#31 0x0000007ff7eb8ebc in g_timeout_dispatch (source=0x5557df4f20, callback=<optimized out>, user_data=<optimized out>)
--Type <RET> for more, q to quit, c to continue without paging--
at ../../../glib/gmain.c:4971
#32 0x0000007ff7eb8234 in g_main_dispatch (context=0x555562d9a0) at ../../../glib/gmain.c:3417
#33 g_main_context_dispatch (context=0x555562d9a0) at ../../../glib/gmain.c:4135
#34 0x0000007ff7eb85d8 in g_main_context_iterate
(context=context@entry=0x555562d9a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at ../../../glib/gmain.c:4211
#35 0x0000007ff7eb86a4 in g_main_context_iteration (context=context@entry=0x555562d9a0, may_block=may_block@entry=1)
at ../../../glib/gmain.c:4276
#36 0x0000007ff74442d0 in g_application_run (application=0x555562a140 [GtdApplication], argc=argc@entry=1, argv=argv@entry=0x7ffffff3d8)
at ../../../gio/gapplication.c:2569
#37 0x000000555556ce34 in main (argc=1, argv=0x7ffffff3d8) at ../src/main.c:44
(gdb) p *(GskTransformNode *) 0x5557e06780
$1 = {render_node = {parent_instance = {g_class = 0x55556541c0 [g_type: GskTransformNode]}, ref_count = 1, bounds = {origin = {x = 0,
y = 12}, size = {width = 348, height = 197}}, prefers_high_depth = 0}, child = 0x5557d24260 [GskContainerNode],
transform = 0x5557cb4130, dx = 24, dy = 34}
(gdb) p *((GskTransformNode *) 0x5557e06780)->transform
$3 = {transform_class = 0x7ff7cd9898 <GSK_TRANSLATE_TRANSFORM_CLASS>, category = GSK_TRANSFORM_CATEGORY_2D_TRANSLATE, next = 0x0}
(gdb) p *(GskOutsetShadowNode *)0x5557cfed90
$4 = {render_node = {parent_instance = {g_class = 0x5555654010 [g_type: GskOutsetShadowNode]}, ref_count = 1, bounds = {origin = {x = -9,
y = -8}, size = {width = 318, height = 167}}, prefers_high_depth = 0}, outline = {bounds = {origin = {x = -1, y = -1}, size = {
width = 302, height = 151}}, corner = {{width = 12, height = 12}, {width = 12, height = 12}, {width = 12, height = 12}, {
width = 12, height = 12}}}, color = {red = 0, green = 0, blue = 0, alpha = 0.0900000036}, dx = 0, dy = 1, spread = 1,
blur_radius = 5}
(gdb)
gnome-text-editor
$ G_DEBUG_MESSAGES=all gdb gnome-text-editor
GNU gdb (Debian 11.2-1) 11.2
<snip>
(gdb) r
Starting program: /usr/bin/gnome-text-editor
<snip>
**
Gsk:ERROR:../../../gsk/gl/gskglcommandqueue.c:1276:gsk_gl_command_queue_create_render_target: assertion failed (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE): (0x00008cd6 == 0x00008cd5)
Bail out! Gsk:ERROR:../../../gsk/gl/gskglcommandqueue.c:1276:gsk_gl_command_queue_create_render_target: assertion failed (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE): (0x00008cd6 == 0x00008cd5)
Thread 1 "gnome-text-edit" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1 0x0000007ff6b0830c in __GI_abort () at abort.c:79
#2 0x0000007ff7bb418c in g_assertion_message
(domain=domain@entry=0x7ff7867f00 "Gsk", file=file@entry=0x7ff786ba20 "../../../gsk/gl/gskglcommandqueue.c", line=line@entry=1276, func=func@entry=0x7ff786c330 <__func__.4> "gsk_gl_command_queue_create_render_target", message=message@entry=0x5557268ea0 "assertion failed (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE): (0x00008cd6 == 0x00008cd5)") at ../../../glib/gtestutils.c:3253
#3 0x0000007ff7bb45ac in g_assertion_message_cmpnum
(domain=domain@entry=0x7ff7867f00 "Gsk", file=file@entry=0x7ff786ba20 "../../../gsk/gl/gskglcommandqueue.c", line=line@entry=1276, func=func@entry=0x7ff786c330 <__func__.4> "gsk_gl_command_queue_create_render_target", expr=expr@entry=0x7ff786be38 "glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE", arg1=<optimized out>, cmp=cmp@entry=0x7ff7827020 "==", arg2=<optimized out>, numtype=numtype@entry=120 'x') at ../../../glib/gtestutils.c:3312
#4 0x0000007ff77a6fd4 in gsk_gl_command_queue_create_render_target
(self=<optimized out>, width=width@entry=100, height=height@entry=100, format=format@entry=34836, min_filter=min_filter@entry=9728, mag_filter=mag_filter@entry=9728, out_fbo_id=out_fbo_id@entry=0x7fffffd8a0, out_texture_id=out_texture_id@entry=0x7fffffd8a4)
at ../../../gsk/gl/gskglcommandqueue.c:1276
#5 0x0000007ff77ae6bc in gsk_gl_driver_create_render_target
(self=0x55561a0290 [GskGLDriver], width=width@entry=100, height=height@entry=100, format=34836, min_filter=min_filter@entry=9728, mag_filter=mag_filter@entry=9728, out_render_target=out_render_target@entry=0x7fffffd930) at ../../../gsk/gl/gskgldriver.c:961
#6 0x0000007ff77b6ff0 in blur_offscreen
(job=job@entry=0x5557209b60, offscreen=offscreen@entry=0x7fffffdab0, texture_to_blur_width=texture_to_blur_width@entry=100, texture_to_blur_height=texture_to_blur_height@entry=100, blur_radius_x=blur_radius_x@entry=10, blur_radius_y=blur_radius_y@entry=10)
at ../../../gsk/gl/gskglrenderjob.c:1322
#7 0x0000007ff77b8998 in gsk_gl_render_job_visit_blurred_outset_shadow_node
(job=job@entry=0x5557209b60, node=node@entry=0x555730fc70 [GskOutsetShadowNode]) at ../../../gsk/gl/gskglrenderjob.c:2570
#8 0x0000007ff77b9a88 in gsk_gl_render_job_visit_node (job=job@entry=0x5557209b60, node=node@entry=0x555730fc70 [GskOutsetShadowNode])
at ../../../gsk/gl/gskglrenderjob.c:3783
#9 0x0000007ff77b92b4 in gsk_gl_render_job_visit_node (job=job@entry=0x5557209b60, node=node@entry=0x5557316060 [GskContainerNode])
at ../../../gsk/gl/gskglrenderjob.c:3733
#10 0x0000007ff77b92b4 in gsk_gl_render_job_visit_node (job=job@entry=0x5557209b60, node=node@entry=0x55572b2790 [GskContainerNode])
at ../../../gsk/gl/gskglrenderjob.c:3733
#11 0x0000007ff77bbec4 in gsk_gl_render_job_visit_transform_node
(job=job@entry=0x5557209b60, node=node@entry=0x5556224c40 [GskTransformNode]) at ../../../gsk/gl/gskglrenderjob.c:2055
#12 0x0000007ff77b9704 in gsk_gl_render_job_visit_node (job=job@entry=0x5557209b60, node=node@entry=0x5556224c40 [GskTransformNode])
at ../../../gsk/gl/gskglrenderjob.c:3820
#13 0x0000007ff77b92b4 in gsk_gl_render_job_visit_node (job=job@entry=0x5557209b60, node=node@entry=0x7fd4001e90 [GskContainerNode])
at ../../../gsk/gl/gskglrenderjob.c:3733
#14 0x0000007ff77bd5a0 in gsk_gl_render_job_render (job=0x5557209b60, root=0x7fd4001e90 [GskContainerNode])
at ../../../gsk/gl/gskglrenderjob.c:4132
#15 0x0000007ff77a1ac8 in gsk_gl_renderer_render
(renderer=0x5556258cf0 [GskGLRenderer], root=0x7fd4001e90 [GskContainerNode], update_area=<optimized out>)
at ../../../gsk/gl/gskglrenderer.c:310
#16 0x0000007ff778b7ac in gsk_renderer_render
(renderer=0x5556258cf0 [GskGLRenderer], root=0x7fd4001e90 [GskContainerNode], region=<optimized out>) at ../../../gsk/gskrenderer.c:467
#17 0x0000007ff7608af8 in gtk_widget_render
(widget=<optimized out>, surface=0x5555650300 [GdkWaylandPopup], region=region@entry=0x555625db10) at ../../../gtk/gtkwidget.c:11694
#18 0x0000007ff74fe870 in surface_render (surface=<optimized out>, region=region@entry=0x555625db10, widget=<optimized out>)
at ../../../gtk/gtkpopover.c:824
#19 0x0000007ff770a180 in _gdk_marshal_BOOLEAN__BOXEDvPython Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x8
(closure=0x55572b41a0, return_value=0x7fffffe9c8, instance=0x5555650300, args=#20 0x0000007ff7c975a0 in _g_closure_invoke_va
(closure=closure@entry=0x55572b41a0, return_value=0x7fffffe9c8,
return_value@entry=0x0, instance=instance@entry=0x5555650300, args=..., n_params=1, param_types=0x5555945be0)
at ../../../gobject/gclosure.c:893
#21 0x0000007ff7cb0768 in g_signal_emit_valist (instance=instance@entry=0x5555650300, signal_id=0, detail=detail@entry=0, var_args=...)
at ../../../gobject/gsignal.c:3406
#22 0x0000007ff7cb14cc in g_signal_emit (instance=instance@entry=0x5555650300, signal_id=<optimized out>, detail=detail@entry=0)
at ../../../gobject/gsignal.c:3553
#23 0x0000007ff773a048 in gdk_surface_process_updates_internal (surface=0x5555650300 [GdkWaylandPopup]) at ../../../gdk/gdksurface.c:1348
#24 gdk_surface_paint_on_clock (clock=<optimized out>, data=<optimized out>) at ../../../gdk/gdksurface.c:1436
#28 0x0000007ff7cb14cc in <emit signal ??? on instance 0x55561a51c0 [GdkFrameClockIdle]>
(instance=<optimized out>, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3553
#25 0x0000007ff7c97368 in g_closure_invoke
(closure=0x555625cb40, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffed40, invocation_hint=invocation_hint@entry=0x7fffffed08) at ../../../gobject/gclosure.c:830
#26 0x0000007ff7cab06c in signal_emit_unlocked_R (node=node@entry=0x55557c6aa0, detail=0,
detail@entry=4294962944, instance=instance@entry=0x55561a51c0, emission_return=emission_return@entry=0x0, instance_and_params=0x7fffffed40, instance_and_params@entry=0x7ffffff060) at ../../../gobject/gsignal.c:3743
#27 0x0000007ff7cb0edc in g_signal_emit_valist (instance=0x55561a51c0, signal_id=<optimized out>, detail=detail@entry=0, var_args=...)
at ../../../gobject/gsignal.c:3496
#29 0x0000007ff7728b18 in _gdk_frame_clock_emit_paint (frame_clock=<optimized out>) at ../../../gdk/gdkframeclock.c:708
#30 0x0000007ff772963c in gdk_frame_clock_paint_idle (data=<error reading variable: value has been optimized out>)
at ../../../gdk/gdkframeclockidle.c:605
#31 0x0000007ff7b8aebc in g_timeout_dispatch (source=0x5557308490, callback=<optimized out>, user_data=<optimized out>)
at ../../../glib/gmain.c:4971
#32 0x0000007ff7b8a234 in g_main_dispatch (context=0x5555627830) at ../../../glib/gmain.c:3417
#33 g_main_context_dispatch (context=0x5555627830) at ../../../glib/gmain.c:4135
#34 0x0000007ff7b8a5d8 in g_main_context_iterate
(context=context@entry=0x5555627830, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at ../../../glib/gmain.c:4211
#35 0x0000007ff7b8a6a4 in g_main_context_iteration (context=context@entry=0x5555627830, may_block=may_block@entry=1)
at ../../../glib/gmain.c:4276
#36 0x0000007ff7de92d0 in g_application_run
(application=application@entry=0x7fe8009640 [EditorApplication], argc=argc@entry=1, argv=argv@entry=0x7ffffff3c8)
at ../../../gio/gapplication.c:2569
#37 0x0000005555566c04 in main (argc=1, argv=0x7ffffff3c8) at ../src/main.c:42
(gdb) p *(GskTransformNode*)0x5556224c40
$1 = {render_node = {parent_instance = {g_class = 0x5555614560 [g_type: GskTransformNode]},
ref_count = 1, bounds = {origin = {x = 0, y = 12}, size = {width = 396, height = 269}},
prefers_high_depth = 0}, child = 0x55572b2790 [GskContainerNode], transform = 0x555731e740,
dx = 24, dy = 34}
(gdb) p ((GskTransformNode*)0x5556224c40)->transform
$2 = (GskTransform *) 0x555731e740
(gdb) p *((GskTransformNode*)0x5556224c40)->transform
$3 = {transform_class = 0x7ff79ab898 <GSK_TRANSLATE_TRANSFORM_CLASS>,
category = GSK_TRANSFORM_CATEGORY_2D_TRANSLATE, next = 0x0}
(gdb) p *(GskOutsetShadowNode*)0x555730fc70
$4 = {render_node = {parent_instance = {g_class = 0x55556143b0 [g_type: GskOutsetShadowNode]},
ref_count = 1, bounds = {origin = {x = -9, y = -8}, size = {width = 366, height = 239}},
prefers_high_depth = 0}, outline = {bounds = {origin = {x = -1, y = -1}, size = {width = 350,
height = 223}}, corner = {{width = 12, height = 12}, {width = 12, height = 12}, {width = 12,
height = 12}, {width = 12, height = 12}}}, color = {red = 0, green = 0, blue = 0,
alpha = 0.0900000036}, dx = 0, dy = 1, spread = 1, blur_radius = 5}
(gdb)
Interesting sidenote
I've not validated this myself, but @maryjane reported that these crashes were not happening with the flatpak version (?)
If you have any questions or need any more information I would be very happy to follow up.
Cheers and thanks for developing GTK4!