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 587643 - Can't seek in FLAC files
Can't seek in FLAC files
Status: RESOLVED FIXED
Product: banshee
Classification: Other
Component: Playback
git master
Other Linux
: High normal
: 1.x
Assigned To: Banshee Maintainers
Banshee Maintainers
Depends on: 440952
Blocks:
 
 
Reported: 2009-07-02 22:50 UTC by Bryan Forbes
Modified: 2010-05-01 06:13 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Debug output (7.24 KB, text/x-log)
2010-03-21 23:14 UTC, Stephan Ritscher
Details

Description Bryan Forbes 2009-07-02 22:50:33 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.
Comment 1 Tan Zong Xuan 2009-09-13 10:46:48 UTC
I can confirm this bug. It is a regression. Hopefully this is fixed by version 1.6.
Comment 2 Tan Zong Xuan 2009-11-01 07:54:12 UTC
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.
Comment 3 Alexander Kojevnikov 2009-11-02 05:11:34 UTC
Confirming in git master. I cannot seek any of my flac files. Seeking just stops playback without any errors or warnings.
Comment 4 Bilen Oytun Peksel 2009-12-02 17:30:15 UTC
Exactly the same symptoms as Alexander. Confirmed.
Comment 5 klji 2010-01-05 05:13:28 UTC
I too cannot seek in any FLAC files. This is a very annoying bug.
Comment 6 Gabriel Burt 2010-01-05 20:20:53 UTC
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.
Comment 7 Alexander Kojevnikov 2010-01-05 23:47:36 UTC
(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.
Comment 8 Bryan Forbes 2010-01-08 01:20:28 UTC
Yes.  In fact, when I need to seek in a FLAC file, I will load it in Totem.
Comment 9 Tan Zong Xuan 2010-01-31 05:52:20 UTC
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.
Comment 10 Alexander Kojevnikov 2010-02-19 07:02:20 UTC
The patch from bug 600072 fixes this bug as a side effect. Adding as a dependency.
Comment 11 Bead Rifle 2010-02-28 10:31:00 UTC
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>
Comment 12 Alexander Kojevnikov 2010-02-28 11:00:05 UTC
The branch called 'gapless-ng' also fixes this. It should hopefully be merged back to master before 1.6. See bug 440952 for details.
Comment 13 Alexander Kojevnikov 2010-03-11 23:27:05 UTC
Should be fixed by the gapless-ng branch which is now merged into master.
Comment 14 Stephan Ritscher 2010-03-21 23:14:00 UTC
Created attachment 156698 [details]
Debug output
Comment 15 Stephan Ritscher 2010-03-21 23:15:23 UTC
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.
Comment 16 Alexander Kojevnikov 2010-03-23 00:51:52 UTC
(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?
Comment 17 Stephan Ritscher 2010-03-23 20:03:58 UTC
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)
Comment 18 Stephan Ritscher 2010-04-29 18:58:40 UTC
Now, with media-libs/gst-plugins-good 0.10.21 and media-plugins/gst-plugins-flac 0.10.21, everything works fine.
Comment 19 Bead Rifle 2010-05-01 06:13:48 UTC
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