GNOME Bugzilla – Bug 587643
Can't seek in FLAC files
Last modified: 2010-05-01 06:13:48 UTC
When I move the slider to seek ahead in FLAC files, Banshee skips to the next song and puts the "error" icon next to the song I tried to seek in. Here is the output on the console: $ banshee [Info 17:45:21.684] Running Banshee 1.5.0: [Ubuntu 9.04 (linux-gnu, x86_64) @ 2009-06-04 08:49:02 UTC] (Banshee:10758): Gtk-CRITICAL **: gtk_container_child_set_property: assertion `child->parent == GTK_WIDGET (container)' failed [Info 17:45:22.954] All services are started 1.120012s [Info 17:45:23.929] nereid Client Started Submitting via non-uri handler. ** (Banshee:10758): WARNING **: Could not seek in stream [Error 17:46:56.489] GStreamer stream error: Decode Submitting via non-uri handler. Note that I am *not* playing a stream. This is a file that is on my filesystem. If you need some debugging output or need me to run Banshee with some other options to give a better log, let me know.
I can confirm this bug. It is a regression. Hopefully this is fixed by version 1.6.
This is still occuring in version 1.5.1, except I noticed that it only seems to occur to some FLAC files, and seeking to certain locations within those FLAC files still works, just that seeking to most locations do not. Will provide more detailed output later. This might be related to bug 586976.
Confirming in git master. I cannot seek any of my flac files. Seeking just stops playback without any errors or warnings.
Exactly the same symptoms as Alexander. Confirmed.
I too cannot seek in any FLAC files. This is a very annoying bug.
I assume you all are able to seek in your FLAC files in Totem and/or Rhythmbox - eg that this is indeed a Banshee issue and not a GStreamer one.
(In reply to comment #6) > I assume you all are able to seek in your FLAC files in Totem and/or Rhythmbox > - eg that this is indeed a Banshee issue and not a GStreamer one. Yep, the same FLAC files seek fine in Totem but don't seek at all in Banshee.
Yes. In fact, when I need to seek in a FLAC file, I will load it in Totem.
Is any work being done to fix this bug? Sorry for asking, it's just that a large part of my music library is in FLAC, and I would really like to see this fixed by version 1.6.
The patch from bug 600072 fixes this bug as a side effect. Adding as a dependency.
The patch has been removed from that page. I confirm this bug to persist in 1.5.4 also. Seeking does not work but at extremely rare occasions. Log: exec -a banshee-1 mono /usr/lib/banshee-1/Banshee.exe --redirect-log --play-enqueued [Info 15:43:50.000] Running Banshee 1.5.4: [Ubuntu 9.10 (linux-gnu, x86_64) @ 2010-02-28 00:28:45 UTC] (/usr/lib/banshee-1/Banshee.exe:5048): GLib-WARNING **: g_set_prgname() called multiple times [Info 15:43:51.616] Starting collection of anonymous usage data [Info 15:43:53.332] All services are started 3.039492s [Info 15:43:56.319] nereid Client Started [Warn 15:44:21.984] Error posting metrics - Error: NameResolutionFailure (in `System') at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) [0x00000] at System.Net.HttpWebRequest.GetRequestStream () [0x00000] at Hyena.Metrics.HttpPoster.Post () [0x00000] [Info 15:44:21.985] Posted usage data? False [Info 15:48:04.547] Uncached artwork size 157 requested Full thread dump: "<threadpool thread>" tid=0x0x7f6fb59d4910 this=0x0x7f6fb6944000 thread handle 0x45e state : interrupted state owns () at (wrapper managed-to-native) System.Threading.WaitHandle.WaitAny_internal (System.Threading.WaitHandle[],int,bool) <0x0004b> at (wrapper managed-to-native) System.Threading.WaitHandle.WaitAny_internal (System.Threading.WaitHandle[],int,bool) <0xffffffff> at System.Threading.WaitHandle.WaitAny (System.Threading.WaitHandle[],System.TimeSpan,bool) <0x00077> at System.Threading.RegisteredWaitHandle.Wait (object) <0x000bb> at (wrapper runtime-invoke) object.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <0xffffffff> "Main Thread" tid=0x0x7f6fcff37730 this=0x0x7f6fcfdfae58 thread handle 0x404 state : not waiting owns () at (wrapper managed-to-native) Gtk.Application.gtk_main () <0x00052> at (wrapper managed-to-native) Gtk.Application.gtk_main () <0xffffffff> at Gtk.Application.Run () <0x0000b> at Banshee.Gui.GtkBaseClient.Run () <0x00047> at Banshee.Gui.GtkBaseClient.Startup () <0x00046> at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.CleanRoomStartup/StartupInvocationHandler) <0x0008e> at Banshee.Gui.GtkBaseClient.Startup<Nereid.Client> () <0x0005b> at Banshee.Gui.GtkBaseClient.Startup<Nereid.Client> (string[]) <0x000d3> at Nereid.Client.Main (string[]) <0x00017> at (wrapper runtime-invoke) Nereid.Client.runtime_invoke_void_object (object,intptr,intptr,intptr) <0xffffffff> at (wrapper managed-to-native) System.AppDomain.ExecuteAssembly (System.Reflection.Assembly,string[]) <0x0004b> at (wrapper managed-to-native) System.AppDomain.ExecuteAssembly (System.Reflection.Assembly,string[]) <0xffffffff> at System.AppDomain.ExecuteAssemblyInternal (System.Reflection.Assembly,string[]) <0x00037> at System.AppDomain.ExecuteAssembly (string,System.Security.Policy.Evidence,string[]) <0x00037> at (wrapper remoting-invoke-with-check) System.AppDomain.ExecuteAssembly (string,System.Security.Policy.Evidence,string[]) <0xffffffff> at System.AppDomain.ExecuteAssembly (string) <0x0001f> at (wrapper remoting-invoke-with-check) System.AppDomain.ExecuteAssembly (string) <0xffffffff> at Booter.Booter.BootClient (string) <0x0006b> at Booter.Booter.Main () <0x001ab> at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff> "<threadpool thread>" tid=0x0x7f6fa7882910 this=0x0x7f6fcfdfa000 thread handle 0x5cc state : interrupted state owns () "<threadpool thread>" tid=0x0x7f6fb55d2910 this=0x0x7f6fcccf8d38 thread handle 0x475 state : interrupted state owns () at (wrapper managed-to-native) System.Threading.WaitHandle.WaitAny_internal (System.Threading.WaitHandle[],int,bool) <0x0004b> at (wrapper managed-to-native) System.Threading.WaitHandle.WaitAny_internal (System.Threading.WaitHandle[],int,bool) <0xffffffff> at System.Threading.WaitHandle.WaitAny (System.Threading.WaitHandle[],System.TimeSpan,bool) <0x00077> at System.Threading.RegisteredWaitHandle.Wait (object) <0x000bb> at (wrapper runtime-invoke) object.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <0xffffffff> "<threadpool thread>" tid=0x0x7f6fa8f78910 this=0x0x7f6fb4cfe178 thread handle 0x58d state : interrupted state owns () "<threadpool thread>" tid=0x0x7f6fb57d3910 this=0x0x7f6fc4f1c990 thread handle 0x45f state : interrupted state owns () at (wrapper managed-to-native) System.Threading.WaitHandle.WaitAny_internal (System.Threading.WaitHandle[],int,bool) <0x0004b> at (wrapper managed-to-native) System.Threading.WaitHandle.WaitAny_internal (System.Threading.WaitHandle[],int,bool) <0xffffffff> at System.Threading.WaitHandle.WaitAny (System.Threading.WaitHandle[],System.TimeSpan,bool) <0x00077> at System.Threading.RegisteredWaitHandle.Wait (object) <0x000bb> at (wrapper runtime-invoke) object.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <0xffffffff> "<threadpool thread>" tid=0x0x7f6fa3923910 this=0x0x7f6fa9036468 thread handle 0x6d2 state : interrupted state owns () "DAAP Proxy" tid=0x0x7f6fa93a4910 this=0x0x7f6fb693ee58 thread handle 0x5a2 state : interrupted state owns () at (wrapper managed-to-native) System.Net.Sockets.Socket.Accept_internal (intptr,int&,bool) <0x0004e> at (wrapper managed-to-native) System.Net.Sockets.Socket.Accept_internal (intptr,int&,bool) <0xffffffff> at System.Net.Sockets.Socket.Accept () <0x00093> at Banshee.Web.BaseHttpServer.ServerLoop () <0x0014b> at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) <0xffffffff> "Hyena.Jobs.JobRunner (Downloading Lyrics)" tid=0x0x7f6fb502c910 this=0x0x7f6fb693e990 thread handle 0x466 state : interrupted state owns () at (wrapper managed-to-native) System.Threading.WaitHandle.WaitOne_internal (intptr,int,bool) <0x0004e> at (wrapper managed-to-native) System.Threading.WaitHandle.WaitOne_internal (intptr,int,bool) <0xffffffff> at System.Threading.WaitHandle.WaitOne (int,bool) <0x0007b> at System.Net.WebAsyncResult.WaitUntilComplete (int,bool) <0x0004d> at System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult) <0x00077> at System.Net.HttpWebRequest.GetResponse () <0x00053> at Banshee.Lyrics.Network.HttpUtils.GetHtml (string) <0x0012c> at Banshee.Lyrics.Network.HttpUtils.ReadHtmlContent (string) <0x0002f> at Banshee.Lyrics.Sources.LeosLyrics.GetSearchResults (string,string) <0x0002f> at Banshee.Lyrics.Sources.LeosLyrics.GetLyrics (string,string) <0x0003f> at Banshee.Lyrics.LyricsManager.DownloadLyrics (Banshee.Collection.TrackInfo) <0x000f9> at Banshee.Lyrics.LyricsDownloadJob.DownloadLyrics (Banshee.Collection.Database.DatabaseTrackInfo) <0x00037> at Banshee.Lyrics.LyricsDownloadJob.IterateCore (Hyena.Data.Sqlite.HyenaDataReader) <0x001c3> at Banshee.ServiceStack.DbIteratorJob.Iterate () <0x00122> at Banshee.ServiceStack.DbIteratorJob.Run () <0x0004b> at Hyena.Jobs.SimpleAsyncJob.InnerStart () <0x0001d> at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) <0xffffffff> "<threadpool thread>" tid=0x0x7f6fb5295910 this=0x0x7f6fc4f58660 thread handle 0x597 state : interrupted state owns () at (wrapper managed-to-native) Mono.Unix.Native.Syscall.read (int,intptr,ulong) <0x00062> at (wrapper managed-to-native) Mono.Unix.Native.Syscall.read (int,intptr,ulong) <0xffffffff> at Mono.Unix.Native.Syscall.read (int,void*,ulong) <0x00033> at Mono.Unix.UnixStream.Read (byte[],int,int) <0x00093> at NDesk.DBus.Connection.ReadMessage () <0x00061> at NDesk.DBus.Connection.Iterate () <0x0001f> at Mono.Zeroconf.Providers.AvahiDBus.DBusManager.IterateThread (object) <0x00077> at (wrapper runtime-invoke) object.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <0xffffffff> "<threadpool thread>" tid=0x0x7f6fa7d96910 this=0x0x7f6fa90365e0 thread handle 0x6cf state : interrupted state owns () "<threadpool thread>" tid=0x0x7f6fa8198910 this=0x0x7f6fb4cfe000 thread handle 0x5a4 state : interrupted state owns () at (wrapper managed-to-native) System.Net.Dns.GetHostByName_internal (string,string&,string[]&,string[]&) <0x00051> at (wrapper managed-to-native) System.Net.Dns.GetHostByName_internal (string,string&,string[]&,string[]&) <0xffffffff> at System.Net.Dns.GetHostByName (string) <0x00047> at System.Net.ServicePoint.get_HostEntry () <0x00163> at System.Net.WebConnection.Connect () <0x0010b> at System.Net.WebConnection.InitConnection (object) <0x0013f> at (wrapper runtime-invoke) object.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <0xffffffff> "HyenaSqliteConnection (/home/beadrifle/.config/banshee-1/banshee.db)" tid=0x0x7f6fc5bfe910 this=0x0x7f6fcfdfa7f8 thread handle 0x419 state : interrupted state owns () at (wrapper managed-to-native) System.Threading.WaitHandle.WaitOne_internal (intptr,int,bool) <0x0004e> at (wrapper managed-to-native) System.Threading.WaitHandle.WaitOne_internal (intptr,int,bool) <0xffffffff> at System.Threading.WaitHandle.WaitOne () <0x00067> at Hyena.Data.Sqlite.HyenaSqliteConnection.ProcessQueue () <0x00212> at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) <0xffffffff>
The branch called 'gapless-ng' also fixes this. It should hopefully be merged back to master before 1.6. See bug 440952 for details.
Should be fixed by the gapless-ng branch which is now merged into master.
Created attachment 156698 [details] Debug output
The problem seems to persist in release 1.5.5 and the current git master. Steps: 1. Run banshee-1 --debug 2. Start FLAC song. 3. Use seek slider. (4. Quit banshee) Result: Mostly the playback stops. Sometimes some not recognizable (because very short) fraction of the song is played and playback then stops. Very rarely playback continues (at the right position). The output of the procedure above is attached.
(In reply to comment #15) > The problem seems to persist in release 1.5.5 and the current git master. Which version of gstreamer you have installed? Do you have "Enable gapless playback" checked in preferences?
Thanks for the response. I missed the parameter --enable-gapless-playback when I ran configure. Now I fixed that, updated gstreamer and enabled gapless playback in the banshee preferences. Now lines like [Debug 20:54:45.129] (libbanshee:player) [gapless] Triggering track-change signal appear in the output of banshee-1 --debug. As opposed to before, the playback seems to be gapless now. But I still have a problem with seeking. Seeking works more often but far from always. My gstreamer versions (on gentoo) media-libs/gstreamer (0.10.28) media-libs/gst-plugins-bad (0.10.17) media-libs/gst-plugins-base (0.10.28) media-libs/gst-plugins-good (0.10.17) media-libs/gst-plugins-ugly (0.10.13) media-plugins/gst-plugins-meta (0.10-r2) media-plugins/gst-plugins-a52dec (0.10.13) media-plugins/gst-plugins-alsa (0.10.28) media-plugins/gst-plugins-cdparanoia (0.10.25) media-plugins/gst-plugins-dvb (0.10.17) media-plugins/gst-plugins-dvdread (0.10.13) media-plugins/gst-plugins-faad (0.10.17) media-plugins/gst-plugins-ffmpeg (0.10.9) media-plugins/gst-plugins-flac (0.10.17) media-plugins/gst-plugins-gconf (0.10.17) media-plugins/gst-plugins-gio (0.10.25) media-plugins/gst-plugins-gnomevfs (0.10.28) media-plugins/gst-plugins-mad (0.10.13) media-plugins/gst-plugins-mpeg2dec (0.10.13) media-plugins/gst-plugins-mythtv (0.10.17) media-plugins/gst-plugins-ogg (0.10.25) media-plugins/gst-plugins-pango (0.10.25) media-plugins/gst-plugins-theora (0.10.25) media-plugins/gst-plugins-v4l2 (0.10.17) media-plugins/gst-plugins-vorbis (0.10.28) media-plugins/gst-plugins-x (0.10.25) media-plugins/gst-plugins-xvideo (0.10.25) media-plugins/gst-plugins-soundtouch (0.10.17)
Now, with media-libs/gst-plugins-good 0.10.21 and media-plugins/gst-plugins-flac 0.10.21, everything works fine.
I can confirm that both Seeking in FLAC files and gapless playback works with the latest gstreamer(.10.10-1) and Banshee (1.6.001) in Ubuntu Lucid Lynx 10.04