Hi,

this is my first post, so I'll introduce myself briefly.

My name is Jan, I'm 31 years old and work as a C/C++ developer in
Hamburg, Germany. At work I do mostly Qt on Windows, but personally I
prefer Linux, although I barely ever code on it.

I came across a bug when importing large (>2000) collections of music
files in the current Rhythmbox-2.99.1-0ubuntu1 on 64 bit:

(gst-switch-srv:1709): GLib-ERROR **: *Creating pipes for GWakeup: Too
many open files*

So I downloaded the source, whipped out valgrind and tried to find out
if all the filedescriptors are closed again by doing:

valgrind --track-fds=yes rhythmbox

Unfortunately I don't get further than shortly after starting Rhythmbox
because of the following crash. As I read it there is an uninitialized
variable and it just goes downhill from there.

Can you help me debugging this further? Like how do I find out which
variable is uninitialised? Remember I'm a Windows dev, just learning to
use the gnu tools.

valgrind output:

==21998== Conditional jump or move depends on uninitialised value(s)
==21998==    at 0x54D65B3: g_type_check_instance (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CC2D3: g_signal_handlers_unblock_matched (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x4ED0CEE: ignore_selection_changes
(rb-library-browser.c:569)
==21998==    by 0x4ED0D41: query_complete_cb (rb-library-browser.c:593)
==21998==    by 0x54B4187: g_closure_invoke (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54C5B1C: ??? (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CD828: g_signal_emit_valist (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CDAE1: g_signal_emit (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x4EECA4A: idle_process_update (rhythmdb-query-model.c:1216)
==21998==    by 0x4EECBE0: idle_process_update_idle
(rhythmdb-query-model.c:1164)
==21998==    by 0x573D3B5: g_main_context_dispatch (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==21998==    by 0x573D707: ??? (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==21998==
==21998== Use of uninitialised value of size 8
==21998==    at 0x54D65B9: g_type_check_instance (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CC2D3: g_signal_handlers_unblock_matched (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x4ED0CEE: ignore_selection_changes
(rb-library-browser.c:569)
==21998==    by 0x4ED0D41: query_complete_cb (rb-library-browser.c:593)
==21998==    by 0x54B4187: g_closure_invoke (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54C5B1C: ??? (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CD828: g_signal_emit_valist (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CDAE1: g_signal_emit (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x4EECA4A: idle_process_update (rhythmdb-query-model.c:1216)
==21998==    by 0x4EECBE0: idle_process_update_idle
(rhythmdb-query-model.c:1164)
==21998==    by 0x573D3B5: g_main_context_dispatch (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==21998==    by 0x573D707: ??? (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==21998==
==21998== Invalid read of size 8
==21998==    at 0x54D65B9: g_type_check_instance (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CC2D3: g_signal_handlers_unblock_matched (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x4ED0CEE: ignore_selection_changes
(rb-library-browser.c:569)
==21998==    by 0x4ED0D41: query_complete_cb (rb-library-browser.c:593)
==21998==    by 0x54B4187: g_closure_invoke (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54C5B1C: ??? (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CD828: g_signal_emit_valist (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CDAE1: g_signal_emit (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x4EECA4A: idle_process_update (rhythmdb-query-model.c:1216)
==21998==    by 0x4EECBE0: idle_process_update_idle
(rhythmdb-query-model.c:1164)
==21998==    by 0x573D3B5: g_main_context_dispatch (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==21998==    by 0x573D707: ??? (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==21998==  Address 0x3 is not stack'd, malloc'd or (recently) free'd
==21998==
==21998==
==21998== Process terminating with default action of signal 11 (SIGSEGV)
==21998==  Access not within mapped region at address 0x3
==21998==    at 0x54D65B9: g_type_check_instance (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CC2D3: g_signal_handlers_unblock_matched (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x4ED0CEE: ignore_selection_changes
(rb-library-browser.c:569)
==21998==    by 0x4ED0D41: query_complete_cb (rb-library-browser.c:593)
==21998==    by 0x54B4187: g_closure_invoke (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54C5B1C: ??? (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CD828: g_signal_emit_valist (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x54CDAE1: g_signal_emit (in
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.3800.1)
==21998==    by 0x4EECA4A: idle_process_update (rhythmdb-query-model.c:1216)
==21998==    by 0x4EECBE0: idle_process_update_idle
(rhythmdb-query-model.c:1164)
==21998==    by 0x573D3B5: g_main_context_dispatch (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==21998==    by 0x573D707: ??? (in
/lib/x86_64-linux-gnu/libglib-2.0.so.0.3800.1)
==21998==  If you believe this happened as a result of a stack
==21998==  overflow in your program's main thread (unlikely but
==21998==  possible), you can try to increase the size of the
==21998==  main thread stack using the --main-stacksize= flag.
==21998==  The main thread stack size used in this run was 8388608.

Cheers
Jan

PS: I'm aware that I can set ulimit to a higher value or import the
files in smaller chunks, but I'd like to get this nasty bug fixed.
_______________________________________________
rhythmbox-devel mailing list
rhythmbox-devel@gnome.org
https://mail.gnome.org/mailman/listinfo/rhythmbox-devel

Reply via email to