GNOME Bugzilla – Bug 577629
compiled with debug support, , ekiga segfaults when opening the "Preferences" window
Last modified: 2009-04-10 15:10:19 UTC
Steps to reproduce: 1. compile ekiga, opal and ptlib with debug options 2. launch ekiga 3. try access the Preferences Stack trace:
+ Trace 214094
#################################################################### Follow is the glib "invalid pointer" output : #################################################################### *** glibc detected *** /usr/bin/ekiga: munmap_chunk(): invalid pointer: 0x0000000000c0dd50 *** ======= Backtrace: ========= /lib/libc.so.6[0x7f3bef97f138] /usr/bin/ekiga[0x4ab86b] /usr/bin/ekiga(_Z19gm_prefs_window_newPN5Ekiga11ServiceCoreE+0xaee)[0x4ac4ee] /usr/bin/ekiga(_ZN12GnomeMeeting14GetPrefsWindowEb+0x4a)[0x4b165a] /usr/bin/ekiga(_Z20show_prefs_window_cbP10_GtkWidgetPv+0x16)[0x48d0d6] /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x16d)[0x7f3bf23ca1cd] /usr/lib/libgobject-2.0.so.0[0x7f3bf23df86c] /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x7c5)[0x7f3bf23e0f25] /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x83)[0x7f3bf23e1413] /usr/lib/libgtk-x11-2.0.so.0(gtk_widget_activate+0x6b)[0x7f3bf4b0dfcb] /usr/lib/libgtk-x11-2.0.so.0(gtk_menu_shell_activate_item+0xfd)[0x7f3bf4a0193d] /usr/lib/libgtk-x11-2.0.so.0[0x7f3bf4a0387a] /usr/lib/libgtk-x11-2.0.so.0[0x7f3bf49f21eb] /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x16d)[0x7f3bf23ca1cd] /usr/lib/libgobject-2.0.so.0[0x7f3bf23df552] /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x64a)[0x7f3bf23e0daa] /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x83)[0x7f3bf23e1413] /usr/lib/libgtk-x11-2.0.so.0[0x7f3bf4b07ade] /usr/lib/libgtk-x11-2.0.so.0(gtk_propagate_event+0xf5)[0x7f3bf49e9595] /usr/lib/libgtk-x11-2.0.so.0(gtk_main_do_event+0x31b)[0x7f3bf49ea82b] /usr/lib/libgdk-x11-2.0.so.0[0x7f3bf46535ec] /usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x232)[0x7f3bf2114142] /usr/lib/libglib-2.0.so.0[0x7f3bf211785d] /usr/lib/libglib-2.0.so.0(g_main_loop_run+0x1cd)[0x7f3bf2117d8d] /usr/lib/libgtk-x11-2.0.so.0(gtk_main+0xa7)[0x7f3bf49eac77] /usr/bin/ekiga(main+0x3bd)[0x4a3d9d] /lib/libc.so.6(__libc_start_main+0xe6)[0x7f3bef92a5c6] /usr/bin/ekiga(_ZN11SIPEndPoint32OnReceivedAuthenticationRequiredER14SIPTransactionR7SIP_PDU+0x101)[0x4897f9] #################################################################### Follow the closer end of a ltrace stack (from another crash session, outside gdb) : #################################################################### strcmp("Default (PTLIB/ALSA)", "*.wav (PTLIB/WAVFile)") = 1 g_type_check_instance_cast(0xc164b0, 0x9db5f0, 0xc27aa0, 0xffffffff, 41) = 0xc164b0 gtk_list_store_append(0xc164b0, 0x7fff96b56b60, 0x9db5f0, 918785, 41) = 0x835be0 dcgettext(0, 0xc1f038, 5, 0, 17) = 0xc1f038 g_type_check_instance_cast(0xc164b0, 0x9db5f0, 2, 1, 0x7fff96b56a98) = 0xc164b0 gtk_list_store_set(0xc164b0, 0x7fff96b56b60, 0, 0xc1f038, 1) = 0x835be0 strcmp("Default (PTLIB/ALSA)", "Default (PTLIB/ALSA)") = 0 g_type_check_instance_cast(0xc164b0, 0x9db5f0, 0xc24190, 0, 6) = 0xc164b0 gtk_list_store_append(0xc164b0, 0x7fff96b56b60, 0x9db5f0, 918785, 6) = 0x835be0 dcgettext(0, 0xc1e7c8, 5, 0, 27) = 0xc1e7c8 g_type_check_instance_cast(0xc164b0, 0x9db5f0, 2, 1, 0x7fff96b56a98) = 0xc164b0 gtk_list_store_set(0xc164b0, 0x7fff96b56b60, 0, 0xc1e7c8, 1) = 0x835be0 strcmp("Default (PTLIB/ALSA)", "ALi M5455 (PTLIB/ALSA)") = 1 g_type_check_instance_cast(0xc164b0, 0x9db5f0, 0xc27910, 0xffffffff, 22) = 0xc164b0 gtk_list_store_append(0xc164b0, 0x7fff96b56b60, 0x9db5f0, 918785, 22) = 0x835be0 dcgettext(0, 0xc1e848, 5, 0, 16) = 0xc1e848 g_type_check_instance_cast(0xc164b0, 0x9db5f0, 2, 1, 0x7fff96b56a98) = 0xc164b0 gtk_list_store_set(0xc164b0, 0x7fff96b56b60, 0, 0xc1e848, 1) = 0x835be0 strcmp("Default (PTLIB/ALSA)", "ALi M5455 (1) (PTLIB/ALSA)") = 1 g_type_check_instance_cast(0xc164b0, 0x9db5f0, 0xc27830, 0xffffffff, 5) = 0xc164b0 gtk_list_store_append(0xc164b0, 0x7fff96b56b60, 0x9db5f0, 918785, 5) = 0x835be0 dcgettext(0, 0xc1e8e8, 5, 0, 14) = 0xc1e8e8 g_type_check_instance_cast(0xc164b0, 0x9db5f0, 2, 1, 0x7fff96b56a98) = 0xc164b0 gtk_list_store_set(0xc164b0, 0x7fff96b56b60, 0, 0xc1e8e8, 1) = 0x835be0 gtk_combo_box_get_type(0x835be0, 16, 0xc27910, 0, 6) = 0xaff8f0 g_type_check_instance_cast(0xbe08e0, 0xaff8f0, 0xc27910, 0, 6) = 0xbe08e0 gtk_combo_box_set_active(0xbe08e0, 2, 0xaff8f0, 918534, 6) = 0x835be0 g_type_check_instance_cast(0xc1c220, 0xa92380, 0xc27a40, 0, 1) = 0xc1c220 gtk_table_attach(0xc1c220, 0xbe08e0, 1, 2, 1) = 0xbe08e0 g_type_check_instance_cast(0xc1c220, 80, 0x97f6d0, 393218, 0x7f7587fcb6a8) = 0xc1c220 g_object_get_data(0xc1c220, 0x5a66f9, 80, 917504, 0x7f7587fcb6a8) = 0x907a40 gtk_widget_set_tooltip_text(0xbe08e0, 0x5a4358, 0x7f758632fcf8, 0x5a66fc, 0x7f7587d86908) = 1 g_type_check_instance_cast(0xbe08e0, 0xaff8f0, 1, 0, 0x7f7587fcb6a8) = 0xbe08e0 g_signal_connect_data(0xbe08e0, 0x5a18e5, 0x4bf700, 0x59f1b8, 0) = 1179 g_quark_try_string(0x59f1b8, 0x59f1b8, 0xbe08e0, 0, 0x7f7587fcb6a8) = 49 g_datalist_id_get_data(0x83c1e8, 49, 0x7f758632fcf8, 0x59f1df, 0x7f7587d868a8) = 0x840650 g_malloc(16, 0, 0x7f758632fcf8, 0x59f1df, 0x7f7587d86908) = 0xc27e60 g_slist_prepend(0x9f1b30, 0xc27e60, 0x7f7585627a80, 3, 0) = 0xc27b20 g_free(0xc26e70, 0x7f758ea00850, 0, 0xc27b20, 0) = 0 gtk_widget_show_all(0xc1c220, 0x7f75853f5a58, 33, 0, 0xc26e70) = 0xc1c220 g_free(0xc1ef90, 0x97f6d0, 0x97f6d0, 393218, 0x7f7587fcb6a8 <unfinished ...> #################################################################### Follow the closer end of a strace stack (from another crash session, outside gdb) : #################################################################### open("/home/yug/.config/gtk-2.0/gtkfilechooser.ini", O_RDONLY) = 35 fstat(35, {st_mode=S_IFREG|0644, st_size=144, ...}) = 0 read(35, "\n[Filechooser Settings]\nLocationM"..., 4096) = 144 read(35, ""..., 4096) = 0 close(35) = 0 getcwd("/"..., 4096) = 2 futex(0x7fc4d4009994, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fc4d4009990, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 futex(0xbf1bf0, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x7fc4d4009994, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fc4d4009990, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 futex(0xbf1bf0, FUTEX_WAKE_PRIVATE, 1) = 1 gettimeofday({1238607315, 371006}, NULL) = 0 gettimeofday({1238607315, 371210}, NULL) = 0 gettimeofday({1238607315, 371350}, NULL) = 0 gettimeofday({1238607315, 371572}, NULL) = 0 gettimeofday({1238607315, 371771}, NULL) = 0 gettimeofday({1238607315, 371957}, NULL) = 0 gettimeofday({1238607315, 372120}, NULL) = 0 gettimeofday({1238607315, 372311}, NULL) = 0 gettimeofday({1238607315, 372454}, NULL) = 0 brk(0xc29000) = 0xc29000 gettimeofday({1238607315, 396079}, NULL) = 0 futex(0x7fc4d4009994, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fc4d4009990, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 futex(0xbf1bf0, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x7fc4d4009994, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fc4d4009990, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 futex(0xbf1bf0, FUTEX_WAKE_PRIVATE, 1) = 1 gettimeofday({1238607315, 399524}, NULL) = 0 gettimeofday({1238607315, 399880}, NULL) = 0 gettimeofday({1238607315, 400174}, NULL) = 0 gettimeofday({1238607315, 400551}, NULL) = 0 gettimeofday({1238607315, 400884}, NULL) = 0 gettimeofday({1238607315, 401244}, NULL) = 0 gettimeofday({1238607315, 401602}, NULL) = 0 gettimeofday({1238607315, 401947}, NULL) = 0 gettimeofday({1238607315, 402257}, NULL) = 0 futex(0x7fc4d4009994, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fc4d4009990, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 futex(0xbf1bf0, FUTEX_WAKE_PRIVATE, 1) = 1 open("/dev/snd/controlC0", O_RDONLY) = 35 close(35) = 0 stat("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=8967, ...}) = 0 open("/dev/snd/controlC0", O_RDONLY) = 35 close(35) = 0 open("/dev/snd/controlC0", O_RDWR) = 35 ioctl(35, USBDEVFS_CONTROL, 0x7ffff3be306c) = 0 ioctl(35, UI_DEV_CREATE, 0x7ffff3be3320) = 0 ioctl(35, 0x80045530, 0x7ffff3be354c) = 0 ioctl(35, 0xc1205531, 0x7ffff3be31f0) = 0 open("/dev/snd/controlC0", O_RDWR) = 36 ioctl(36, USBDEVFS_CONTROL, 0x7ffff3be300c) = 0 ioctl(36, UI_DEV_CREATE, 0x7ffff3be3050) = 0 close(36) = 0 write(2, "Block "..., 6) = 6 write(2, "0xc160a0"..., 8) = 8 write(2, " not in heap!"..., 13) = 13 write(2, "\n"..., 1) = 1 ioctl(35, 0x80045530, 0x7ffff3be354c) = 0 ioctl(35, 0xc1205531, 0x7ffff3be31f0) = -1 ENOENT (No such file or directory) ioctl(35, 0x80045530, 0x7ffff3be354c) = 0 ioctl(35, 0xc1205531, 0x7ffff3be31f0) = 0 open("/dev/snd/controlC0", O_RDWR) = 36 ioctl(36, USBDEVFS_CONTROL, 0x7ffff3be300c) = 0 ioctl(36, UI_DEV_CREATE, 0x7ffff3be3050) = 0 close(36) = 0 write(2, "Block "..., 6) = 6 write(2, "0xc160a0"..., 8) = 8 write(2, " not in heap!"..., 13) = 13 write(2, "\n"..., 1) = 1 ioctl(35, 0x80045530, 0x7ffff3be354c) = 0 close(35) = 0 open("/dev/snd/controlC1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC3", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC3", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC4", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC4", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC5", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC5", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC6", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC6", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC7", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC7", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC8", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC8", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC9", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC9", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC10", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC10", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC11", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC11", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC12", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC12", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC13", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC13", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC14", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC14", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC15", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC15", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC16", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC16", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC17", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC17", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC18", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC18", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC19", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC19", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC20", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC20", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC21", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC21", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC22", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC22", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC23", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC23", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC24", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC24", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC25", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC25", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC26", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC26", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC27", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC27", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC28", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC28", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC29", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC29", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC30", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC30", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/snd/controlC31", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/aloadC31", O_RDONLY) = -1 ENOENT (No such file or directory) open("/dev/tty", O_RDWR|O_NOCTTY|O_NONBLOCK) = 35 writev(35, [{"*** glibc detected *** "..., 23}, {"ekiga"..., 5}, {": "..., 2}, {"munmap_chunk(): invalid pointer"..., 31}, {": 0x"..., 4}, {"0000000000c165c0"..., 16}, {" ***\n"..., 5}], 7) = 86 futex(0x7fc4e26b5030, FUTEX_WAKE_PRIVATE, 2147483647) = 0 futex(0x7fc4e2361190, FUTEX_WAKE_PRIVATE, 2147483647) = 0 write(35, "======= Backtrace: =========\n"..., 29) = 29 ... Other information: Related to the sound devices detection ? (tested without asoundrc) No gnome but gtk+ 2.14.7 Using alsa ekiga 3.2.0 (same behavior with 3.0.2) Compiled without gconf and gnome
Since you have compiled it yourself, could you please add printf ("xyz\n"); instructions inside gm_pw_init_audio_devices_page function in src/gui/preferences.cpp to see where the error is please?
Eugen : remember to set NEEDINFO. Though since it's compiled without gconf, I would think we are reading a NULL string somewhere and trying to use it as a real string.
./configure --prefix=/usr --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --disable-dependency-tracking --enable-fast-install --disable-maintainer-mode --enable-libtool-lock --disable-gstreamer --disable-avahi --enable-dbus --enable-dbus_service --enable-gtk-debug --enable-opal-debug --disable-gdu --disable-scrollkeeper --disable-eds --disable-gconf --disable-schemas-install --disable-gnome --disable-kde --disable-kab --disable-ldap --disable-notify --enable-nls --disable-static-libs --disable-xcap --disable-xv --libdir=/usr/lib64 --build=x86_64-pc-linux-gnu Here is the code with 2 more printf : printf("gm_pw_init_audio_devices_page START\n") [... 8 lines ...] array = gm_prefs_window_convert_string_list(device_list); pw->sound_events_output = gnome_prefs_string_option_menu_new() ... pw->audio_player = gnome_prefs_string_option_menu_new() ... printf("gm_pw_init_audio_devices_page : array free n1\n"); g_free (array); /* The recorder */ printf("gm_prefs_window_get_audioinput_devices_list\n"); Here is the output : gm_pw_init_audio_devices_page START Block 0x95fdf0 not in heap! Block 0x95fdf0 not in heap! gm_pw_init_audio_devices_page : array free n1 *** glibc detected *** Whatever I add : - if (**array != NULL) - if (array != NULL) In both case the block { pw->...; pw->...; g_free(); } is executed and make the segfault happen. Wish you spotted the problem :) If you need more information, let me know how to printf device_list or any type-specific variable whose content interests you.
Could you try to remove the --disable-schemas-install, please? We're still supposed to find the default configuration in that schemas file. Could you add more printf so we know what triggers those "Block ... not in heap!" messages (which don't announce good things!). I may have a hint already.
gm_pw_init_audio_devices_page START gm_pw_init_audio_devices_page : gm_pw_get_pw gm_pw_init_audio_devices_page : gnome_prefs_subsection_new gm_pw_init_audio_devices_page : <std:string> device_list gm_pw_init_audio_devices_page : gm_prefs_window_get_audiooutput_devices_list Block 0xa0d240 not in heap! Block 0xa0d240 not in heap! gm_pw_init_audio_devices_page : gm_prefs_window_convert_string_list gm_pw_init_audio_devices_page : array free n1 *** glibc detected *** ./ekiga: munmap_chunk(): invalid pointer: 0x0000000000a0df70 *** ^^ With (then now without) schemas-install So : - gm_prefs_window_get_audiooutput_devices_list() : "Block xxx not in heap" - array != NULL and **array != NULL - g_free(array) : glibc error
Wouldn't the crash be in gm_prefs_window_get_audiooutput_devices_list instead of gm_pw_init_audio_devices_page?
reply to comment #6 : The crash : no, but probably the "Block 0xyyyy not in heap!" I printf'ed AudioOutputCore::get_devices in lib/engine/audiooutput/audiooutput-core.cpp : So I narrowed the "Block 0xyyyy not in heap!" : it's in the recursive call. But of course I really can not imagine how the following PTRACE(4, "AudioOutputCore\tDetected Device: " << *iter); can influence the final g_free(array) in 2 parent-caller functions above and make it crash. (Because from what I understood, this IF TRACING may be interesting because it's non-excution make ekiga preferences appear correct (the crash doesn't occurs without debug)) Here is my output : gm_pw_init_audio_devices_page START gm_pw_init_audio_devices_page : gm_pw_get_pw gm_pw_init_audio_devices_page : gnome_prefs_subsection_new gm_pw_init_audio_devices_page : <std:string> device_list gm_pw_init_audio_devices_page : gm_prefs_window_get_audiooutput_devices_list ----------------------------------------------------- gm_prefs_window_get_audiooutput_devices_list START gm_prefs_window_get_audiooutput_devices_list : audiooutput_core->get_devices() ================================ AudioOutputCore::get_devices : START AudioOutputCore::get_devices : mutex[primary] AudioOutputCore::get_devices : mutex[secondary] AudioOutputCore::get_devices : devices.clear() AudioOutputCore::get_devices [managers.begin() iterator] START AudioOutputCore::get_devices [managers.begin() iterator] loop round 0 AudioOutputCore::get_devices [managers.begin() iterator] loop round 1 Block 0x74fb80 not in heap! Block 0x74fb80 not in heap! AudioOutputCore::get_devices [managers.begin() iterator] END AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] START AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 0 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 1 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 2 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 3 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 4 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] STOP AudioOutputCore::get_devices : END ================================ gm_prefs_window_get_audiooutput_devices_list : loop start gm_prefs_window_get_audiooutput_devices_list : iter loop round 0 gm_prefs_window_get_audiooutput_devices_list : iter loop round 1 gm_prefs_window_get_audiooutput_devices_list : iter loop round 2 gm_prefs_window_get_audiooutput_devices_list : iter loop round 3 gm_prefs_window_get_audiooutput_devices_list : iter loop round 4 gm_prefs_window_get_audiooutput_devices_list : loop end gm_prefs_window_get_audiooutput_devices_list END ----------------------------------------------------- gm_pw_init_audio_devices_page : gm_prefs_window_convert_string_list gm_pw_init_audio_devices_page : array free n1 *** glibc detected *** ./ekiga: munmap_chunk(): invalid pointer: 0x0000000000a0e5f0 **
The "block 0xDEADBEEF not in heap!" message is bad already : it means things have already started to go wrong -- even if they're too wrong only much later (at which point the libc kills ekiga). I'll try to have a look into how those AudioOutputDevices are managed in memory (probably very bad -- from the error message, they're on the stack).
Try 'export MALLOC_CHECK_=2' before running Ekiga. That way it will crash where the problem happens.
$ ./ekiga Block 0x744de0 not in heap! Block 0x744de0 not in heap! Block 0x7358e0 not in heap! Block 0x7358e0 not in heap! Block 0x744de0 not in heap! Block 0x744de0 not in heap! Block 0x7358e0 not in heap! Block 0x7358e0 not in heap! ** (ekiga:21925): CRITICAL **: gm_conf_get_string: assertion `key /apps/ekiga/general/user_interface/main_window/size has no corresponding entry! ' failed gm_pw_init_audio_devices_page START gm_pw_init_audio_devices_page : gm_pw_get_pw gm_pw_init_audio_devices_page : gnome_prefs_subsection_new gm_pw_init_audio_devices_page : <std:string> device_list gm_pw_init_audio_devices_page : gm_prefs_window_get_audiooutput_devices_list ----------------------------------------------------- gm_prefs_window_get_audiooutput_devices_list START gm_prefs_window_get_audiooutput_devices_list : audiooutput_core->get_devices() ================================ AudioOutputCore::get_devices : START AudioOutputCore::get_devices : mutex[primary] AudioOutputCore::get_devices : mutex[secondary] AudioOutputCore::get_devices : devices.clear() AudioOutputCore::get_devices [managers.begin() iterator] START AudioOutputCore::get_devices [managers.begin() iterator] loop round 0 AudioOutputCore::get_devices [managers.begin() iterator] loop round 1 Block 0x7f53c40026a0 not in heap! Block 0x7f53c40026a0 not in heap! AudioOutputCore::get_devices [managers.begin() iterator] END AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] START AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 0 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 1 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 2 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 3 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 4 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] STOP AudioOutputCore::get_devices : END ================================ gm_prefs_window_get_audiooutput_devices_list : loop start gm_prefs_window_get_audiooutput_devices_list : iter loop round 0 gm_prefs_window_get_audiooutput_devices_list : iter loop round 1 gm_prefs_window_get_audiooutput_devices_list : iter loop round 2 gm_prefs_window_get_audiooutput_devices_list : iter loop round 3 gm_prefs_window_get_audiooutput_devices_list : iter loop round 4 gm_prefs_window_get_audiooutput_devices_list : loop end gm_prefs_window_get_audiooutput_devices_list END ----------------------------------------------------- gm_pw_init_audio_devices_page : gm_prefs_window_convert_string_list gm_pw_init_audio_devices_page : array free n1 *** glibc detected *** ./ekiga: munmap_chunk(): invalid pointer: 0x00007f53c4002c40 *** ======= Backtrace: ========= /lib/libc.so.6[0x7f53d044e138] ./ekiga[0x4ab9dc] ./ekiga(_Z19gm_prefs_window_newPN5Ekiga11ServiceCoreE+0xaee)[0x4ac69e] ./ekiga(_ZN12GnomeMeeting14GetPrefsWindowEb+0x4a)[0x4b180a] ./ekiga(_Z20show_prefs_window_cbP10_GtkWidgetPv+0x16)[0x48d176] /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x16d)[0x7f53d2e991cd] /usr/lib/libgobject-2.0.so.0[0x7f53d2eae86c] /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x7c5)[0x7f53d2eaff25] /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x83)[0x7f53d2eb0413] /usr/lib/libgtk-x11-2.0.so.0(gtk_widget_activate+0x6b)[0x7f53d55dcfcb] /usr/lib/libgtk-x11-2.0.so.0(gtk_menu_shell_activate_item+0xfd)[0x7f53d54d093d] /usr/lib/libgtk-x11-2.0.so.0[0x7f53d54d287a] /usr/lib/libgtk-x11-2.0.so.0[0x7f53d54c11eb] /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x16d)[0x7f53d2e991cd] /usr/lib/libgobject-2.0.so.0[0x7f53d2eae552] /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x64a)[0x7f53d2eafdaa] /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x83)[0x7f53d2eb0413] /usr/lib/libgtk-x11-2.0.so.0[0x7f53d55d6ade] /usr/lib/libgtk-x11-2.0.so.0(gtk_propagate_event+0xf5)[0x7f53d54b8595] /usr/lib/libgtk-x11-2.0.so.0(gtk_main_do_event+0x31b)[0x7f53d54b982b] /usr/lib/libgdk-x11-2.0.so.0[0x7f53d51225ec] /usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x232)[0x7f53d2be3142] /usr/lib/libglib-2.0.so.0[0x7f53d2be685d] /usr/lib/libglib-2.0.so.0(g_main_loop_run+0x1cd)[0x7f53d2be6d8d] /usr/lib/libgtk-x11-2.0.so.0(gtk_main+0xa7)[0x7f53d54b9c77] ./ekiga(main+0x3bd)[0x4a3e3d] /lib/libc.so.6(__libc_start_main+0xe6)[0x7f53d03f95c6] ./ekiga(_ZN11SIPEndPoint32OnReceivedAuthenticationRequiredER14SIPTransactionR7SIP_PDU+0x101)[0x489899] ======= Memory map: ======== 00400000-00600000 r-xp 00000000 08:08 6331526 /var/tmp/portage/net-im/ekiga-3.2.0/image/usr/bin/ekiga 00600000-0060e000 r--p 00200000 08:08Abandon #########################################################################" $ MALLOC_CHECK_=2 ./ekiga Block 0x724520 not in heap! Block 0x724520 not in heap! Block 0x763d10 not in heap! Block 0x763d10 not in heap! Block 0x751af0 not in heap! Block 0x751af0 not in heap! Block 0x7380e0 not in heap! Block 0x7380e0 not in heap! ** (ekiga:21944): CRITICAL **: gm_conf_get_string: assertion `key /apps/ekiga/general/user_interface/main_window/size has no corresponding entry! ' failed gm_pw_init_audio_devices_page START gm_pw_init_audio_devices_page : gm_pw_get_pw gm_pw_init_audio_devices_page : gnome_prefs_subsection_new gm_pw_init_audio_devices_page : <std:string> device_list gm_pw_init_audio_devices_page : gm_prefs_window_get_audiooutput_devices_list ----------------------------------------------------- gm_prefs_window_get_audiooutput_devices_list START gm_prefs_window_get_audiooutput_devices_list : audiooutput_core->get_devices() ================================ AudioOutputCore::get_devices : START AudioOutputCore::get_devices : mutex[primary] AudioOutputCore::get_devices : mutex[secondary] AudioOutputCore::get_devices : devices.clear() AudioOutputCore::get_devices [managers.begin() iterator] START AudioOutputCore::get_devices [managers.begin() iterator] loop round 0 AudioOutputCore::get_devices [managers.begin() iterator] loop round 1 Block 0x763cb0 not in heap! Block 0x763cb0 not in heap! AudioOutputCore::get_devices [managers.begin() iterator] END AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] START AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 0 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 1 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 2 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 3 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 4 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] STOP AudioOutputCore::get_devices : END ================================ gm_prefs_window_get_audiooutput_devices_list : loop start gm_prefs_window_get_audiooutput_devices_list : iter loop round 0 gm_prefs_window_get_audiooutput_devices_list : iter loop round 1 gm_prefs_window_get_audiooutput_devices_list : iter loop round 2 gm_prefs_window_get_audiooutput_devices_list : iter loop round 3 gm_prefs_window_get_audiooutput_devices_list : iter loop round 4 gm_prefs_window_get_audiooutput_devices_list : loop end gm_prefs_window_get_audiooutput_devices_list END ----------------------------------------------------- gm_pw_init_audio_devices_page : gm_prefs_window_convert_string_list gm_pw_init_audio_devices_page : array free n1 Abandon ################################## So, same behavior, except the glic backtrace which is not printed with MALLOC_CHECK_ set.
Ah, ah : AudioOutputCore::get_devices [managers.begin() iterator] START AudioOutputCore::get_devices [managers.begin() iterator] loop round 0 AudioOutputCore::get_devices [managers.begin() iterator] loop round 1 Block 0x7f53c40026a0 not in heap! Block 0x7f53c40026a0 not in heap! AudioOutputCore::get_devices [managers.begin() iterator] END That means the second manager in the list gives problems! Now the wonderful thing is that it's a std::set<AudioOutputManager *>... so I have no clue which one of the two it is :-( Could you add things like : std::cout << __PRETTY_FUNCTION__ << std::endl; statements in audiooutput-manager-null.cpp and audiooutput-manager-ptlib.cpp (in the get_devices methods) ?
/var/tmp/portage/net-im/ekiga-3.2.0/image/usr/bin $ ./ekiga Block 0x737670 not in heap! Block 0x737670 not in heap! Block 0x73a950 not in heap! Block 0x73a950 not in heap! Block 0x73a930 not in heap! Block 0x73a930 not in heap! Block 0x72cb90 not in heap! Block 0x72cb90 not in heap! ** (ekiga:12471): CRITICAL **: gm_conf_get_string: assertion `key /apps/ekiga/general/user_interface/main_window/size has no corresponding entry! ' failed gm_pw_init_audio_devices_page START gm_pw_init_audio_devices_page : gm_pw_get_pw gm_pw_init_audio_devices_page : gnome_prefs_subsection_new gm_pw_init_audio_devices_page : <std:string> device_list gm_pw_init_audio_devices_page : gm_prefs_window_get_audiooutput_devices_list ----------------------------------------------------- gm_prefs_window_get_audiooutput_devices_list START gm_prefs_window_get_audiooutput_devices_list : audiooutput_core->get_devices() ================================ AudioOutputCore::get_devices : START AudioOutputCore::get_devices : mutex[primary] AudioOutputCore::get_devices : mutex[secondary] AudioOutputCore::get_devices : devices.clear() AudioOutputCore::get_devices [managers.begin() iterator] START AudioOutputCore::get_devices [managers.begin() iterator] loop round 0 ====GMAudioOutputManager_null::get_devices START : PRETTY virtual void GMAudioOutputManager_null::get_devices(std::vector<Ekiga::AudioOutputDevice, std::allocator<Ekiga::AudioOutputDevice> >&) ====GMAudioOutputManager_null::get_devices END AudioOutputCore::get_devices [managers.begin() iterator] loop round 1 ====GMAudioOutputManager_ptlib::get_devices::get_devices START : PRETTY virtual void GMAudioOutputManager_ptlib::get_devices(std::vector<Ekiga::AudioOutputDevice, std::allocator<Ekiga::AudioOutputDevice> >&) ====> sources_array() loop START ========> sources_array[0] START ========> device.source == EKIGA ========> PSoundChannel::GetDeviceNames() ========> audio_devices.ToCharArray() ============> devices_array[0]() START ============> devices_array[0]() END ========> sources_array[0] END ========> sources_array[1] START ========> device.source != EKIGA ========> sources_array[1] END ========> sources_array[2] START ========> device.source == EKIGA ========> PSoundChannel::GetDeviceNames() Block 0x9fcee0 not in heap! Block 0x9fcee0 not in heap! ========> audio_devices.ToCharArray() ============> devices_array[0]() START ============> devices_array[0]() END ============> devices_array[1]() START ============> devices_array[1]() END ============> devices_array[2]() START ============> devices_array[2]() END ========> sources_array[2] END ====> sources_array() loop END ====GMAudioOutputManager_ptlib::get_devices::get_devices END: PRETTY virtual void GMAudioOutputManager_ptlib::get_devices(std::vector<Ekiga::AudioOutputDevice, std::allocator<Ekiga::AudioOutputDevice> >&) AudioOutputCore::get_devices [managers.begin() iterator] END AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] START AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 0 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 1 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 2 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 3 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] loop round 4 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] STOP AudioOutputCore::get_devices : END ================================ gm_prefs_window_get_audiooutput_devices_list : loop start gm_prefs_window_get_audiooutput_devices_list : iter loop round 0 gm_prefs_window_get_audiooutput_devices_list : iter loop round 1 gm_prefs_window_get_audiooutput_devices_list : iter loop round 2 gm_prefs_window_get_audiooutput_devices_list : iter loop round 3 gm_prefs_window_get_audiooutput_devices_list : iter loop round 4 gm_prefs_window_get_audiooutput_devices_list : loop end gm_prefs_window_get_audiooutput_devices_list END ----------------------------------------------------- gm_pw_init_audio_devices_page : gm_prefs_window_convert_string_list gm_pw_init_audio_devices_page : array free n1 *** glibc detected *** ./ekiga: munmap_chunk(): invalid pointer: 0x00000000009fdc90 *** .... the culprit of "Block error" is somewhere around PSoundChannel::GetDeviceNames in work/ekiga-3.2.0/lib/engine/components/opal/opal-audio.cpp isn't ? I still have the secret wish that solving this debug bug will help me getting ekiga working with alsa jackplugin :p
First : could you change : if (device.source != "EKIGA") { audio_devices = PSoundChannel::GetDeviceNames (device.source, PSoundChannel::Player); devices_array = audio_devices.ToCharArray (); into : if (device.source != "EKIGA") { std::cout << "device.source=" << device.source << std::endl; audio_devices = PSoundChannel::GetDeviceNames (device.source, PSoundChannel::Player); devices_array = audio_devices.ToCharArray (); ? PS: I meant __PRETTY_FUNCTION__ litterally.
Of course it was the __PRETTY__ function and it printed : "GMAudioOutputManager_ptlib::get_devices(std::vector<Ekiga::AudioOutputDevice, std::allocator<Ekiga::AudioOutputDevice> >&)" but I explicitly printed PRETTY before as I was not expecting the __PRETTY__ output. But I did a mistake in the comment above, in the code I print "== EKIGA" when it's "!= EKIGA", the following is correct. About schemas-install, the ebuild I'm using disable it when gconf is not used. Is it a mistake ? The faulty device_name is ... ALSA :) $ ./ekiga Block 0x737610 not in heap! Block 0x737610 not in heap! Block 0x73a940 not in heap! Block 0x73a940 not in heap! Block 0x73a920 not in heap! Block 0x73a920 not in heap! Block 0x72cb10 not in heap! Block 0x72cb10 not in heap! gm_pw_init_audio_devices_page START gm_pw_init_audio_devices_page : gm_pw_get_pw gm_pw_init_audio_devices_page : gnome_prefs_subsection_new gm_pw_init_audio_devices_page : <std:string> device_list gm_pw_init_audio_devices_page : gm_prefs_window_get_audiooutput_devices_list ----------------------------------------------------- gm_prefs_window_get_audiooutput_devices_list START gm_prefs_window_get_audiooutput_devices_list : audiooutput_core->get_devices() ================================ AudioOutputCore::get_devices : START AudioOutputCore::get_devices [managers.begin() iterator] START loop round 0 loop round 1 virtual void GMAudioOutputManager_ptlib::get_devices(std::vector<Ekiga::AudioOutputDevice, std::allocator<Ekiga::AudioOutputDevice> >&) sources_array[0]: device.source=WAVFile PSoundChannel::GetDeviceNames() audio_devices.ToCharArray() devices_array[0] = *.wav sources_array[1]: device.source=EKIGA sources_array[2]: device.source=ALSA PSoundChannel::GetDeviceNames() Block 0xa01bb0 not in heap! Block 0xa01bb0 not in heap! audio_devices.ToCharArray() devices_array[0] = Default devices_array[1] = ALi M5455 devices_array[2] = ALi M5455 (1) AudioOutputCore::get_devices [managers.begin() iterator] END AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] START loop round 0 loop round 1 loop round 2 loop round 3 loop round 4 AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] STOP AudioOutputCore::get_devices : END ================================ gm_prefs_window_get_audiooutput_devices_list : loop start gm_prefs_window_get_audiooutput_devices_list : iter loop round 0 gm_prefs_window_get_audiooutput_devices_list : iter loop round 1 gm_prefs_window_get_audiooutput_devices_list : iter loop round 2 gm_prefs_window_get_audiooutput_devices_list : iter loop round 3 gm_prefs_window_get_audiooutput_devices_list : iter loop round 4 gm_prefs_window_get_audiooutput_devices_list : loop end gm_prefs_window_get_audiooutput_devices_list END ----------------------------------------------------- gm_pw_init_audio_devices_page : gm_prefs_window_convert_string_list gm_pw_init_audio_devices_page : array free n1 *** glibc detected *** ./ekiga: munmap_chunk(): invalid pointer: 0x0000000000a02d30 ***
Ah ha! I notice there are warnings much before, but that may already be the alsa code initializing itself! Does it still happen if you compile ptlib without debug (which means also rebuilding opal&ekiga unfortunately) ? We're circling around the problem... its days are numbered.
1) I can't build opal WITH debug if ptlib is NOT, it's maybe possible but too tricky for me to dig into the opal.m4 2) if ekiga is compiled WITHOUT debug-opal but opal is compiled WITH debug, it doesn't seems to make a difference (ekiga new Makefiles aren't retreated by maje and after all ekiga still link against /usr/lib/libopal_d.so) 3) no debug at all (ptlib, opal and ekiga) makes ekiga Preferences appear correctly as stated before 4) I would really like to compile the svn to make more testing but it's not my autotools day ! - no autogen because I don't have gnome-autogen - aclocal && autoconf && automake && libtoolize --copy --force - but ./configure always fails with : config.status: creating ekiga.desktop.in config.status: error: cannot find input file: lib/Makefile.in I don't know autotools so I don't know why it fails and cry. (patch from #575433 is applied in all the previous attempt, as part of the gentoo ebuild of ekiga 3.2.0)
About the heading "block not in heap" (which I will continue to post about here until be said to backtrace about elsewhere) : ./ekiga KickStart(add_spark): NULLAUDIOINPUT KickStart(add_spark): NULLAUDIOOUTPUT KickStart(add_spark): PTLIBVIDEOINPUT KickStart(add_spark): PTLIBAUDIOINPUT KickStart(add_spark): PTLIBAUDIOOUTPUT KickStart(add_spark): HALDBUSSPARK KickStart(add_spark): OPAL KickStart(add_spark): HISTORY kickstart.kick KICKSTART while went_on KickStart(kick): looping on BLANK sparks KickStart(kick): NULLAUDIOINPUT was promoted to FULL KickStart(kick): NULLAUDIOOUTPUT was promoted to FULL KickStart(kick): PTLIBVIDEOINPUT was promoted to FULL KickStart(kick): PTLIBAUDIOINPUT was promoted to FULL KickStart(kick): PTLIBAUDIOOUTPUT was promoted to FULL KickStart(kick): HALDBUSSPARK was promoted to FULL Block 0x91bd70 not in heap! Block 0x91bd70 not in heap! Block 0x9433a0 not in heap! Block 0x9433a0 not in heap! Block 0x939c70 not in heap! Block 0x939c70 not in heap! Block 0x954ee0 not in heap! Block 0x954ee0 not in heap! KickStart(kick): OPAL was promoted to FULL KickStart(kick): HISTORY was promoted to FULL local_roster_init KickStart(add_spark): LOCALROSTER KickStart(add_spark): LOCALROSTERBRIDGE KICKSTART while went_on KickStart(kick): looping on BLANK sparks KickStart(kick): LOCALROSTER was promoted to FULL KickStart(kick): LOCALROSTERBRIDGE was promoted to FULL KickStart(final log): BLANK: PARTIAL Wish it will help
*** Bug 577896 has been marked as a duplicate of this bug. ***
Hum I just discovered why I was not able to get a real debug output : I was using "ekiga -d4", my bad, with a "ekiga -d 4" I can post a more useful trace (thx Mounir) : Should I have said that I do not use hal (I'm saying because of the HALDBUSSPARK in my previous trace and notice I no more see it with 3.2.0 I build today, even if I didn't remember having change a lot the debugging in kickstart.c yesterday) ./ekiga -d 4 dyna.cxx(111) H263+ DYNA Successfully loaded 'libavcodec.so.52' dyna.cxx(337) H263+ DYNA Successfully loaded libavcodec library and verified functions h263-1998.cxx(1962) H.263 Codec Enabled with 4 definitions dyna.cxx(111) MPEG4 DYNA Successfully loaded 'libavcodec.so.52' dyna.cxx(337) MPEG4 DYNA Successfully loaded libavcodec library and verified functions mpeg4.cxx(1993) MPEG4 Codec Enabled dyna.cxx(111) H264 DYNA Successfully loaded 'libavcodec.so.52' dyna.cxx(337) H264 DYNA Successfully loaded libavcodec library and verified functions h264pipe_unix.cxx(301) H264 IPC PP: Found GPL process executable in /usr/lib64/opal-3.6.1/codecs/video/h264_video_pwplugin_helper x264loader_unix.cxx(114) H264 DYNA Trying to open x264 library libx264.so.65 x264loader_unix.cxx(131) H264 DYNA Successfully loaded libx264.so.65 x264loader_unix.cxx(103) H264 DYNA Loader was compiled with x264 build 65 present x264loader_unix.cxx(106) H264 DYNA Successfully loaded libx264 library and verified functions h264pipe_unix.cxx(118) H264 IPC PP: Successfully forked child process 12608 and established communication h264-x264.cxx(853) H264 Codec Enabled 2009/04/04 19:22:27.874 0:00.092 Version 3.2.0 by on Unix Linux (2.6.29-git9-amd64_pata-x86_64) with PTLib (v2.6.1) at 2009/4/4 19:22:27.874 2009/04/04 19:22:27.875 0:00.093 Ekiga SVN revision: unknown 2009/04/04 19:22:27.876 0:00.094 PWLib File handle high water mark set: 9 Thread unblock pipe 2009/04/04 19:22:27.876 0:00.094 PWLib Thread high water mark set: 2 2009/04/04 19:22:27.885 0:00.103 PWLib File handle high water mark set: 11 Thread unblock pipe 2009/04/04 19:22:27.886 0:00.104 PWLib Thread high water mark set: 3 2009/04/04 19:22:27.886 0:00.104 PWLib File handle high water mark set: 15 Thread unblock pipe 2009/04/04 19:22:27.887 0:00.105 PWLib File handle high water mark set: 17 Thread unblock pipe 2009/04/04 19:22:27.889 0:00.107 PWLib Thread high water mark set: 4 KickStart(add_spark): NULLAUDIOINPUT KickStart(add_spark): NULLAUDIOOUTPUT KickStart(add_spark): PTLIBVIDEOINPUT KickStart(add_spark): PTLIBAUDIOINPUT KickStart(add_spark): PTLIBAUDIOOUTPUT KickStart(add_spark): OPAL KickStart(add_spark): HISTORY KickStart(kick): looping on BLANK sparks KickStart(kick): NULLAUDIOINPUT was promoted to FULL KickStart(kick): NULLAUDIOOUTPUT was promoted to FULL KickStart(kick): PTLIBVIDEOINPUT was promoted to FULL KickStart(kick): PTLIBAUDIOINPUT was promoted to FULL KickStart(kick): PTLIBAUDIOOUTPUT was promoted to FULL 2009/04/04 19:22:27.892 0:00.110 PWLib File handle high water mark set: 21 Thread unblock pipe 2009/04/04 19:22:27.893 0:00.111 PWLib Thread high water mark set: 5 2009/04/04 19:22:27.893 0:00.111 OpalMan Created manager. 2009/04/04 19:22:27.908 0:00.126 OpalMan Registered endpoint with prefix pc 2009/04/04 19:22:27.908 0:00.126 OpalEP Created endpoint: pc Block 0x9346c0 not in heap! Block 0x9346c0 not in heap! Block 0x8d5bc0 not in heap! Block 0x8d5bc0 not in heap! Block 0x8ed0a0 not in heap! Block 0x8ed0a0 not in heap! Block 0x943a90 not in heap! Block 0x943a90 not in heap! 2009/04/04 19:22:27.920 0:00.138 PCSS Created PC sound system endpoint. Players: Default EKIGA ALi M5455 ALi M5455 (1) *.wav Recorders: Default EKIGA ALi M5455 ALi M5455 (1) *.wav #### MAYBE IMPORTANT : the following "block !" does NOT appear WITHOUT "-d 4" Block 0x943a70 not in heap! Block 0x943a70 not in heap! Block 0x943e30 not in heap! Block 0x943e30 not in heap! 2009/04/04 19:22:27.965 0:00.183 OPAL SetMediaFormatOrder() 2009/04/04 19:22:27.965 0:00.183 OPAL SetMediaFormatMask() 2009/04/04 19:22:27.966 0:00.184 OpalMan Registered endpoint with prefix sip 2009/04/04 19:22:27.966 0:00.184 OpalEP Created endpoint: sip 2009/04/04 19:22:27.967 0:00.185 PWLib File handle high water mark set: 22 PUDPSocket 2009/04/04 19:22:27.969 0:00.187 IfaceMon Initial interface list: 127.0.0.1 <00-00-00-00-00-00> (lo) 192.168.1.54 <00-13-8F-51-60-61> (eth0) 2009/04/04 19:22:27.969 0:00.187 PWLib File handle high water mark set: 23 Thread unblock pipe 2009/04/04 19:22:27.970 0:00.188 PWLib Thread high water mark set: 6 2009/04/04 19:22:27.970 0:00.188 Network In...0xa43aa950 IfaceMon Started interface monitor thread. 2009/04/04 19:22:27.971 0:00.189 Network In...0xa43aa950 PWLib File handle high water mark set: 24 PUDPSocket 2009/04/04 19:22:27.971 0:00.189 PWLib File handle high water mark set: 26 Thread unblock pipe 2009/04/04 19:22:27.971 0:00.189 PWLib Thread high water mark set: 7 2009/04/04 19:22:27.972 0:00.190 SIP Created endpoint. 2009/04/04 19:22:27.973 0:00.191 PWLib File handle low water mark set: 24 PUDPSocket 2009/04/04 19:22:27.973 0:00.191 MonSock Created socket bundle for all interfaces. 2009/04/04 19:22:27.974 0:00.192 PWLib File handle high water mark set: 27 PUDPSocket 2009/04/04 19:22:27.974 0:00.192 MonSock Created bundled UDP socket 192.168.1.54:5060 2009/04/04 19:22:27.975 0:00.193 PWLib File handle high water mark set: 29 Thread unblock pipe 2009/04/04 19:22:27.975 0:00.193 PWLib Thread high water mark set: 8 2009/04/04 19:22:27.976 0:00.194 Opal Liste...0xa4328950 Listen Started listening thread on udp$*:5060 2009/04/04 19:22:27.976 0:00.194 OpalMan Added route "sip:.*=pc:*" 2009/04/04 19:22:27.977 0:00.195 OpalMan Added route "pc:.*=sip:<da>" 2009/04/04 19:22:27.977 0:00.195 OpalMan Registered endpoint with prefix h323 2009/04/04 19:22:27.977 0:00.195 OpalEP Created endpoint: h323 2009/04/04 19:22:27.978 0:00.196 OpalMan Registered endpoint with prefix h323s 2009/04/04 19:22:28.004 0:00.222 H323 Created endpoint. 2009/04/04 19:22:28.005 0:00.223 PWLib File handle high water mark set: 30 PTCPSocket 2009/04/04 19:22:28.005 0:00.223 PWLib File handle high water mark set: 32 Thread unblock pipe 2009/04/04 19:22:28.006 0:00.224 PWLib Thread high water mark set: 9 2009/04/04 19:22:28.006 0:00.224 Opal Liste...0xa42e7950 Listen Started listening thread on tcp$*:1720 2009/04/04 19:22:28.006 0:00.224 Opal Liste...0xa42e7950 Listen Waiting on socket accept on tcp$*:1720 2009/04/04 19:22:28.007 0:00.225 OpalMan Added route "h323:.*=pc:<db>" 2009/04/04 19:22:28.007 0:00.225 OpalMan Added route "pc:.*=h323:<da>" KickStart(kick): OPAL was promoted to FULL KickStart(kick): HISTORY was promoted to FULL KickStart(add_spark): LOCALROSTER KickStart(add_spark): LOCALROSTERBRIDGE KickStart(kick): looping on BLANK sparks KickStart(kick): LOCALROSTER was promoted to FULL KickStart(kick): LOCALROSTERBRIDGE was promoted to FULL KickStart(final log): BLANK: PARTIAL: 2009/04/04 19:22:28.164 0:00.382 Ekiga version 3.2.0 2009/04/04 19:22:28.164 0:00.382 OPAL version 3.6.1 2009/04/04 19:22:28.164 0:00.382 PTLIB version 2.6.1 2009/04/04 19:22:28.164 0:00.382 GNOME support disabled 2009/04/04 19:22:28.164 0:00.382 Accelerated rendering support disabled 2009/04/04 19:22:28.164 0:00.382 DBUS support disabled 2009/04/04 19:22:28.164 0:00.382 GConf support disabled 2009/04/04 19:22:28.164 0:00.382 ESound support disabled 2009/04/04 19:22:28.295 0:00.513 MediaFormat Removing codecs H.264,theora,H.261,H.261-CIF,H.261-QCIF,H.263,H.263P,MPEG4,SpeexIETFWide-20.6k,SpeexWB,SpeexWide-20.6k,iLBC,G.711-uLaw-64k,G.711-ALaw-64k,G.722-64k 2009/04/04 19:22:28.296 0:00.514 OPAL SetMediaFormatMask(PCM-16-48kHz,PCM-16-32kHz,PCM-16-16kHz,PCM-16,G.726-16k,G.726-24k,G.726-32k,G.726-40k,GSM-06.10,GSM-AMR,LPC-10,MS-GSM,MS-IMA-ADPCM,SpeexIETFNarrow-11k,SpeexIETFNarrow-15k,SpeexIETFNarrow-18.2k,SpeexIETFNarrow-24.6k,SpeexIETFNarrow-5.95k,SpeexIETFNarrow-8k,SpeexNB,SpeexWNarrow-8k,iLBC-13k3,iLBC-15k2,YUV420P,RGB32,RGB24,Linear-16-Stereo-48kHz) 2009/04/04 19:22:28.296 0:00.514 OPAL SetMediaFormatOrder(H.264,theora,H.261,H.261-CIF,H.261-QCIF,H.263,H.263P,MPEG4,SpeexIETFWide-20.6k,SpeexWB,SpeexWide-20.6k,iLBC,G.711-uLaw-64k,G.711-ALaw-64k,G.722-64k) 2009/04/04 19:22:28.344 0:00.562 MediaFormat Removing codecs H.264,theora,H.261,H.261-CIF,H.261-QCIF,H.263,H.263P,MPEG4,SpeexIETFWide-20.6k,SpeexWB,SpeexWide-20.6k,iLBC,G.711-uLaw-64k,G.711-ALaw-64k,G.722-64k 2009/04/04 19:22:28.345 0:00.563 OPAL SetMediaFormatMask(PCM-16-48kHz,PCM-16-32kHz,PCM-16-16kHz,PCM-16,G.726-16k,G.726-24k,G.726-32k,G.726-40k,GSM-06.10,GSM-AMR,LPC-10,MS-GSM,MS-IMA-ADPCM,SpeexIETFNarrow-11k,SpeexIETFNarrow-15k,SpeexIETFNarrow-18.2k,SpeexIETFNarrow-24.6k,SpeexIETFNarrow-5.95k,SpeexIETFNarrow-8k,SpeexNB,SpeexWNarrow-8k,iLBC-13k3,iLBC-15k2,YUV420P,RGB32,RGB24,Linear-16-Stereo-48kHz) 2009/04/04 19:22:28.345 0:00.563 OPAL SetMediaFormatOrder(H.264,theora,H.261,H.261-CIF,H.261-QCIF,H.263,H.263P,MPEG4,SpeexIETFWide-20.6k,SpeexWB,SpeexWide-20.6k,iLBC,G.711-uLaw-64k,G.711-ALaw-64k,G.722-64k) 2009/04/04 19:22:28.377 0:00.595 VidInputCoreConfBridge Updating preview size and fps 2009/04/04 19:22:28.377 0:00.595 VidInputCore Setting new preview config: 176x144/30 2009/04/04 19:22:28.382 0:00.600 VidInputCoreConfBridge Updating preview size and fps 2009/04/04 19:22:28.382 0:00.600 VidInputCore Setting new preview config: 176x144/30 2009/04/04 19:22:28.390 0:00.608 VideoOutputCoreConfBridge Updating video view 2009/04/04 19:22:28.390 0:00.608 VideoOutputCoreConfBridge Updating zoom 2009/04/04 19:22:28.390 0:00.608 VideoOutputCoreConfBridge Updating Video Settings 2009/04/04 19:22:28.390 0:00.608 VideoOutputCoreConfBridge Updating Video Settings 2009/04/04 19:22:28.390 0:00.608 VideoOutputCoreConfBridge Updating Video Settings 2009/04/04 19:22:28.390 0:00.608 VideoOutputCoreConfBridge Updating Video Settings 2009/04/04 19:22:28.390 0:00.608 VidInputCoreConfBridge Updating preview size and fps 2009/04/04 19:22:28.390 0:00.608 VidInputCore Setting new preview config: 176x144/30 2009/04/04 19:22:28.396 0:00.614 VidInputCoreConfBridge Updating preview size and fps 2009/04/04 19:22:28.396 0:00.614 VidInputCore Setting new preview config: 176x144/30 2009/04/04 19:22:28.401 0:00.619 VidInputCoreConfBridge Updating device 2009/04/04 19:22:28.401 0:00.619 VidinputCore Tried to set malformed device 2009/04/04 19:22:28.401 0:00.619 VidInputCore Setting device: Moving Logo (Moving Logo/Moving Logo) 2009/04/04 19:22:28.401 0:00.619 GMVideoInputManager_mlogo Setting Device Moving Logo 2009/04/04 19:22:28.401 0:00.619 VidInputCoreConfBridge Updating device 2009/04/04 19:22:28.401 0:00.619 VidinputCore Tried to set malformed device 2009/04/04 19:22:28.401 0:00.619 VidInputCore Setting device: Moving Logo (Moving Logo/Moving Logo) 2009/04/04 19:22:28.401 0:00.619 GMVideoInputManager_mlogo Setting Device Moving Logo 2009/04/04 19:22:28.401 0:00.619 VidInputCoreConfBridge Updating device 2009/04/04 19:22:28.401 0:00.619 VidinputCore Tried to set malformed device 2009/04/04 19:22:28.401 0:00.620 VidInputCore Setting device: Moving Logo (Moving Logo/Moving Logo) 2009/04/04 19:22:28.402 0:00.620 GMVideoInputManager_mlogo Setting Device Moving Logo 2009/04/04 19:22:28.402 0:00.620 VidInputCoreConfBridge Updating image 2009/04/04 19:22:28.402 0:00.620 VidInputCoreConfBridge Updating preview 2009/04/04 19:22:28.402 0:00.620 VidInputCore Stopping Preview 2009/04/04 19:22:28.402 0:00.620 AudioOutputCoreConfBridge Updating device 2009/04/04 19:22:28.402 0:00.620 AudioOutputCore Setting device[0]: Default (PTLIB/ALSA) 2009/04/04 19:22:28.402 0:00.620 GMAudioOutputManager_ptlib Setting Device[0] Default (PTLIB/ALSA) 2009/04/04 19:22:28.402 0:00.620 AudioOutputCoreConfBridge Updating device 2009/04/04 19:22:28.402 0:00.620 AudioOutputCore Setting device[1]: PTLIB/ALSA/Default (PTLIB/ALSA/Defaul) 2009/04/04 19:22:28.402 0:00.620 GMAudioOutputManager_ptlib Setting Device[1] PTLIB/ALSA/Default (PTLIB/ALSA/Defaul) 2009/04/04 19:22:28.402 0:00.620 AudioInputCoreConfBridge Updating device 2009/04/04 19:22:28.402 0:00.620 AudioInputCore Setting device: Default (PTLIB/ALSA) 2009/04/04 19:22:28.402 0:00.620 GMAudioInputManager_ptlib Setting Device Default (PTLIB/ALSA) #### STABLE OUTPUT #### HERE I CLICK IN THE PREFERENCES gm_pw_init_audio_devices_page START gm_pw_init_audio_devices_page : gm_pw_get_pw gm_pw_init_audio_devices_page : gnome_prefs_subsection_new gm_pw_init_audio_devices_page : <std:string> device_list gm_pw_init_audio_devices_page : gm_prefs_window_get_audiooutput_devices_list ----------------------------------------------------- gm_prefs_window_get_audiooutput_devices_list START gm_prefs_window_get_audiooutput_devices_list : audiooutput_core->get_devices() ================================ AudioOutputCore::get_devices : START AudioOutputCore::get_devices [managers.begin() iterator] START loop round 0 loop round 1 virtual void GMAudioOutputManager_ptlib::get_devices(std::vector<Ekiga::AudioOutputDevice, std::allocator<Ekiga::AudioOutputDevice> >&) sources_array[0]: device.source=WAVFile PSoundChannel::GetDeviceNames() audio_devices.ToCharArray() devices_array[0] = *.wav sources_array[1]: device.source=EKIGA sources_array[2]: device.source=ALSA PSoundChannel::GetDeviceNames() Block 0xbf5e30 not in heap! Block 0xbf5e30 not in heap! audio_devices.ToCharArray() devices_array[0] = Default devices_array[1] = ALi M5455 devices_array[2] = ALi M5455 (1) AudioOutputCore::get_devices [managers.begin() iterator] END AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] START loop round 0 2009/04/04 19:22:31.611 0:03.829 AudioOutputCore Detected Device: SILENT (Ekiga/Ekiga) loop round 1 2009/04/04 19:22:31.612 0:03.830 AudioOutputCore Detected Device: *.wav (PTLIB/WAVFile) loop round 2 2009/04/04 19:22:31.612 0:03.830 AudioOutputCore Detected Device: Default (PTLIB/ALSA) loop round 3 2009/04/04 19:22:31.613 0:03.831 AudioOutputCore Detected Device: ALi M5455 (PTLIB/ALSA) loop round 4 2009/04/04 19:22:31.613 0:03.831 AudioOutputCore Detected Device: ALi M5455 (1) (PTLIB/ALSA) AudioOutputCore::get_devices [TRACING] [devices.begin() iterator] STOP AudioOutputCore::get_devices : END ================================ gm_prefs_window_get_audiooutput_devices_list : loop start gm_prefs_window_get_audiooutput_devices_list : iter loop round 0 gm_prefs_window_get_audiooutput_devices_list : iter loop round 1 gm_prefs_window_get_audiooutput_devices_list : iter loop round 2 gm_prefs_window_get_audiooutput_devices_list : iter loop round 3 gm_prefs_window_get_audiooutput_devices_list : iter loop round 4 gm_prefs_window_get_audiooutput_devices_list : loop end gm_prefs_window_get_audiooutput_devices_list END ----------------------------------------------------- gm_pw_init_audio_devices_page : gm_prefs_window_convert_string_list gm_pw_init_audio_devices_page : array free n1 *** glibc detected *** ./ekiga: munmap_chunk(): invalid pointer: 0x0000000000bf6b60 ***
Created attachment 132087 [details] another trace as attachement (without linecuts)
Sigh... it looks even more like a problem with the ptlib alsa code :-/ I'm wondering if I shouldn't push it upstream :-/
Created attachment 132160 [details] new trace with ptlib traced You seems right about the ptlib. Here is a trace with some printf added to the ptlib plugin/sound_alsa/sound_alsa.cxx code (I just wish the "Block not in heap" are related to the preferences segfault)
There's a very simple way to check if the message and crash are related and in the alsa code : move /usr/lib/ptlib/devices/audio/ptlib_alsa.so away, then try to run ekiga and open the preference window. Indeed, as that piece of code is dynamically loaded, it's easy to push out without even a recompilation! Could you confirm we're on the right trail?
Created attachment 132182 [details] trace of segfault with renaming the ptlib alsa plugin I moved /usr/lib/ptlib-2.6.1/devices/sound/alsa_pwplugin.so. So no more "Block not in heap", some warnings of ekiga BUT .... still segfault :[
(oups, just one mistake : ekiga doesn't output any warning, ptlib just quietly skip the alsa output).
Created attachment 132184 [details] [review] Possible fix Sigh... could you try this patch, to see if it improves things ? I don't get why what I modified would fail in your case and work in the other cases, but...
2009/04/06 16:53:56.493 0:04.450 AudioOutputCore Detected Device: SILENT (Ekiga/Ekiga) 2009/04/06 16:53:56.494 0:04.451 AudioOutputCore Detected Device: *.wav (PTLIB/WAVFile) [DEBUG]audio_player = gnome_prefs_string_option_menu_new [DEBUG]array dump : 0xbe09f0 = "SILENT (Ekiga/Ekiga)" [DEBUG]g_strfreev(array)...... *** glibc detected *** ./ekiga: munmap_chunk(): invalid pointer: 0x0000000000be09f0 *** --> With and without the ptlib alsa plugin link, except that with it, there is AudioOutputCore Detected Device: Default (PTLIB/ALSA) AudioOutputCore Detected Device: ALi M5455 (PTLIB/ALSA) AudioOutputCore Detected Device: ALi M5455 (1) (PTLIB/ALSA) between *.wav (PTLIB/WAVFile) and the first [DEBUG] line
Hmmmm... could you try to replace the call to "malloc" by a call to "g_malloc" in gm_prefs_window_convert_string_list? It really looks like the problem is with this memory allocation!
Snark, I see that there are several cases where the return value from malloc/g_malloc is not checked. Shouldn't we check it against NULL??
Snark, malloc => g_malloc is fine : It works ! Good job ! (thanks for your attention) A bit curious about the insides of this bug (waiting for the "developper conclusion word") ps: what about the ptlib related "Blocks not in heap" I now suspect to avoid my alsa-jack setup not to work ? :)
The explanation is simple : memory management is a question of pairs : malloc/free, g_malloc/g_free, new/delete, new[]/delete[]... and in that case, there was a mismatch. Pretty trivial to fix, but so difficult to pinpoint :-( You should probably report the problem about the "Block not in heap" to our own upstream, that is : http://www.opalvoip.org/ (ptlib package). Thanks for the help, that made the difference!
*** Bug 578611 has been marked as a duplicate of this bug. ***