[Rhythmbox-devel] rbdesklet, bonobo and crashing



I've done some more work on the desklet. It has graphics now, and it can
truncate the title (and scrolls a truncated title, too). There is some
limitation involved, due to the lack of certain API in the bonobo
interface:

 - No way to query as to whether RB is paused. 
 - No way to tell RB to stop.

I'd also like to be able to query and set the rating for the currently
playing song, but that's not really any priority, it'd just be nice.

As some of you know, if you leave a bonobo-connected client connected to
RB long enough, RB will freeze/crash and take that client with it. This
also applies to the desklet. I finally got around to getting a
backtrace.

Let me describe the crash. It seems to occur right after a song change,
as the title of the RB window reflects the song that keeps playing after
the crash. The desklet doesn't update, and in fact, all the desklets
freeze and must be pkilled. The UI for RB stops updating. In this state,
I did Ctrl-C and got a bt:

(gdb) thread apply all bt
 
Thread 21 (Thread 311316 (LWP 19939)):
#0  0x4091f89b in write () from /lib/libpthread.so.0
#1  0x40f7137c in ?? () from /usr/lib/gstreamer-0.6/libgstossaudio.so
#2  0x00000038 in ?? ()
#3  0x40f6a2a5 in gst_osssink_get_type ()
   from /usr/lib/gstreamer-0.6/libgstossaudio.so
#4  0x4079532e in gst_pad_push () from /usr/lib/libgstreamer-0.6.so.0
#5  0x40ec02af in gst_volume_get_type ()
   from /usr/lib/gstreamer-0.6/libgstvolume.so
#6  0x40f47090 in ?? () from
/usr/lib/gstreamer-0.6/libgstoptscheduler.so
#7  0x082dba28 in ?? ()
#8  0x080f3b58 in ?? ()
#9  0x00000001 in ?? ()
#10 0x407d600c in ?? () from /usr/lib/libgstreamer-0.6.so.0
#11 0x082db9a0 in ?? ()
#12 0x407d600c in ?? () from /usr/lib/libgstreamer-0.6.so.0
#13 0xbd3ff6a4 in ?? ()
#14 0x4079532e in gst_pad_push () from /usr/lib/libgstreamer-0.6.so.0
Previous frame identical to this frame (corrupt stack?)
#0  0x409202b6 in nanosleep () from /lib/libpthread.so.0

Why there only seems to be one thread, I'm not sure. 

The song switched plays to the end, then the playback also stops. I got
another bt for that, with a few more threads showing up:
(gdb) thread apply all bt
 
Thread 21 (Thread 311316 (LWP 19939)):
#0  0x4091c354 in __pthread_sigsuspend () from /lib/libpthread.so.0
#1  0x4091c118 in __pthread_wait_for_restart_signal ()
   from /lib/libpthread.so.0
#2  0x40918cbb in pthread_cond_wait@GLIBC_2.0 () from
/lib/libpthread.so.0
#3  0x407a514a in gst_thread_new () from /usr/lib/libgstreamer-0.6.so.0
#4  0x409996f1 in g_static_private_free () from
/usr/lib/libglib-2.0.so.0
#5  0x40919bf0 in pthread_start_thread () from /lib/libpthread.so.0
#6  0x40919c6f in pthread_start_thread_event () from
/lib/libpthread.so.0
#7  0x40c17be7 in clone () from /lib/libc.so.6
 
Thread 4 (Thread 32771 (LWP 10355)):
#0  0x409202b6 in nanosleep () from /lib/libpthread.so.0
 
Thread 3 (Thread 16386 (LWP 10353)):
#0  0x409202b6 in nanosleep () from /lib/libpthread.so.0
 
Thread 2 (Thread 32769 (LWP 10352)):
#0  0x40c0f6e6 in poll () from /lib/libc.so.6
#1  0x409198fe in __pthread_manager () from /lib/libpthread.so.0
#2  0x40919af7 in __pthread_manager_event () from /lib/libpthread.so.0
#3  0x40c17be7 in clone () from /lib/libc.so.6
Thread 1 (Thread 16384 (LWP 10180)):
#0  0x4091c354 in __pthread_sigsuspend () from /lib/libpthread.so.0
#1  0x4091c118 in __pthread_wait_for_restart_signal ()
   from /lib/libpthread.so.0
#2  0x4091db89 in __pthread_alt_lock () from /lib/libpthread.so.0
#3  0x4091a947 in pthread_mutex_lock () from /lib/libpthread.so.0
#4  0x080603c9 in rb_shell_corba_get_playing_title (_servant=0xfffffffc,
    ev=0xbfffccd0) at rb-shell.c:542
#5  0x080b6546 in _ORBIT_skel_small_GNOME_Rhythmbox_getPlayingTitle (
    _o_servant=0xfffffffc, _o_retval=0x40921d38, _o_args=0x0,
    _o_ctx=0xbfffcb90, _o_ev=0xfffffffc,
    _impl_getPlayingTitle=0x8060320 <rb_shell_corba_get_playing_title>)
    at Rhythmbox-skels.c:189
#6  0x4073e167 in ORBit_POA_setup_root () from /usr/lib/libORBit-2.so.0
#7  0x407430b5 in ORBit_OAObject_invoke () from /usr/lib/libORBit-2.so.0
#8  0x4072e5be in ORBit_small_invoke_adaptor () from
/usr/lib/libORBit-2.so.0
#9  0x4073e536 in ORBit_recv_buffer_return_sys_exception ()
   from /usr/lib/libORBit-2.so.0
#10 0x4073ea3c in ORBit_recv_buffer_return_sys_exception ()
   from /usr/lib/libORBit-2.so.0
#11 0x4073edcc in ORBit_recv_buffer_return_sys_exception ()
   from /usr/lib/libORBit-2.so.0
#12 0x40742fa1 in ORBit_handle_request () from /usr/lib/libORBit-2.so.0
#13 0x4072b22e in giop_connection_handle_input () from
/usr/lib/libORBit-2.so.0
#14 0x406d3ac9 in link_connection_set_max_buffer ()
   from /usr/lib/libORBitCosNaming-2.so.0
#15 0x406d5a00 in link_servers_move_io_T ()
   from /usr/lib/libORBitCosNaming-2.so.0
#16 0x40984086 in unblock_source () from /usr/lib/libglib-2.0.so.0
#17 0x40985029 in g_main_context_dispatch () from
/usr/lib/libglib-2.0.so.0
#18 0x40985347 in g_main_context_dispatch () from
/usr/lib/libglib-2.0.so.0
#19 0x4098555d in g_main_context_iteration () from
/usr/lib/libglib-2.0.so.0
#20 0x406d1839 in link_main_iteration () from
/usr/lib/libORBitCosNaming-2.so.0
#21 0x4072a5ac in giop_recv_buffer_get () from /usr/lib/libORBit-2.so.0
#22 0x4072e30d in ORBit_small_invoke_stub () from
/usr/lib/libORBit-2.so.0
#23 0x4072e200 in ORBit_small_invoke_stub_n () from
/usr/lib/libORBit-2.so.0
#24 0x40741b82 in ORBit_c_stub_invoke () from /usr/lib/libORBit-2.so.0
#25 0x407077ca in ConfigDatabase_set () from /usr/lib/libgconf-2.so.4
#26 0x4070e8c4 in ConfigDatabase__iinterface () from
/usr/lib/libgconf-2.so.4
#27 0x00000006 in ?? ()
#0  0x4091c354 in __pthread_sigsuspend () from /lib/libpthread.so.0

So, does this give anyone a clue about what might be wrong?

-- 
Theodore Reed <rizen@surreality.us>

This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]