segfault when switching between animated webp images
When switching between animated webp files (any I've tested, test case attached) I get a segfault in EOG. This happens both when using the arrow keys and when using the built in left / right buttons.
Once in a while I won't get a crash when switching, but will get this non-fatal message instead:
GLib-GObject-CRITICAL **: 01:51:09.414: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
Reproduction steps:
- Put any two (or more) animated webp images in a directory together.
- Open one of the images in EOG.
- Switch to the other image(s). If you don't immediately get a crash try switching a few more times.
Backtrace:
#0 g_type_check_instance_is_fundamentally_a (type_instance=0x7fffd4023d60, fundamental_type=0x50)
at ../glib/gobject/gtype.c:4166
#1 0x00007ffff7d0c2ae in g_object_unref (_object=0x7fffd4023d60) at ../glib/gobject/gobject.c:3807
#2 0x00007ffff7f70d30 in eog_image_free_mem_private (image=image@entry=0x7fffd40287e0)
at ../eog/src/eog-image.c:115
#3 0x00007ffff7f71bc8 in eog_image_data_unref (img=0x7fffd40287e0) at ../eog/src/eog-image.c:2323
#4 0x00007ffff7fa1cd5 in free_image_resources.isra.0 (view=<optimized out>)
at ../eog/src/eog-scroll-view.c:258
#5 0x00007ffff7f8bbdd in eog_scroll_view_set_image (view=0x555555af1050, image=0x7fffd4028a20)
at ../eog/src/eog-scroll-view.c:1750
#6 0x00007ffff7f95347 in eog_window_display_image (window=window@entry=0x555555755830, image=0x7fffd4028a20)
at ../eog/src/eog-window.c:998
#7 0x00007ffff7f95b8e in eog_job_load_cb (job=0x555555bccb10, data=0x555555755830)
at ../eog/src/eog-window.c:1416
#8 0x00007ffff7cfe210 in g_closure_invoke
(closure=0x555555867ab0, return_value=0x0, n_param_values=1, param_values=0x7fffffffd8b0, invocation_hint=0x7fffffffd830) at ../glib/gobject/gclosure.c:832
#9 0x00007ffff7d2c2f8 in signal_emit_unlocked_R.isra.0
(node=node@entry=0x555555b4a6b0, detail=detail@entry=0, instance=instance@entry=0x555555bccb10, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd8b0)
at ../glib/gobject/gsignal.c:3802
#10 0x00007ffff7d1c095 in g_signal_emit_valist
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffda50) at ../glib/gobject/gsignal.c:3555
#11 0x00007ffff7d1c324 in g_signal_emit
(instance=instance@entry=0x555555bccb10, signal_id=<optimized out>, detail=detail@entry=0)
at ../glib/gobject/gsignal.c:3612
#12 0x00007ffff7f74941 in notify_finished (job=0x555555bccb10) at ../eog/src/eog-jobs.c:159
#13 notify_finished (job=0x555555bccb10) at ../eog/src/eog-jobs.c:149
#14 0x00007ffff7bf953b in g_main_dispatch (context=0x55555558b0d0) at ../glib/glib/gmain.c:3460
#15 g_main_context_dispatch (context=0x55555558b0d0) at ../glib/glib/gmain.c:4200
#16 0x00007ffff7c56219 in g_main_context_iterate.constprop.0
(context=0x55555558b0d0, block=1, dispatch=1, self=<optimized out>) at ../glib/glib/gmain.c:4276
#17 0x00007ffff7bf81a2 in g_main_context_iteration
(context=context@entry=0x55555558b0d0, may_block=may_block@entry=1) at ../glib/glib/gmain.c:4343
#18 0x00007ffff7e273de in g_application_run
(application=0x555555585000, argc=argc@entry=2, argv=argv@entry=0x7fffffffde48)
at ../glib/gio/gapplication.c:2573
#19 0x0000555555555173 in main (argc=<optimized out>, argv=<optimized out>) at ../eog/src/main.c:133
System + Version Information:
- Arch Linux x86_64
- EOG 44.0 (distribution package)
- webp-pixbuf-loader 0.2.2 (distribution package)
- libwebp 1.3.0 (distribution package)
Test case: