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 696111 - Banshee hangs and uses 100% CPU on startup
Banshee hangs and uses 100% CPU on startup
Status: RESOLVED FIXED
Product: banshee
Classification: Other
Component: general
2.6.0
Other Linux
: Normal critical
: ---
Assigned To: Banshee Maintainers
Banshee Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-03-18 23:26 UTC by Chad Rodrigue
Modified: 2013-04-07 15:28 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
workaround for glib/glibsharp issue (2.39 KB, patch)
2013-04-04 19:46 UTC, Andrés G. Aragoneses (IRC: knocte)
committed Details | Review

Description Chad Rodrigue 2013-03-18 23:26:40 UTC
As the title says.  

Relevant --debug info:

[7 Debug 18:24:13.933] Refreshing any podcasts that haven't been updated in over an hour
[1 Info  18:24:14.010] Creating Accessible for Banshee.Collection.Gui.TrackListView

(Banshee:18916): GLib-GObject-WARNING **: attempting to add an interface (AtkComponent) to class (__gtksharp_95_Hyena_Gui_BaseWidgetAccessible) after class_init

(Banshee:18916): GLib-GObject-WARNING **: attempting to add an interface (AtkTable) to class (__gtksharp_96_Hyena_Data_Gui_Accessibility_ListViewAccessible+601+5b+5bBanshee_Collection_TrackInfo+2c+20Banshee_Core+2c+20Version+3d2_6_0_0+2c+20Culture+3dneutral+2c+20PublicKeyToken+3dnull+5d+5d) after class_init

(Banshee:18916): GLib-GObject-WARNING **: attempting to add an interface (AtkSelection) to class (__gtksharp_96_Hyena_Data_Gui_Accessibility_ListViewAccessible+601+5b+5bBanshee_Collection_TrackInfo+2c+20Banshee_Core+2c+20Version+3d2_6_0_0+2c+20Culture+3dneutral+2c+20PublicKeyToken+3dnull+5d+5d) after class_init
Exception in Gtk# callback delegate
  Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.ArgumentException: Invalid signal name: model_changed
  at GLib.Signal.Emit (GLib.Object instance, System.String detailed_signal, System.Object[] args) [0x00000] in <filename unknown>:0 
  at Hyena.Data.Gui.Accessibility.ListViewAccessible`1[Banshee.Collection.TrackInfo].EmitModelChanged () [0x00000] in <filename unknown>:0 
  at Hyena.ThreadAssist.ProxyToMain (Hyena.InvokeHandler handler) [0x00000] in <filename unknown>:0 
  at Hyena.Data.Gui.Accessibility.ListViewAccessible`1[Banshee.Collection.TrackInfo].OnModelChanged (System.Object o, System.EventArgs a) [0x00000] in <filename unknown>:0 
  at Hyena.Data.Gui.Accessibility.ListViewAccessible`1[Banshee.Collection.TrackInfo]..ctor (GLib.Object widget) [0x00000] in <filename unknown>:0 
  at Hyena.Data.Gui.ListViewAccessibleFactory`1[Banshee.Collection.TrackInfo].OnCreateAccessible (GLib.Object obj) [0x00000] in <filename unknown>:0 
  at Atk.ObjectFactory+Marshaler.CreateAccessible_cb (IntPtr raw) [0x00000] in <filename unknown>:0 
   at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal)
   at Atk.ObjectFactory+Marshaler.CreateAccessible_cb(IntPtr raw)
   at Gtk.Application.gtk_main()
   at Gtk.Application.Run()
   at Banshee.Gui.GtkBaseClient.Run()
   at Banshee.Gui.GtkBaseClient.Startup()
   at Hyena.Gui.CleanRoomStartup.Startup(Hyena.Gui.StartupInvocationHandler startup)
   at Banshee.Gui.GtkBaseClient.Startup()
   at Banshee.Gui.GtkBaseClient.Startup(System.String[] args)
   at Nereid.Client.Main(System.String[] args)
   at System.AppDomain.ExecuteAssembly(System.AppDomain , System.Reflection.Assembly , System.String[] )
   at System.AppDomain.ExecuteAssemblyInternal(System.Reflection.Assembly a, System.String[] args)
   at System.AppDomain.ExecuteAssembly(System.String assemblyFile, System.Security.Policy.Evidence assemblySecurity, System.String[] args)
   at System.AppDomain.ExecuteAssembly(System.String assemblyFile)
   at Booter.Booter.BootClient(System.String clientName)
   at Booter.Booter.Main()
Comment 1 Andrés G. Aragoneses (IRC: knocte) 2013-03-18 23:29:40 UTC
Thanks for taking the time to report this bug.

Can you tell us the distro you use and the version? Also, can you tell us the version of atk and gtk that it uses? Thanks
Comment 2 Chad Rodrigue 2013-03-19 15:18:21 UTC
Ubuntu Raring Ringtail (13.04), current as of the time the bug was created.  

ATK:
libatk1.0-0 (2.7.91-0ubuntu1) ATK accessibility toolkit

GTK+:
libgtk2.0-0 (2.24.16-1ubuntu2) GTK+ graphical user interface library
libgtk-3-0 (3.6.4-0ubuntu6) GTK+ graphical user interface library

I know it is an unreleased version of Ubuntu, but the defect seemed severe enough to make reporting the bug prudent. 

Replication should be easy -- all I did was install, update to the latest, and install the included Banshee deb.  I tried to troubleshoot by erasing my configs and Banshee DB, too, even creating a new user... no dice.
Comment 3 Andrés G. Aragoneses (IRC: knocte) 2013-03-19 15:25:35 UTC
Given that you're testing with such a bleeding edge distro, do you mind testing the gtk3 branch of banshee?
Comment 4 Chad Rodrigue 2013-03-19 16:23:42 UTC
There's a GTK*3* branch of Banshee??  *gasp*

Nope.  I do not mind at ALL.  ...how do I get it?
Comment 5 Andrés G. Aragoneses (IRC: knocte) 2013-03-19 16:25:37 UTC
Yes, it's very experimental but should work:

Bullet 2 of http://banshee.fm/download/development/ , after cloning, do "git checkout gtk3"
Comment 6 Chad Rodrigue 2013-03-19 18:37:54 UTC
I can't seem to find a required dependency either in the Ubuntu repos, elsewhere, and even in the mono/glib-sharp source code repo:

configure: error: Package requirements (glib-sharp-3.0 >= 2.99.1) were not met:

No package 'glib-sharp-3.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

...any pointers?
Comment 7 Andrés G. Aragoneses (IRC: knocte) 2013-03-19 18:43:13 UTC
You need to install https://github.com/mono/gtk-sharp.git master branch.
Comment 8 Chad Rodrigue 2013-03-19 23:13:55 UTC
Good news: It compiles!  And I have 64-bit debs (of Banshee and GTK-Sharp 3.0 from Git) if anyone wants them.  

Bad news: It doesn't run.  Crash report:

Missing method System.Threading.Monitor::Enter(object,bool&) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /usr/lib/mono/gac/dbus-sharp/1.0.0.0__5675b0c3093115b5/dbus-sharp.dll
[Warn  17:43:59.575] DBus support could not be started. Disabling for this session. - System.MissingMethodException: Method not found: 'System.Threading.Monitor.Enter'. (in `dbus-sharp')
  at DBus.BusObject.GetObject (DBus.Connection conn, System.String bus_name, DBus.ObjectPath object_path, System.Type declType) [0x00000] in <filename unknown>:0 
  at DBus.Connection.GetObject (System.Type type, System.String bus_name, DBus.ObjectPath path) [0x00000] in <filename unknown>:0 
  at DBus.Connection.GetObject[IBus] (System.String bus_name, DBus.ObjectPath path) [0x00000] in <filename unknown>:0 
  at DBus.Bus..ctor (System.String address) [0x00000] in <filename unknown>:0 
  at DBus.Bus.Open (System.String address) [0x00000] in <filename unknown>:0 
  at DBus.Bus.get_System () [0x00000] in <filename unknown>:0 
System.Exception: Unable to open the system message bus. (in `dbus-sharp')
  at DBus.Bus.get_System () [0x00000] in <filename unknown>:0 
  at DBus.BusG.Init () [0x00000] in <filename unknown>:0 
  at Banshee.ServiceStack.DBusConnection.Connect (System.String serviceName, Boolean init) [0x00000] in <filename unknown>:0 
  at Banshee.ServiceStack.DBusConnection.GrabDefaultName () [0x00000] in <filename unknown>:0 
Missing method System.Threading.Monitor::Enter(object,bool&) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /usr/lib/mono/gac/dbus-sharp/1.0.0.0__5675b0c3093115b5/dbus-sharp.dll
[Info  17:43:59.603] Running Banshee 2.6.0: [git-checkout (linux-gnu, x86_64) @ 2013-03-19 17:09:15 CDT]
Missing method System.Reflection.Assembly::op_Equality(Assembly,Assembly) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /usr/lib/mono/gac/Mono.Addins/0.6.0.0__0738eb9f132ed756/Mono.Addins.dll
Exception has been thrown by the target of an invocation.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.MissingMethodException: Method not found: 'System.Reflection.Assembly.op_Equality'.
  at Banshee.ServiceStack.ServiceManager.InitializeAddins () [0x00000] in <filename unknown>:0 
  at Banshee.ServiceStack.ServiceManager.DefaultInitialize () [0x00000] in <filename unknown>:0 
  at Banshee.ServiceStack.Application.Initialize () [0x00000] in <filename unknown>:0 
  at Banshee.Gui.GtkBaseClient.Initialize (Boolean registerCommonServices) [0x00000] in <filename unknown>:0 
  at Banshee.Gui.GtkBaseClient..ctor (Boolean initializeDefault, System.String defaultIconName) [0x00000] in <filename unknown>:0 
  at Banshee.Gui.GtkBaseClient..ctor () [0x00000] in <filename unknown>:0 
  at Nereid.Client..ctor () [0x00000] in <filename unknown>:0 
  at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (System.Reflection.MonoCMethod,object,object[],System.Exception&)
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type) [0x00000] in <filename unknown>:0 
  at Banshee.Gui.GtkBaseClient.Startup () [0x00000] in <filename unknown>:0 
  at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.StartupInvocationHandler startup) [0x00000] in <filename unknown>:0
Comment 9 Andrés G. Aragoneses (IRC: knocte) 2013-03-20 00:55:22 UTC
Oh, that is an issue that we have already "fixed" in master, but have not ported it to the gtk3 branch yet, can you cherry-pick this commit:

https://git.gnome.org/browse/banshee/commit/?id=3d3f7899465ee46e634b53c236401f612dac1492

If that doesn't solve it, try cherry-picking this one as well:

https://git.gnome.org/browse/banshee/commit/?id=4c590128f4ef00cdb0e833574d25441a578644f6
Comment 10 Andrés G. Aragoneses (IRC: knocte) 2013-03-20 00:58:32 UTC
Oh, that is an issue that we have already "fixed" in master, but have not ported it to the gtk3 branch yet, can you cherry-pick this commit:

https://git.gnome.org/browse/banshee/commit/?id=3d3f7899465ee46e634b53c236401f612dac1492

If that doesn't solve it, try cherry-picking this one as well:

https://git.gnome.org/browse/banshee/commit/?id=4c590128f4ef00cdb0e833574d25441a578644f6
Comment 11 Chad Rodrigue 2013-03-20 15:51:12 UTC
Good news: with those two changes cherry-picked, Banshee compiles and launches into a useful GUI.

Bad news: Tools -> Re-scan music library causes the same symptoms as the bug report states (Banshee becomes unresponsive, uses 100% of whatever CPU core its got a hold of, and has actually crashed).  Crash report:  

Marshaling activate signal
Exception in Gtk# callback delegate
  Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[System.IntPtr,System.Delegate].get_Item (IntPtr key) [0x00000] in <filename unknown>:0 
  at Gtk.Widget.add_Destroyed (System.EventHandler value) [0x00000] in <filename unknown>:0 
  at Hyena.Widgets.AnimatedWidget..ctor (Gtk.Widget widget, UInt32 duration, Easing easing, Blocking blocking, Boolean horizontal) [0x00000] in <filename unknown>:0 
  at Hyena.Widgets.AnimatedBox.Pack (Gtk.Widget widget, UInt32 duration, Easing easing, Blocking blocking, Boolean end) [0x00000] in <filename unknown>:0 
  at Hyena.Widgets.AnimatedBox.PackEnd (Gtk.Widget widget, UInt32 duration, Easing easing, Blocking blocking) [0x00000] in <filename unknown>:0 
  at Hyena.Widgets.AnimatedBox.PackEnd (Gtk.Widget widget, Easing easing) [0x00000] in <filename unknown>:0 
  at Banshee.Gui.Widgets.UserJobTileHost.AddJob (Hyena.Jobs.Job job) [0x00000] in <filename unknown>:0 
  at Banshee.Gui.Widgets.UserJobTileHost+<OnJobAdded>c__AnonStorey17.<>m__90 () [0x00000] in <filename unknown>:0 
  at Hyena.ThreadAssist.ProxyToMain (Hyena.InvokeHandler handler) [0x00000] in <filename unknown>:0 
  at Banshee.Gui.Widgets.UserJobTileHost.OnJobAdded (Hyena.Jobs.Job job) [0x00000] in <filename unknown>:0 
  at (wrapper delegate-invoke) <Module>:invoke_void__this___Job (Hyena.Jobs.Job)
  at Hyena.Jobs.Scheduler.Add (Hyena.Jobs.Job job) [0x00000] in <filename unknown>:0 
  at Banshee.ServiceStack.UserJob.Register () [0x00000] in <filename unknown>:0 
  at Banshee.Collection.RescanPipeline.BuildJob () [0x00000] in <filename unknown>:0 
  at Banshee.Collection.RescanPipeline..ctor (Banshee.Library.LibrarySource psource) [0x00000] in <filename unknown>:0 
  at Banshee.Gui.GlobalActions.<GlobalActions>m__98 (System.Object , System.EventArgs ) [0x00000] in <filename unknown>:0 
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0 
  at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x00000] in <filename unknown>:0 
  at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00000] in <filename unknown>:0 
  at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <filename unknown>:0 
  at GLib.Signal.ClosureInvokedCB (System.Object o, GLib.ClosureInvokedArgs args) [0x00000] in <filename unknown>:0 
  at GLib.SignalClosure.Invoke (GLib.ClosureInvokedArgs args) [0x00000] in <filename unknown>:0 
  at GLib.SignalClosure.MarshalCallback (IntPtr raw_closure, IntPtr return_val, UInt32 n_param_vals, IntPtr param_values, IntPtr invocation_hint, IntPtr marshal_data) [0x00000] in <filename unknown>:0 
   at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal)
   at GLib.SignalClosure.MarshalCallback(IntPtr raw_closure, IntPtr return_val, UInt32 n_param_vals, IntPtr param_values, IntPtr invocation_hint, IntPtr marshal_data)
   at Gtk.Application.gtk_main()
   at Gtk.Application.Run()
   at Banshee.Gui.GtkBaseClient.Run()
   at Banshee.Gui.GtkBaseClient.Startup()
   at Hyena.Gui.CleanRoomStartup.Startup(Hyena.Gui.StartupInvocationHandler startup)
   at Banshee.Gui.GtkBaseClient.Startup()
   at Banshee.Gui.GtkBaseClient.Startup(System.String[] args)
   at Nereid.Client.Main(System.String[] args)
   at System.AppDomain.ExecuteAssembly(System.AppDomain , System.Reflection.Assembly , System.String[] )
   at System.AppDomain.ExecuteAssemblyInternal(System.Reflection.Assembly a, System.String[] args)
   at System.AppDomain.ExecuteAssembly(System.String assemblyFile, System.Security.Policy.Evidence assemblySecurity, System.String[] args)
   at System.AppDomain.ExecuteAssembly(System.String assemblyFile)
   at Booter.Booter.BootClient(System.String clientName)
   at Booter.Booter.Main()
Comment 12 Andrés G. Aragoneses (IRC: knocte) 2013-03-20 15:53:42 UTC
(In reply to comment #11)
> Good news: with those two changes cherry-picked, Banshee compiles and launches
> into a useful GUI.

Great! Thanks so much for testing.

I've been able to reproduce the problem you found for 2.6.0 in 13.04 and I'll be committing a fix shortly.


> Bad news: Tools -> Re-scan music library causes the same symptoms as the bug
> report states (Banshee becomes unresponsive, uses 100% of whatever CPU core its
> got a hold of, and has actually crashed).

That is a completely different bug, can you create a new bug report for it?
Comment 13 Andrés G. Aragoneses (IRC: knocte) 2013-04-04 19:46:19 UTC
Created attachment 240655 [details] [review]
workaround for glib/glibsharp issue

Note that this issue has been reverted for another cycle more (more info in bug 687659), so if Ubuntu properly upgrades to glib 2.36.1 we're covered and we would not need this patch.

I would still commit it just in case (maybe only to the 2-6 branch?)

Also, for gtk-sharp going forward, I have a fix ready, which I'll post as a pull request to the bug (https://bugzilla.xamarin.com/show_bug.cgi?id=11510).
Comment 14 Bertrand Lorentz 2013-04-07 15:27:44 UTC
Comment on attachment 240655 [details] [review]
workaround for glib/glibsharp issue

Thanks for all the investigations and the patch!
I've committed it to hyena git master:
https://git.gnome.org/browse/hyena/commit/?id=fec01af8d
And also to the banshee-stable-2.6 branch, which will be included in Banshee 2.6.1.
Comment 15 Bertrand Lorentz 2013-04-07 15:28:32 UTC
This problem has been fixed in our software repository. The fix will go into the next software release. Thank you for your bug report.