g_variant_builder_clear not callable twice on aarch64, it seems
gnome-shell-calendar-server is crashing on startup on aarch64:
gnome-shell#3440 (comment 1069670)
This is the fix I proposed for it:
But I think it should be possible to call clear twice, as it should become all 0s after the first call, right? I have not been able to investigate too much, but clearly that is not happening:
Thread 1 "gnome-shell-cal" hit Breakpoint 1, app_notify_events_added (app=0x452280) at ../src/calendar-server/gnome-shell-calendar-server.c:385
385 g_variant_builder_clear (&extras_builder);
(gdb) p extras_builder
$1 = {u = {s = {partial_magic = 0, type = 0x6fedb0, y = {7335345, 0, 0, 18446744073709551615, 6327536, 8, 0, 3, 1033660112, 0, 0, 0, 0, 0}}, x = {0, 7335344, 7335345, 0, 0,
18446744073709551615, 6327536, 8, 0, 3, 1033660112, 0, 0, 0, 0, 0}}}
(gdb) c
Continuing.
free(): double free detected in tcache 2
[LWP 904073 exited]
[LWP 904072 exited]
Thread 1 "gnome-shell-cal" received signal SIGABRT, Aborted.
0x0000fffff789d850 in raise () from /lib64/libc.so.6
(gdb) bt
#0 0x0000fffff789d850 in raise () from /lib64/libc.so.6
#1 0x0000fffff788975c in abort () from /lib64/libc.so.6
#2 0x0000fffff78d85a8 in __libc_message () from /lib64/libc.so.6
#3 0x0000fffff78e0590 in malloc_printerr () from /lib64/libc.so.6
#4 0x0000fffff78e1e7c in _int_free () from /lib64/libc.so.6
#5 0x0000fffff78e5380 in free () from /lib64/libc.so.6
#6 0x0000fffff7cc1ed4 in g_free (mem=<optimized out>) at ../glib/gmem.c:199
#7 0x0000fffff7cfbcec in g_variant_builder_clear (builder=0xffffffffe698) at ../glib/gvariant.c:3340
#8 g_variant_builder_clear (builder=0xffffffffe698) at ../glib/gvariant.c:3325
#9 0x00000000004049a0 in app_notify_events_added (app=0x452280) at ../src/calendar-server/gnome-shell-calendar-server.c:385
#10 0x0000000000404d34 in app_process_added_modified_objects (app=0x452280, view=0x48d470, objects=0xffffd80144c0) at ../src/calendar-server/gnome-shell-calendar-server.c:485
#11 0x0000000000404df4 in on_objects_added (view=0x48d470, objects=0xffffd80144c0, user_data=0x452280) at ../src/calendar-server/gnome-shell-calendar-server.c:500
#12 0x0000fffff7a0a190 in g_cclosure_marshal_VOID__POINTERv (closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>,
args=<error reading variable: Cannot access memory at address 0x8>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=<optimized out>)
at ../gobject/gmarshal.c:1800
#13 0x0000fffff7a06f50 in _g_closure_invoke_va (closure=closure@entry=0x504540, return_value=0x0, return_value@entry=0xffffe803a410, instance=instance@entry=0x48d470,
args=..., n_params=1, param_types=0xffffd800e8f0) at ../gobject/gclosure.c:873
#14 0x0000fffff7a1fd9c in g_signal_emit_valist (instance=0x48d470, signal_id=<optimized out>, detail=<optimized out>, var_args=...) at ../gobject/gsignal.c:3406
#15 0x0000fffff7a1ff94 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../gobject/gsignal.c:3553
#16 0x0000fffff7f4a274 in cal_client_view_emit_objects_added_idle_cb () from /lib64/libecal-2.0.so.1
#17 0x0000fffff7cbc074 in g_main_dispatch (context=0x441e40) at ../glib/gmain.c:3344
#18 g_main_context_dispatch (context=0x441e40) at ../glib/gmain.c:4062
#19 0x0000fffff7cbc3ec in g_main_context_iterate (context=0x441e40, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4138
#20 0x0000fffff7cbc72c in g_main_loop_run (loop=0x441f00) at ../glib/gmain.c:4336
#21 0x00000000004061ec in main (argc=1, argv=0xffffffffeee8) at ../src/calendar-server/gnome-shell-calendar-server.c:1078