Write after free when switching images
- Add Tiny Sepuku comic and select it
- Go to the first comic
- Repeatedly go to the next comic
- You might encounter the following invalid write detected by valgrind
(.buoh-wrapped:2694538): GLib-DEBUG: 19:24:17.072: Failed to get thread scheduler attributes: Function not implemented
(.buoh-wrapped:2694538): GLib-GIO-DEBUG: 19:24:18.452: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
Gtk-Message: 19:24:19.640: Failed to load module "canberra-gtk-module"
Gtk-Message: 19:24:19.739: Failed to load module "canberra-gtk-module"
(.buoh-wrapped:2694538): GLib-DEBUG: 19:24:19.743: unsetenv() is not thread-safe and should not be used after threads are created
(.buoh-wrapped:2694538): Gtk-DEBUG: 19:24:19.747: Connecting to session manager
(.buoh-wrapped:2694538): GLib-GIO-DEBUG: 19:24:22.723: _g_io_module_get_default: Found default implementation dconf (DConfSettingsBackend) for ?gsettings-backend?
(.buoh-wrapped:2694538): dconf-DEBUG: 19:24:22.725: watch_fast: "/org/gnome/buoh/" (establishing: 0, active: 0)
(.buoh-wrapped:2694538): dconf-DEBUG: 19:24:22.768: watch_fast: "/org/gnome/desktop/lockdown/" (establishing: 0, active: 0)
(.buoh-wrapped:2694538): dconf-DEBUG: 19:24:22.937: watch_established: "/org/gnome/buoh/" (establishing: 1)
(.buoh-wrapped:2694538): dconf-DEBUG: 19:24:22.940: watch_established: "/org/gnome/desktop/lockdown/" (establishing: 1)
** (.buoh-wrapped:2694538): DEBUG: 19:24:37.041: id: 12/31/20
** (.buoh-wrapped:2694538): DEBUG: 19:24:37.043: uri: http://picayune.uclick.com/comics/tiny/2020/tiny201231.gif
** (.buoh-wrapped:2694538): DEBUG: 19:24:37.055: CACHE: image is not cached
** (.buoh-wrapped:2694538): DEBUG: 19:24:37.163: selection changed: set comic
** (.buoh-wrapped:2694538): DEBUG: 19:24:37.180: comic_load_job
** (.buoh-wrapped:2694538): DEBUG: 19:24:37.202: resolving . . .
(.buoh-wrapped:2694538): GLib-GIO-DEBUG: 19:24:37.224: _g_io_module_get_default: Found default implementation dummy (GDummyProxyResolver) for ?gio-proxy-resolver?
(.buoh-wrapped:2694538): GLib-GIO-DEBUG: 19:24:37.226: _g_io_module_get_default: Found default implementation dummy (GDummyTlsBackend) for ?gio-tls-backend?
** (.buoh-wrapped:2694538): DEBUG: 19:24:37.515: CACHE: image is not cached
** (.buoh-wrapped:2694538): DEBUG: 19:24:38.578: read chunk
** (.buoh-wrapped:2694538): DEBUG: 19:24:38.599: finished . . .
** (.buoh-wrapped:2694538): DEBUG: 19:24:38.600: thread died
** (.buoh-wrapped:2694538): DEBUG: 19:24:38.606: buoh-view-comic-load finished
** (.buoh-wrapped:2694538): DEBUG: 19:24:38.627: comic-loader-job finalize
** (.buoh-wrapped:2694538): DEBUG: 19:24:42.038: id: 04/03/03
** (.buoh-wrapped:2694538): DEBUG: 19:24:42.039: uri: http://picayune.uclick.com/comics/tiny/2003/tiny030403.gif
==2694538== Invalid write of size 4
==2694538== at 0x40A33C: buoh_comic_loader_clear (buoh-comic-loader.c:295)
==2694538== by 0x40A33C: buoh_comic_loader_cancel (buoh-comic-loader.c:339)
==2694538== by 0x40E877: bouh_view_comic_changed_comic_cb (buoh-view-comic.c:577)
==2694538== by 0x52EEC9A: g_cclosure_marshal_VOID__PARAM (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52EBF69: g_closure_invoke (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52FFB74: signal_emit_unlocked_R (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x530A5E8: g_signal_emit_valist (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x530A841: g_signal_emit (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52F0560: g_object_dispatch_properties_changed (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52EFE15: g_object_notify_queue_thaw (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52F4083: g_object_set_valist (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52F493F: g_object_set (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52EF205: g_cclosure_marshal_VOID__VARIANT (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== Address 0xbf9f948 is 24 bytes inside a block of size 80 free'd
==2694538== at 0x4839900: free (in /nix/store/l7qvi4rjqh0b64d9pdjj8vxkwh2ibynz-valgrind-3.16.1/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==2694538== by 0x5395633: g_free (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x53AEDDD: g_slice_free1 (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x5315AD3: g_type_free_instance (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52F0D66: g_object_unref (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x409D2D: buoh_comic_loader_job_finished (buoh-comic-loader.c:213)
==2694538== by 0x538B917: g_idle_dispatch (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x538C5E2: g_main_dispatch (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x538FB04: g_main_context_dispatch (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x538FC8C: g_main_context_iterate (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x538FD0F: g_main_context_iteration (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x51E00E0: g_application_run (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgio-2.0.so.0.6600.3)
==2694538== Block was alloc'd at
==2694538== at 0x4838753: malloc (in /nix/store/l7qvi4rjqh0b64d9pdjj8vxkwh2ibynz-valgrind-3.16.1/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==2694538== by 0x5395541: g_malloc (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x53AE94F: g_slice_alloc (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x53AE99D: g_slice_alloc0 (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libglib-2.0.so.0.6600.3)
==2694538== by 0x5315755: g_type_create_instance (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52F1732: g_object_new_internal (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52F2D1C: g_object_new_with_properties (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52F3787: g_object_new (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x40A1F2: buoh_comic_loader_job_new (buoh-comic-loader.c:185)
==2694538== by 0x40A1F2: buoh_comic_loader_load_comic (buoh-comic-loader.c:313)
==2694538== by 0x40EA70: buoh_view_comic_load (buoh-view-comic.c:767)
==2694538== by 0x40EA70: bouh_view_comic_changed_comic_cb (buoh-view-comic.c:581)
==2694538== by 0x52EEC9A: g_cclosure_marshal_VOID__PARAM (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538== by 0x52EBF69: g_closure_invoke (in /nix/store/whid1h4kmnkqxdffyfqnp72jhl9wc0jf-glib-2.66.3/lib/libgobject-2.0.so.0.6600.3)
==2694538==