Xfmedia -- random play large collections

aec brat at magma.ca
Thu Jan 6 16:46:41 CET 2005


On Thu, Jan 06, 2005 at 04:22:32AM -0800, Brian J. Tarricone wrote:
> i'm not really sure what you mean - xfmedia doesn't sort files at all.  
> when it starts playing in shuffle mode, it picks a random number between 
> 0 and (num_playlist_entries - 1), and plays whichever number comes up.  
> it also maintains a bytemap the size of the number of playlist entries 
> to keep track of what it's already played in the current shuffle.  the 
> only slow part is that GtkListStore is implemented as a doubly-linked 
> list with head and tail pointers, so it's possible if it has to find an 
> entry in the middle of the list, it could take a while, since it has to 
> iterate either forward from the beginning, or backwards from the end.  i 
> can't see how this could take several minutes, though.  with just under 
> 5000 tracks in my playlist, it never takes more than 100ms or so to 
> start a new track when the previous one finishes.  at any rate, the only 
> thing that matters here is the number of tracks; total size is pretty 
> irrelevant.
> 
> so, the fact that it's using virtually no CPU, and not in some 
> RAM-consuming loop leads me to believe there's something else at fault.  
> what version of libxine are you using?  is the GUI still responsive 
> throughout this?  if the GUI *is* responsive, it's likely a problem with 
> libxine, as the hangup must be in another thread (xfmedia itself is 
> single-threaded, xine works in the other threads).  please try to 
> reproduce this with the latest version of libxine (1.0 final).
> 
> if you can, try running xfmedia through gdb, and ctrl+c while it's 
> sitting there.  get a backtrace *of all threads* to see what it's doing.
> 
>    -brian
> 

ok, I am not sure how to use gdb but here goes...

Starting program: /usr/bin/xfmedia xfmedia
Using host libthread_db library "/lib/tls/libthread_db.so.1".
d debugging using libthread_db enabled]
[New Thread 1083156544 (LWP 11190)]
(no debugging symbols found)

Now the app opens and I load my files: 

(xfmedia:11190): Gtk-CRITICAL **: file gtktreemodel.c: line 909
(gtk_tree_model_get_iter): assertion `path != NULL' failed

(xfmedia:11190): Gtk-CRITICAL **: file gtktreemodel.c: line 909
(gtk_tree_model_get_iter): assertion `path != NULL' failed

(xfmedia:11190): Gtk-CRITICAL **: file gtktreemodel.c: line 909
(gtk_tree_model_get_iter): assertion `path != NULL' failed

gdb shows me hundreds of these lines
It appears also the random button is already "pressed" on the gui
So perhaps its remembered some setting from the last run.

So the Gtk-CRITICAL scroll past by the thousands..

Then I hit ctrl-c
and type backtrace

Program received signal SIGINT, Interrupt.
[Switching to Thread 1083156544 (LWP 11190)]
0x407e7fe3 in poll () from /lib/tls/libc.so.6

(gdb) backtrace 
#0  0x407e7fe3 in poll () from /lib/tls/libc.so.6
#1  0x404b6b76 in g_main_loop_get_context () from
/usr/lib/libglib-2.0.so.0
#2  0x404b5fb0 in g_main_context_dispatch () from
/usr/lib/libglib-2.0.so.0
#3  0x404b6673 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#4  0x4018fc83 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#5  0x080602fa in ?? ()
#6  0x0805fb00 in ?? ()
#7  0x0871f270 in ?? ()
#8  0x00000000 in ?? ()
#9  0x00000001 in ?? ()
#10 0x3f000000 in ?? ()
#11 0x00000000 in ?? ()
#12 0x00000371 in ?? ()
#13 0x00000000 in ?? ()
#14 0x08c968d8 in ?? ()
#15 0x080cf2e8 in ?? ()
#16 0x00000001 in ?? ()
#17 0x00000001 in ?? ()
#18 0x00000000 in ?? ()
#19 0x4072416c in ?? () from /lib/tls/libc.so.6
#20 0xbffff5d6 in ?? ()
#21 0x093df3e4 in ?? ()
#22 0x00000000 in ?? ()
#23 0xffffffff in ?? ()
#24 0x00000000 in ?? ()
#25 0x00000000 in ?? ()
#26 0x00000000 in ?? ()
#27 0x00000000 in ?? ()
#28 0xbffff408 in ?? ()
#29 0x080816db in ?? ()
#30 0xbffff4a0 in ?? ()
#31 0x40849c60 in ?? () from /lib/tls/libc.so.6
#32 0x00000000 in ?? ()
#33 0x40849c60 in ?? () from /lib/tls/libc.so.6
#34 0x00000002 in ?? ()
#35 0xbffff4a0 in ?? ()
#36 0xbffff468 in ?? ()
#37 0x4072e904 in __libc_start_main () from /lib/tls/libc.so.6
#38 0x4072e904 in __libc_start_main () from /lib/tls/libc.so.6
#39 0x08057dc1 in ?? ()
(gdb)

Hope some of that helps, and thanks.  
-- 
Angelina Carlton



More information about the Xfce mailing list