After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 699022 - Crash when freedb.musicbrainz.org has problems
Crash when freedb.musicbrainz.org has problems
Status: RESOLVED FIXED
Product: easytag
Classification: Other
Component: general
2.1.x
Other Linux
: Normal critical
: 2.1
Assigned To: EasyTAG maintainer(s)
EasyTAG maintainer(s)
: 699659 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2013-04-27 09:39 UTC by Alexander Shaduri
Modified: 2013-05-04 07:57 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Alexander Shaduri 2013-04-27 09:39:42 UTC
Hello,

I've been getting crashes these few days, since freedb.musicbrainz.org seems to be down or non-functional. Basically, whenever I try to look something up through CD Database Search, easytag crashes.
Disabling freedb.musicbrainz.org from preferences avoids the crash.

In fact, if I enter something like "hello.org" instead of "freedb.musicbrainz.org", easytag hangs for a while, then aborts with "*** glibc detected *** easytag: double free or corruption (!prev): 0x0000000002b90940 ***".

Environment info: easytag 2.1.8 from Gnome:Apps openSUSE repository, openSUSE 12.2 x86-64, gtk 2.24.10, glibc-2.15.

Here's a backtrace with freedb.musicbrainz.org enabled:
----------------------------------------------

** (easytag:10075): CRITICAL **: Cddb_Free_Album_List: assertion `CddbAlbumList != NULL' failed

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4bad2b1 in _int_free () from /lib64/libc.so.6

(gdb) where
  • #0 _int_free
    from /lib64/libc.so.6
  • #1 g_value_unset
    at gvalue.c line 276
  • #2 object_set_property
    at gobject.c line 1359
  • #3 g_object_set_property
    at gobject.c line 2149
  • #4 IA__gtk_tree_view_column_cell_set_cell_data
    at gtktreeviewcolumn.c line 2587
  • #5 validate_row
    at gtktreeview.c line 5778
  • #6 validate_visible_area
    at gtktreeview.c line 5878
  • #7 do_presize_handler
    at gtktreeview.c line 6428
  • #8 presize_handler_callback
    at gtktreeview.c line 6450
  • #9 gdk_threads_dispatch
    at gdk.c line 512
  • #10 g_main_dispatch
    at gmain.c line 2539
  • #11 g_main_context_dispatch
    at gmain.c line 3075
  • #12 g_main_context_iterate
    at gmain.c line 3146
  • #13 g_main_loop_run
    at gmain.c line 3340
  • #14 IA__gtk_main
    at gtkmain.c line 1256
  • #15 main
    at src/easytag.c line 425

Comment 1 David King 2013-04-27 13:58:12 UTC
There have been several fixes to the CDDB code (including one which should avoid the != NULL warning) since 2.1.8:

commit 8fd019ff9cafd713227171c3f64b0bd715204eaf
Author: David King <amigadave@amigadave.com>
Date:   Thu Feb 14 23:29:57 2013 +0000

    Avoid warnings when freeing the CDDB album list
    
    Check that the CDDB album list is not empty before freeing it.

commit 4d5cdd7dab803dd37da7ba89bac146aec49792e9
Author: David King <amigadave@amigadave.com>
Date:   Thu Feb 14 23:11:36 2013 +0000

    Fix a couple of memory leaks in the CDDB search

commit 90e35f098313fb675d387bb0c8e338f878a934be
Author: David King <amigadave@amigadave.com>
Date:   Wed Feb 13 22:26:08 2013 +0000

    Fix a memory leak when freeing the CDDB album list

Can you try those fixes and see if it fixes the crash?
Comment 2 Alexander Shaduri 2013-04-27 14:51:34 UTC
Hello, I just tried the git master, still crashes on freedb.musicbrainz.org.

The "hello.org" crash seems to be different, since it's "Aborted". Should I file a separate bug for it?


Here's the backtrace for freedb.musicbrainz.org:

Program received signal SIGSEGV, Segmentation fault.


  • #0 malloc_consolidate
    from /lib64/libc.so.6
  • #1 _int_free
    from /lib64/libc.so.6
  • #2 g_markup_parse_context_parse
    at gmarkup.c line 1448
  • #3 parse_uri_markup
  • #4 gtk_label_set_markup_internal
  • #5 gtk_label_recalculate
    at gtklabel.c line 1869
  • #6 IA__gtk_label_set_markup
    at gtklabel.c line 2424
  • #7 IA__gtk_tooltip_set_markup
  • #8 gtk_widget_real_query_tooltip
    at gtkwidget.c line 5414
  • #9 _gtk_marshal_BOOLEAN__INT_INT_BOOLEAN_OBJECT
    at gtkmarshalers.c line 837
  • #10 g_closure_invoke
    at gclosure.c line 777
  • #11 signal_emit_unlocked_R
    at gsignal.c line 3589
  • #12 g_signal_emit_valist
    at gsignal.c line 3310
  • #13 g_signal_emit_by_name
    at gsignal.c line 3393
  • #14 gtk_tooltip_run_requery
    at gtktooltip.c line 837
  • #15 _gtk_tooltip_handle_event
    at gtktooltip.c line 1400
  • #16 IA__gtk_main_do_event
    at gtkmain.c line 1726
  • #17 gdk_event_dispatch
    at gdkevents-x11.c line 2377
  • #18 g_main_dispatch
    at gmain.c line 2539
  • #19 g_main_context_dispatch
    at gmain.c line 3075
  • #20 g_main_context_iterate
    at gmain.c line 3146
  • #21 g_main_loop_run
    at gmain.c line 3340
  • #22 IA__gtk_main
    at gtkmain.c line 1256
  • #23 g_closure_invoke
    at gclosure.c line 777
  • #24 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #25 g_signal_emit_valist
    at gsignal.c line 3300
  • #26 g_signal_emit
    at gsignal.c line 3356
  • #27 g_application_activate
    at gapplication.c line 1295
  • #28 command_line
    at src/easytag.c line 286
  • #29 ffi_call_unix64
    from /usr/lib64/libffi.so.4
  • #30 ffi_call
    from /usr/lib64/libffi.so.4
  • #31 g_cclosure_marshal_generic
    at gclosure.c line 1454
  • #32 g_closure_invoke
    at gclosure.c line 777
  • #33 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #34 g_signal_emit_valist
    at gsignal.c line 3310
  • #35 g_signal_emit
    at gsignal.c line 3356
  • #36 g_application_run
    at gapplication.c line 1476
  • #37 main
    at src/easytag.c line 470

Comment 3 David King 2013-04-27 15:07:04 UTC
That stacktrace looks like there is a problem parsing the tooltip text, and is quite different to the first stacktrace. If you could past the other "holle.org" stacktrace here it would be useful.
Comment 4 Alexander Shaduri 2013-04-27 15:40:16 UTC
Here's the backtrace for hello.org (note that I just picked that name at random).

Program received signal SIGABRT, Aborted.

  • #0 raise
    from /lib64/libc.so.6
  • #1 abort
    from /lib64/libc.so.6
  • #2 __libc_message
    from /lib64/libc.so.6
  • #3 malloc_printerr
    from /lib64/libc.so.6
  • #4 Cddb_Search_Album_From_Selected_Files
    at src/cddb.c line 3126
  • #5 _g_closure_invoke_va
    at gclosure.c line 840
  • #6 g_signal_emit_valist
    at gsignal.c line 3211
  • #7 g_signal_emit
    at gsignal.c line 3356
  • #8 gtk_real_button_released
    at gtkbutton.c line 1725
  • #9 gtk_real_button_released
    at gtkbutton.c line 1715
  • #10 g_closure_invoke
    at gclosure.c line 777
  • #11 signal_emit_unlocked_R
    at gsignal.c line 3481
  • #12 g_signal_emit_valist
    at gsignal.c line 3300
  • #13 g_signal_emit
    at gsignal.c line 3356
  • #14 gtk_button_button_release
    at gtkbutton.c line 1617
  • #15 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 86
  • #16 g_closure_invoke
    at gclosure.c line 777
  • #17 signal_emit_unlocked_R
    at gsignal.c line 3589
  • #18 g_signal_emit_valist
    at gsignal.c line 3310
  • #19 g_signal_emit
    at gsignal.c line 3356
  • #20 gtk_widget_event_internal
    at gtkwidget.c line 4991
  • #21 IA__gtk_widget_event
    at gtkwidget.c line 4788
  • #22 IA__gtk_propagate_event
    at gtkmain.c line 2489
  • #23 IA__gtk_main_do_event
    at gtkmain.c line 1684
  • #24 gdk_event_dispatch
    at gdkevents-x11.c line 2377
  • #25 g_main_dispatch
    at gmain.c line 2539
  • #26 g_main_context_dispatch
    at gmain.c line 3075
  • #27 g_main_context_iterate
    at gmain.c line 3146
  • #28 g_main_loop_run
    at gmain.c line 3340
  • #29 IA__gtk_main
    at gtkmain.c line 1256
  • #30 g_closure_invoke
    at gclosure.c line 777
  • #31 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #32 g_signal_emit_valist
    at gsignal.c line 3300
  • #33 g_signal_emit
    at gsignal.c line 3356
  • #34 g_application_activate
    at gapplication.c line 1295
  • #35 command_line
    at src/easytag.c line 286
  • #36 ffi_call_unix64
    from /usr/lib64/libffi.so.4
  • #37 ffi_call
    from /usr/lib64/libffi.so.4
  • #38 g_cclosure_marshal_generic
    at gclosure.c line 1454
  • #39 g_closure_invoke
    at gclosure.c line 777
  • #40 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #41 g_signal_emit_valist
    at gsignal.c line 3310
  • #42 g_signal_emit
    at gsignal.c line 3356
  • #43 g_application_run
    at gapplication.c line 1476
  • #44 main
    at src/easytag.c line 470

Comment 5 David King 2013-04-27 16:05:14 UTC
I figured this out with the help of Valgrind (which reported a double free). I pushed the fix to master as commit e87a8ab6a1c32d09825f61c49bee75abc27265af. Thanks for the report.
Comment 6 David King 2013-05-04 07:57:05 UTC
*** Bug 699659 has been marked as a duplicate of this bug. ***