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 577629 - compiled with debug support, , ekiga segfaults when opening the "Preferences" window
compiled with debug support, , ekiga segfaults when opening the "Preferences"...
Status: RESOLVED FIXED
Product: ekiga
Classification: Applications
Component: general
3.2.x
Other All
: Normal critical
: ---
Assigned To: Snark
Ekiga maintainers
: 577896 578611 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-04-01 17:42 UTC by Raphaël
Modified: 2009-04-10 15:10 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
another trace as attachement (without linecuts) (19.14 KB, text/plain)
2009-04-04 17:44 UTC, Raphaël
  Details
new trace with ptlib traced (28.08 KB, text/plain)
2009-04-05 23:00 UTC, Raphaël
  Details
trace of segfault with renaming the ptlib alsa plugin (15.53 KB, text/plain)
2009-04-06 11:21 UTC, Raphaël
  Details
Possible fix (3.10 KB, patch)
2009-04-06 12:19 UTC, Snark
none Details | Review

Description Raphaël 2009-04-01 17:42:38 UTC
Steps to reproduce:
1. compile ekiga, opal and ptlib with debug options
2. launch ekiga
3. try access the Preferences


Stack trace:
  • #0 raise
    from /lib/libc.so.6
  • #1 abort
    from /lib/libc.so.6
  • #2 ??
    from /lib/libc.so.6
  • #3 ??
    from /lib/libc.so.6
  • #4 gm_pw_init_audio_devices_page
  • #5 gm_prefs_window_new
  • #6 GnomeMeeting::GetPrefsWindow
  • #7 show_prefs_window_cb
  • #8 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #9 ??
    from /usr/lib/libgobject-2.0.so.0
  • #10 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #11 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #12 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #13 gtk_menu_shell_activate_item
    from /usr/lib/libgtk-x11-2.0.so.0
  • #14 gtk_menu_shell_button_release
    from /usr/lib/libgtk-x11-2.0.so.0
  • #15 _gtk_marshal_BOOLEAN__BOXED
    from /usr/lib/libgtk-x11-2.0.so.0
  • #16 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #17 ??
    from /usr/lib/libgobject-2.0.so.0
  • #18 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #19 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #20 gtk_widget_event_internal
    from /usr/lib/libgtk-x11-2.0.so.0
  • #21 gtk_propagate_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #22 gtk_main_do_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #23 gdk_event_dispatch
    from /usr/lib/libgdk-x11-2.0.so.0
  • #24 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #25 ??
    from /usr/lib/libglib-2.0.so.0
  • #26 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #27 gtk_main
    from /usr/lib/libgtk-x11-2.0.so.0
  • #28 main

####################################################################
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
Comment 1 Eugen Dedu 2009-04-01 18:45:04 UTC
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?
Comment 2 Snark 2009-04-01 19:16:55 UTC
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.
Comment 3 Raphaël 2009-04-01 22:39:59 UTC
./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.
Comment 4 Snark 2009-04-02 05:05:03 UTC
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.
Comment 5 Raphaël 2009-04-02 11:07:13 UTC
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
Comment 6 Snark 2009-04-02 12:41:31 UTC
Wouldn't the crash be in gm_prefs_window_get_audiooutput_devices_list instead of gm_pw_init_audio_devices_page?
Comment 7 Raphaël 2009-04-02 13:30:45 UTC
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 **
Comment 8 Snark 2009-04-02 14:03:10 UTC
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).
Comment 9 Damien Sandras 2009-04-02 14:08:43 UTC
Try 'export MALLOC_CHECK_=2' before running Ekiga. That way it will crash where the problem happens.
Comment 10 Raphaël 2009-04-02 14:25:00 UTC
$ ./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.
Comment 11 Snark 2009-04-02 19:53:15 UTC
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) ?
Comment 12 Raphaël 2009-04-02 21:14:52 UTC
/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
Comment 13 Snark 2009-04-03 06:37:05 UTC
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.
Comment 14 Raphaël 2009-04-03 12:01:58 UTC
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 ***
Comment 15 Snark 2009-04-03 12:48:53 UTC
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.
Comment 16 Raphaël 2009-04-03 14:13:56 UTC
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)
Comment 17 Raphaël 2009-04-03 15:37:30 UTC
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
Comment 18 Eugen Dedu 2009-04-04 07:30:27 UTC
*** Bug 577896 has been marked as a duplicate of this bug. ***
Comment 19 Raphaël 2009-04-04 17:35:40 UTC
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 ***
Comment 20 Raphaël 2009-04-04 17:44:56 UTC
Created attachment 132087 [details]
another trace as attachement (without linecuts)
Comment 21 Snark 2009-04-05 20:40:41 UTC
Sigh... it looks even more like a problem with the ptlib alsa code :-/

I'm wondering if I shouldn't push it upstream :-/
Comment 22 Raphaël 2009-04-05 23:00:12 UTC
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)
Comment 23 Snark 2009-04-06 06:49:06 UTC
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?
Comment 24 Raphaël 2009-04-06 11:21:04 UTC
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 :[
Comment 25 Raphaël 2009-04-06 11:23:54 UTC
(oups, just one mistake : ekiga doesn't output any warning, ptlib just quietly skip the alsa output).
Comment 26 Snark 2009-04-06 12:19:46 UTC
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...
Comment 27 Raphaël 2009-04-06 14:59:24 UTC
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
Comment 28 Snark 2009-04-06 15:40:36 UTC
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!
Comment 29 Eugen Dedu 2009-04-06 16:08:22 UTC
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??
Comment 30 Raphaël 2009-04-06 16:29:09 UTC
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 ? :)
Comment 31 Snark 2009-04-06 17:02:18 UTC
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!
Comment 32 Eugen Dedu 2009-04-10 15:10:19 UTC
*** Bug 578611 has been marked as a duplicate of this bug. ***