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 587409 - banshee crashes on song change
banshee crashes on song change
Status: RESOLVED FIXED
Product: banshee
Classification: Other
Component: Playback
git master
Other All
: Normal critical
: 1.x
Assigned To: Banshee Maintainers
Banshee Maintainers
: 587530 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-06-30 09:51 UTC by Sebastian Krämer
Modified: 2010-05-23 09:33 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Sebastian Krämer 2009-06-30 09:51:16 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
Comment 1 Bertrand Lorentz 2009-06-30 12:29:02 UTC
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.
Comment 2 Sebastian Krämer 2009-06-30 12:43:11 UTC
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.
Comment 3 Bertrand Lorentz 2009-06-30 14:06:55 UTC
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.
Comment 4 Sebastian Krämer 2009-07-01 09:12:02 UTC
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
Comment 5 Christoph Wickert 2009-07-01 09:42:46 UTC
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.
Comment 6 Bertrand Lorentz 2009-07-01 11:26:36 UTC
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.
Comment 7 Gabriel Burt 2009-07-02 15:46:59 UTC
*** Bug 587530 has been marked as a duplicate of this bug. ***
Comment 8 Sebastian Krämer 2010-05-12 10:53:05 UTC
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.
Comment 9 Bertrand Lorentz 2010-05-23 09:33:21 UTC
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.