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 349601 - query model refcounting problems
query model refcounting problems
Status: RESOLVED FIXED
Product: rhythmbox
Classification: Other
Component: general
HEAD
Other All
: High critical
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
: 342197 346664 350922 351141 352004 353728 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2006-08-01 22:48 UTC by christopher taylor
Modified: 2006-09-02 00:58 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16


Attachments
more refcounting fixes (11.93 KB, patch)
2006-08-02 11:37 UTC, James "Doc" Livingston
committed Details | Review
hackish fix (493 bytes, patch)
2006-08-13 23:12 UTC, Jonathan Matthew
none Details | Review
better patch (577 bytes, patch)
2006-08-14 21:42 UTC, Jonathan Matthew
committed Details | Review

Description christopher taylor 2006-08-01 22:48:01 UTC
What were you doing when the application crashed?
A was selecting an album on the main window!


Distribution: Slackware Slackware 9.1.0
Gnome Release: 2.15.90 2006-08-01 (GNOME.Org)
BugBuddy Version: 2.15.90

Memory status: size: 65835008 vsize: 0 resident: 65835008 share: 0 rss: 19222528 rss_rlim: 0
CPU usage: start_time: 1154472545 rtime: 0 utime: 151 stime: 0 cutime:128 cstime: 0 timeout: 23 it_real_value: 0 frequency: 5

Backtrace was generated from '/usr/local/bin/rhythmbox'

Using host libthread_db library "/lib/tls/i686/libthread_db.so.1".
`system-supplied DSO at 0xffffe000' has disappeared; keeping its symbols.
[Thread debugging using libthread_db enabled]
[New Thread -1223383376 (LWP 3676)]
[New Thread -1227629664 (LWP 3840)]
0xffffe410 in __kernel_vsyscall ()

Thread 1 (Thread -1223383376 (LWP 3676))

  • #0 __kernel_vsyscall
  • #1 __waitpid_nocancel
    from /lib/tls/i686/libpthread.so.0
  • #2 libgnomeui_segv_handle
    at gnome-ui-init.c line 867
  • #3 <signal handler called>
  • #4 __kernel_vsyscall
  • #5 raise
    from /lib/tls/i686/libc.so.6
  • #6 abort
    from /lib/tls/i686/libc.so.6
  • #7 IA__g_logv
    at gmessages.c line 497
  • #8 IA__g_log
    at gmessages.c line 517
  • #9 IA__g_return_if_fail_warning
  • #10 IA__g_signal_handlers_disconnect_matched
    at gsignal.c line 1926
  • #11 rb_play_order_query_model_changed
    at rb-play-order.c line 546
  • #12 rb_play_order_query_model_changed_cb
    at rb-play-order.c line 519
  • #13 IA__g_cclosure_marshal_VOID__PARAM
    at gmarshal.c line 531
  • #14 IA__g_closure_invoke
    at gclosure.c line 490
  • #15 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #16 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #17 IA__g_signal_emit
    at gsignal.c line 2241
  • #18 g_object_dispatch_properties_changed
    at gobject.c line 561
  • #19 g_object_notify_dispatcher
    at gobject.c line 242
  • #20 IA__g_object_set_valist
    at gobjectnotifyqueue.c line 123
  • #21 IA__g_object_set
    at gobject.c line 1181
  • #22 rb_browser_source_browser_changed_cb
    at rb-browser-source.c line 838
  • #23 IA__g_cclosure_marshal_VOID__PARAM
    at gmarshal.c line 531
  • #24 IA__g_closure_invoke
    at gclosure.c line 490
  • #25 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #26 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #27 IA__g_signal_emit
    at gsignal.c line 2241
  • #28 g_object_dispatch_properties_changed
    at gobject.c line 561
  • #29 g_object_notify_dispatcher
    at gobject.c line 242
  • #30 IA__g_object_notify
    at gobjectnotifyqueue.c line 123
  • #31 rebuild_child_model
    at rb-library-browser.c line 581
  • #32 rb_library_browser_set_selection
    at rb-library-browser.c line 622
  • #33 view_property_selected_cb
    at rb-library-browser.c line 351
  • #34 IA__g_cclosure_marshal_VOID__POINTER
    at gmarshal.c line 601
  • #35 IA__g_closure_invoke
    at gclosure.c line 490
  • #36 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #37 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #38 IA__g_signal_emit
    at gsignal.c line 2241
  • #39 rb_property_view_selection_changed_cb
    at rb-property-view.c line 705
  • #40 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #41 IA__g_closure_invoke
    at gclosure.c line 490
  • #42 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #43 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #44 IA__g_signal_emit
    at gsignal.c line 2241
  • #45 _gtk_tree_selection_internal_select_node
    at gtktreeselection.c line 1409
  • #46 gtk_tree_view_real_set_cursor
    at gtktreeview.c line 12240
  • #47 gtk_tree_view_button_press
    at gtktreeview.c line 2596
  • #48 rb_tree_dnd_button_press_event_cb
    at rb-tree-dnd.c line 857
  • #49 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 83
  • #50 IA__g_closure_invoke
    at gclosure.c line 490
  • #51 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #52 IA__g_signal_emit_valist
    at gsignal.c line 2207
  • #53 IA__g_signal_emit
    at gsignal.c line 2241
  • #54 gtk_widget_event_internal
    at gtkwidget.c line 3901
  • #55 IA__gtk_widget_event
    at gtkwidget.c line 3707
  • #56 IA__gtk_propagate_event
    at gtkmain.c line 2187
  • #57 IA__gtk_main_do_event
    at gtkmain.c line 1406
  • #58 gdk_event_dispatch
    at gdkevents-x11.c line 2320
  • #59 IA__g_main_context_dispatch
    at gmain.c line 2043
  • #60 g_main_context_iterate
    at gmain.c line 2675
  • #61 IA__g_main_loop_run
    at gmain.c line 2879
  • #62 IA__gtk_main
    at gtkmain.c line 1000
  • #63 main
    at main.c line 375
  • #0 __kernel_vsyscall

Comment 1 James "Doc" Livingston 2006-08-02 11:37:15 UTC
Created attachment 70067 [details] [review]
more refcounting fixes

I've seen a crash similar to this. This patch fixes some refcounting issues in the play orders.
Comment 2 James "Doc" Livingston 2006-08-06 10:05:28 UTC
After looking over this again, I think it should fix all the refcounting issues in the play orders, so I've committed it.

This should fix the problem, but feel free to re-open if you can reproduce it.
Comment 3 Christian Kirbach 2006-08-10 13:11:05 UTC
with cvs build from today


  • #9 IA__g_return_if_fail_warning
    at gmessages.c line 532
  • #10 IA__g_signal_handlers_disconnect_matched
    at gsignal.c line 1927
  • #11 rb_play_order_query_model_changed
    at rb-play-order.c line 548
  • #12 rb_play_order_query_model_changed_cb
    at rb-play-order.c line 519
  • #13 IA__g_cclosure_marshal_VOID__PARAM
    at gmarshal.c line 531
  • #14 IA__g_closure_invoke
    at gclosure.c line 490
  • #15 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #16 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #17 IA__g_signal_emit
    at gsignal.c line 2241
  • #18 g_object_dispatch_properties_changed
    at gobject.c line 561
  • #19 g_object_notify_dispatcher
    at gobject.c line 242
  • #20 IA__g_object_set_valist
    at gobjectnotifyqueue.c line 123
  • #21 IA__g_object_set
    at gobject.c line 1181
  • #22 rb_browser_source_browser_changed_cb
    at rb-browser-source.c line 838
  • #23 IA__g_cclosure_marshal_VOID__PARAM
    at gmarshal.c line 531
  • #24 IA__g_closure_invoke
    at gclosure.c line 490
  • #25 signal_emit_unlocked_R
    at gsignal.c line 2438

Comment 4 Christian Kirbach 2006-08-10 13:11:20 UTC
with cvs build from today


  • #9 IA__g_return_if_fail_warning
    at gmessages.c line 532
  • #10 IA__g_signal_handlers_disconnect_matched
    at gsignal.c line 1927
  • #11 rb_play_order_query_model_changed
    at rb-play-order.c line 548
  • #12 rb_play_order_query_model_changed_cb
    at rb-play-order.c line 519
  • #13 IA__g_cclosure_marshal_VOID__PARAM
    at gmarshal.c line 531
  • #14 IA__g_closure_invoke
    at gclosure.c line 490
  • #15 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #16 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #17 IA__g_signal_emit
    at gsignal.c line 2241
  • #18 g_object_dispatch_properties_changed
    at gobject.c line 561
  • #19 g_object_notify_dispatcher
    at gobject.c line 242
  • #20 IA__g_object_set_valist
    at gobjectnotifyqueue.c line 123
  • #21 IA__g_object_set
    at gobject.c line 1181
  • #22 rb_browser_source_browser_changed_cb
    at rb-browser-source.c line 838
  • #23 IA__g_cclosure_marshal_VOID__PARAM
    at gmarshal.c line 531
  • #24 IA__g_closure_invoke
    at gclosure.c line 490
  • #25 signal_emit_unlocked_R
    at gsignal.c line 2438

Comment 5 Christian Kirbach 2006-08-10 13:15:14 UTC
steps to reproduce:

select artist
select album
select "all artists"
Comment 6 James "Doc" Livingston 2006-08-11 13:41:39 UTC
Something very odd is going on:

  • #10 IA__g_signal_handlers_disconnect_matched
    at gsignal.c line 1927

The "func" parameter is reported as 0, when is is being passed the address of rb_play_order_entry_added_cb() - however it has a normal value in the OP's backtrace.

If this is still reproducable (I can't reproduce it), could you see what the warning it is printing out is?
Comment 7 Christian Kirbach 2006-08-11 14:03:53 UTC
console output during crash

(rhythmbox:25292): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject'

(rhythmbox:25292): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer

GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
aborting...
GTK Accessibility Module initialized
Bonobo accessibility support initialized
GTK Accessibility Module initialized
Bonobo accessibility support initialized


Comment 8 Jonathan Matthew 2006-08-11 21:43:55 UTC
*** Bug 350922 has been marked as a duplicate of this bug. ***
Comment 9 Jonathan Matthew 2006-08-12 01:13:07 UTC
*** Bug 346664 has been marked as a duplicate of this bug. ***
Comment 10 Jonathan Matthew 2006-08-13 21:40:40 UTC
*** Bug 351141 has been marked as a duplicate of this bug. ***
Comment 11 Jonathan Matthew 2006-08-13 23:12:00 UTC
Created attachment 70836 [details] [review]
hackish fix

This should fix the crash, but there are definitely more ref counting problems related to the browser.
Comment 12 Jonathan Matthew 2006-08-14 11:56:51 UTC
Actually, that patch is correct.  The browser does hold a reference to the output model, but it currently unrefs it at the end of rebuild_child_model.  Remaining problems seem to be in the handling of the root and intermediate query models.
Comment 13 Christian Kirbach 2006-08-14 12:38:27 UTC
patch fixes the crash for me and does not seem to cause any troubles
Comment 14 Jonathan Matthew 2006-08-14 21:42:15 UTC
Created attachment 70899 [details] [review]
better patch

This seems to fix all the query model leaks I was seeing in the browser.
Comment 15 Christian Kirbach 2006-08-14 23:36:52 UTC
last patch also works for me
Comment 16 James "Doc" Livingston 2006-08-15 05:05:15 UTC
Looks fine to me.
Comment 17 Jonathan Matthew 2006-08-15 09:40:23 UTC
OK, committed.
Comment 18 Jonathan Matthew 2006-08-19 04:14:40 UTC
*** Bug 352004 has been marked as a duplicate of this bug. ***
Comment 19 Karsten Bräckelmann 2006-08-31 21:19:51 UTC
*** Bug 353728 has been marked as a duplicate of this bug. ***
Comment 20 Jonathan Matthew 2006-09-02 00:58:19 UTC
*** Bug 342197 has been marked as a duplicate of this bug. ***