GNOME Bugzilla – Bug 587409
banshee crashes on song change
Last modified: 2010-05-23 09:33:21 UTC
Steps to reproduce: I play any mp3 file (which worked some versions ago.. no regression testing yet..) -- when it's finished and skips to the next song, I get a crash, indicated by a dialog box. Banshee continues playing until I close that box, then finally aborts. Stack trace: [Debug 11:42:23.264] (libbanshee:player) bp_stop: setting state to GST_STATE_NULL [Debug 11:42:23.313] Player state change: Playing -> Idle [Debug 11:42:23.317] Track The Cranberries - Never Grow Old (on Wake Up and Smell the Coffee) <00:02:36.2390000> [file:///home/xxxx/Music/Music%20Collection/The%20Cranberries/The%20Cranberries%20-%20Wake%20Up%20and%20Smell%20the%20Coffee/Wake%20Up%20and%20Smell%20the%20Coffee%20-%2001.%20Never%20Grow%20Old.mp3] had playtime of 155470 msec (155sec), duration 156239 msec, queued: False [Debug 11:42:23.341] Querying model for track to play in Linear:Next mode [Debug 11:42:23.357] Player state change: Idle -> Loading [Debug 11:42:23.568] (libbanshee:player) scaled volume: 1.000000 (ReplayGain) * 0.920000 (User) = 0.920000 [Debug 11:42:23.569] Player state change: Loading -> Loaded [Debug 11:42:23.570] (libbanshee:player) scaled volume: 1.000000 (ReplayGain) * 0.920000 (User) = 0.920000 Array index is out of range. System.IndexOutOfRangeException: Array index is out of range. at NDesk.DBus.MessageReader.ReadPad (int) [0x00012] in /builddir/build/BUILD/ndesk-dbus-0.6.1a/src/MessageReader.cs:432 at NDesk.DBus.MessageReader.MarshalUInt (byte*) [0x00000] in /builddir/build/BUILD/ndesk-dbus-0.6.1a/src/MessageReader.cs:192 at NDesk.DBus.MessageReader.ReadUInt32 () [0x00000] in /builddir/build/BUILD/ndesk-dbus-0.6.1a/src/MessageReader.cs:222 at NDesk.DBus.MessageReader.ReadString () <0x0000f> at NDesk.DBus.MessageReader.ReadValue (System.Type) [0x00084] in /builddir/build/BUILD/ndesk-dbus-0.6.1a/src/MessageReader.cs:52 at NDesk.DBus.MessageReader.ReadStruct (System.Type) [0x00026] in /builddir/build/BUILD/ndesk-dbus-0.6.1a/src/MessageReader.cs:410 at NDesk.DBus.MessageReader.ReadValue (System.Type) [0x0010d] in /builddir/build/BUILD/ndesk-dbus-0.6.1a/src/MessageReader.cs:64 at NDesk.DBus.MessageHelper.GetDynamicValues (NDesk.DBus.Message,System.Type[]) [0x00086] in /builddir/build/BUILD/ndesk-dbus-0.6.1a/src/Mapper.cs:289 at NDesk.DBus.BusObject.SendMethodCall (string,string,string,NDesk.DBus.MessageWriter,System.Type,System.Exception&) [0x000b1] in /builddir/build/BUILD/ndesk-dbus-0.6.1a/src/BusObject.cs:149 at INotificationsProxy.get_ServerInformation () <0x00073> at Notifications.Global.get_ServerInformation () <0x00023> at Banshee.NotificationArea.NotificationAreaService.get_IsNotificationDaemon () [0x00000] in /home/xxxx/src/banshee/banshee-git/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/GtkNotificationAreaBox.cs:1 at Banshee.NotificationArea.NotificationAreaService.ShowTrackNotification () [0x000d3] in /home/xxxx/src/banshee/banshee-git/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs:435 at Banshee.NotificationArea.NotificationAreaService.OnPlayerEvent (Banshee.MediaEngine.PlayerEventArgs) [0x0003b] in /home/xxxx/src/banshee/banshee-git/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs:362 at Banshee.MediaEngine.PlayerEngineService.RaiseEvent (Banshee.MediaEngine.PlayerEventArgs) [0x00061] in /home/xxxx/src/banshee/banshee-git/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs:735 at Banshee.MediaEngine.PlayerEngineService.OnEngineEventChanged (Banshee.MediaEngine.PlayerEventArgs) [0x00061] in /home/xxxx/src/banshee/banshee-git/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs:249 at Banshee.MediaEngine.PlayerEngine.RaiseEventChanged (Banshee.MediaEngine.PlayerEventArgs) [0x0000d] in /home/xxxx/src/banshee/banshee-git/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs:179 at Banshee.MediaEngine.PlayerEngine.OnEventChanged (Banshee.MediaEngine.PlayerEventArgs) [0x0001e] in /home/xxxx/src/banshee/banshee-git/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs:167 at Banshee.MediaEngine.PlayerEngine.OnEventChanged (Banshee.MediaEngine.PlayerEvent) [0x00000] in /home/xxxx/src/banshee/banshee-git/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs:161 at Banshee.GStreamer.PlayerEngine.OnStateChange (intptr,Banshee.GStreamer.GstState,Banshee.GStreamer.GstState,Banshee.GStreamer.GstState) [0x0003f] in /home/xxxx/src/banshee/banshee-git/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs:247 at (wrapper native-to-managed) Banshee.GStreamer.PlayerEngine.OnStateChange (intptr,Banshee.GStreamer.GstState,Banshee.GStreamer.GstState,Banshee.GStreamer.GstState) <0x0007e> at (wrapper managed-to-native) Gtk.Application.gtk_main () <0x00052> at Gtk.Application.Run () <0x0000b> at Banshee.Gui.GtkBaseClient.Run () [0x00000] in /home/xxxx/src/banshee/banshee-git/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs:148 at Banshee.Gui.GtkBaseClient.Startup () [0x00000] in /home/xxxx/src/banshee/banshee-git/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs:74 at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.CleanRoomStartup/StartupInvocationHandler) [0x00044] in /home/xxxx/src/banshee/banshee-git/src/Libraries/Hyena.Gui/Hyena.Gui/CleanRoomStartup.cs:54 [Debug 11:42:24.631] TrackInfoDisplay RenderAnimation: 30.00 FPS [Debug 11:42:24.676] Starting - Saving Metadata to File [Debug 11:42:24.764] Saving metadata for The Cranberries - Never Grow Old (on Wake Up and Smell the Coffee) <00:02:36.2390000> [file:///home/xxxx/Music/Music%20Collection/The%20Cranberries/The%20Cranberries%20-%20Wake%20Up%20and%20Smell%20the%20Coffee/Wake%20Up%20and%20Smell%20the%20Coffee%20-%2001.%20Never%20Grow%20Old.mp3] [Debug 11:42:24.815] TrackInfoDisplay RenderAnimation: 33.00 FPS [Debug 11:42:24.875] Finished - Saving Metadata to File (Nereid:3177): Gdk-CRITICAL **: gdk_x11_atom_to_xatom_for_display: assertion `atom != GDK_NONE' failed Other information: using git-master @ 95ae56a1008eb75a6461808a8f8d4fa224ba7e7d
Which notification system do you have on your system, notification-daemon or notify-osd, and which version ? It looks like the crash happens when banshee tries to ask it for its name through d-bus.
I wasn't aware of these two notification systems. Since there is "/usr/libexec/xfce4-notifyd" in the list of running processes, I guess the answer is "notification-daemon". # yum info xfce4-notifyd Installed Packages Name : xfce4-notifyd Arch : x86_64 Version : 0.1.0 Release : 2.fc11 I'm not sure but maybe this crash is related to another problem I encountered: not being able to seek in mp3 files. For vorbis files, seeking works, and so does the song change.
It looks like it's a specific problem with xfce4-notifyd (which is another notification system I didn't know about). Notify-sharp, as used by banshee, expects the server information to be composed of 4 strings. This is the case with notification-daemon and notify-osd. xfce4-notifyd only has 3 strings in that structure. I'd guess xfce4-notifyd is the one that needs to be fixed. You might want to get in touch with them or your distro about this. This has probably nothing to do with seeking.
Thanks for the quick response! > I'd guess xfce4-notifyd is the one that needs to be fixed. You might want to > get in touch with them or your distro about this. A bug was filed to fedora's bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=509081
Hi, I'm the maintainer of xfce4-notifyd in Fedora. (In reply to comment #3) > Notify-sharp, as used by banshee, expects the server information to be composed > of 4 strings. This is the case with notification-daemon and notify-osd. > xfce4-notifyd only has 3 strings in that structure. Bertrand, you are most likely correct, but how do you diagnose this from the trace? (I'm not particularly good in reading traces). The fourth argument is "reason", right? AFAIK this was reverted in libnotify back in September.
The trace isn't that helpful. My findings come from a quick dig through the various code bases. The problem is triggered by the fact that banshee is now calling the org.freedesktop.Notifications.GetServerInformation d-bus command, to identify the notification server. We're doing that because notify-osd in Ubuntu doesn't want its images scaled. Here's what's in notify-sharp, from http://trac.galago-project.org/browser/trunk/notify-sharp/src/Global.cs : public struct ServerInformation { public string Name; public string Vendor; public string Version; public string SpecVersion; } In notification-daemon, from http://trac.galago-project.org/browser/trunk/notification-daemon/src/daemon/daemon.c : boolean notify_daemon_get_server_information(NotifyDaemon *daemon, char **out_name, char **out_vendor, char **out_version, char **out_spec_ver) In xfce4-notifyd, from http://git.xfce.org/kelnos/xfce4-notifyd/tree/xfce4-notifyd/xfce-notify-daemon.c : static gboolean notify_get_server_information(XfceNotifyDaemon *xndaemon, gchar **OUT_name, gchar **OUT_vendor, gchar **OUT_version, GError **error); Strangely, the spec (http://www.galago-project.org/specs/notification/0.9/x408.html#command-get-server-information) only shows 3 fields : name, vendor and version. My guess is that the code is ahead of the spec, or there's a newer spec that I couldn't find.
*** Bug 587530 has been marked as a duplicate of this bug. ***
Well, the issue was solved for me (probably due to xfce updates (?) in fedora by cwickert), notification works reliably now. There was a duplicate so I won't close the bug myself and leave that decision to others.
Sebastian, thanks for reporting back on this old issue. Looks like it was fixed in xfce4-notifyd, but in any case, Banshee shouldn't crash anymore in that situation, thanks to the following commit, done a while ago : http://git.gnome.org/browse/banshee/commit/?id=1efe2dbcba78e23fd53d42dff0498a6c37e59afb So closing as FIXED.