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 418991 - crash in Ekiga Softphone: Starting up the applicat...
crash in Ekiga Softphone: Starting up the applicat...
Status: RESOLVED FIXED
Product: ekiga
Classification: Applications
Component: general
2.0.x
Other All
: High critical
: ---
Assigned To: Ekiga maintainers
Ekiga maintainers
: 443848 444379 451584 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2007-03-16 15:09 UTC by Robin Putters
Modified: 2007-06-27 12:50 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16



Description Robin Putters 2007-03-16 15:09:23 UTC
Version: 2.0.3

What were you doing when the application crashed?
Starting up the application


Distribution: Debian 4.0
Gnome Release: 2.16.2 2006-12-03 (Debian)
BugBuddy Version: 2.16.1

System: Linux 2.6.18-4-amd64 #1 SMP Wed Feb 21 14:29:38 UTC 2007 x86_64
X Vendor: The X.Org Foundation
X Vendor Release: 70101000
Selinux: No
Accessibility: Disabled

Memory status: size: 200761344 vsize: 200761344 resident: 29696000 share: 21774336 rss: 29696000 rss_rlim: -1
CPU usage: start_time: 1174057826 rtime: 54 utime: 50 stime: 4 cutime:0 cstime: 0 timeout: 0 it_real_value: 0 frequency: 100

Backtrace was generated from '/usr/bin/ekiga'

(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread 47687825961696 (LWP 4483)]
[New Thread 1099716960 (LWP 4494)]
[New Thread 1099450720 (LWP 4490)]
[New Thread 1074272608 (LWP 4487)]
[New Thread 1074006368 (LWP 4486)]
(no debugging symbols found)
0x00002b5f2be4e00f in waitpid () from /lib/libpthread.so.0

Thread 1 (Thread 47687825961696 (LWP 4483))

  • #0 waitpid
    from /lib/libpthread.so.0
  • #1 ??
    from /usr/lib/libgnomeui-2.so.0
  • #2 <signal handler called>
  • #3 strlen
    from /lib/libc.so.6
  • #4 vfprintf
    from /lib/libc.so.6
  • #5 vsnprintf
    from /lib/libc.so.6
  • #6 ??
  • #7 ??
  • #8 ??
  • #9 ??
  • #10 ??
  • #11 ??
  • #12 ??
  • #13 __libc_start_main
    from /lib/libc.so.6
  • #14 ??
  • #15 ??
  • #16 ??
  • #0 waitpid
    from /lib/libpthread.so.0


----------- .xsession-errors (119 sec old) ---------------------
** Message: volume = 0
** Message: drive = 0
** Message: volume = 0
** Message: drive = 0
** Message: volume = 0
** Message: drive = 0
** Message: volume = 0
** Message: drive = 0
** Message: volume = 0
** Message: drive = 0
** Message: volume = 0
** Message: drive = 0
** Message: volume = 0
** Message: drive = 0
** Message: volume = 0
--------------------------------------------------
Comment 1 Snark 2007-03-16 16:06:11 UTC
Thanks for taking the time to report this bug.
Without a stack trace from the crash it's very hard to determine what caused it.
Can you get us a stack trace? Please see http://live.gnome.org/GettingTraces for more information on how to do so. Thanks in advance!

Using debian, having issues is pretty unusual...
Comment 2 Robin Putters 2007-03-16 16:35:57 UTC
Using this debug info, I tried to clear all apps/ekiga/devices/video keys (setting them to unset), and all of a sudden ekiga started up again.

Still though, I don't think it should crash on a malformed gconf key?

  • #0 strlen
    from /lib/libc.so.6
  • #1 vfprintf
    from /lib/libc.so.6
  • #2 vsnprintf
    from /lib/libc.so.6
  • #3 gnomemeeting_warning_dialog_on_widget
    at gmdialog.c line 474
  • #4 GMVideoGrabber::VGOpen
    at devices/videoinput.cpp line 395
  • #5 GMVideoGrabber
    at devices/videoinput.cpp line 83
  • #6 GMManager::CreateVideoGrabber
    at endpoints/manager.cpp line 495
  • #7 GMManager::UpdateDevices
    at endpoints/manager.cpp line 211
  • #8 GMManager::Init
    at endpoints/manager.cpp line 1538
  • #9 main
    at gui/main.cpp line 4628

Comment 3 Snark 2007-03-16 17:32:33 UTC
How come those keys could become malformed in the first place ?
Comment 4 Robin Putters 2007-03-16 17:40:40 UTC
I've never used ekiga before, I just installed it and went through the configuration pages. It autodetected my settings, so probably the application or the configuration tool put them there.

I'm able to reproduce the crash now, if I set channel to '1' (I think it was like that after the config tool ran), it immediately crashes.
Comment 5 Damien Sandras 2007-03-16 19:00:57 UTC
Can you post a backtrace ?

Most probably your video driver has a bug and we can close this bug report as NOTGNOME.
Comment 6 Jan Schampera 2007-03-17 09:05:01 UTC
Or PWLib (device drivers!)?

J.
Comment 7 Snark 2007-03-17 09:42:12 UTC
We still need a "thread apply all bt" to decide.
Comment 8 Robin Putters 2007-03-19 12:02:27 UTC
(gdb)  thread apply all bt

Thread 3 (Thread 1074272608 (LWP 7027))

  • #0 __lll_mutex_lock_wait
    from /lib/libpthread.so.0
  • #1 ??
  • #2 ??

Thread 1 (Thread 47240604672736 (LWP 7021))

  • #0 strlen
    from /lib/libc.so.6
  • #1 vfprintf
    from /lib/libc.so.6
  • #2 vsnprintf
    from /lib/libc.so.6
  • #3 gnomemeeting_warning_dialog_on_widget
    at gmdialog.c line 474
  • #4 GMVideoGrabber::VGOpen
    at devices/videoinput.cpp line 395
  • #5 GMVideoGrabber
  • #6 GMManager::CreateVideoGrabber
    at endpoints/manager.cpp line 495
  • #7 GMManager::UpdateDevices
    at endpoints/manager.cpp line 211
  • #8 GMManager::Init
    at endpoints/manager.cpp line 1538
  • #9 main
    at gui/main.cpp line 4628

Comment 9 Damien Sandras 2007-03-19 12:22:51 UTC
Does it crash if you run it with : LC_ALL=C ekiga instead ?

Actually, I see where it crashes.

Could you try editing src/devices/videoinput.cpp:395 and see the values of the parameters (dialog_title and dialog_msg) that you are passing to gnomemeeting_warning_dialog_on_widget ?

I have the feeling that : dialog_title is corrupted due to the driver being faulty. (I'm nearly sure it is the case because that code is very old and never gave any problem).
Comment 10 Robin Putters 2007-03-19 13:14:38 UTC
This one also crashes:
robin@debianapple:~/ekiga$ LC_ALL=C ekiga

These are dialog_title and dialog_msg (look pretty sane to me).

---
Error while opening video device Built-in iSight
---
A moving logo will be transmitted during calls. Notice that you can always transmit a given image or the moving logo by choosing "Picture" as video plugin and "MovingLogo" or "StaticPicture" as device.

Could not open the chosen channel.
---


Comment 11 Damien Sandras 2007-03-19 13:18:26 UTC
You are using a Macbook Pro Core 2 Duo ? (like me).

However, I can not crash Ekiga here. Even if I put 1 as video channel instead of 0  (like it is probably the case for you)

Can you have a look at the vsnprintf in gmdialog.c to see what's wrong ?

(you seem to be able to code, so that would help a lot).
Comment 12 Robin Putters 2007-03-19 14:11:32 UTC
Yes, I'm using a Macbook Pro Core 2 Duo..

I found out the problem: in the function gnomemeeting_warning_dialog_on_widget the function vsnprintf (buffer, 1024, format, args) is called twice. The second call causes the problem (possibly a buffer overflow, so that would be the reason why you might not notice it, it may just be corrupting some other random memory).

Removing the second call to vsnprintf (buffer, 1024, format, args) fixes the problem, and ekiga starts up fine. The second vsnprintf seems totally unnecessary to me, you might want to verify it's necessary, but from judging the code I think it can safely be removed.

Yes, I'm able to code, but my C/C++ is a little bit rusty, thanks for the pointers.
Comment 13 Damien Sandras 2007-03-19 19:34:30 UTC
I have applied your patch in HEAD, H_Release and gnome-2-14.

In shorter words, it will be available in the next release of Ekiga.

Thanks!
Comment 14 Robin Putters 2007-03-21 14:45:32 UTC
Just for the record, I figured out why vsnprintf() crashes the second time when called from the gnomemeeting_warning_dialog_on_widget function. va_end() should be called after returning from vsnprintf(), and resulting from that, before second use of the args parameter va_start() should be called again.

So adding the statements va_end();va_start(format, args); also would have fixed this bug.

Thanks for your quick responses,
Robin
Comment 15 Damien Sandras 2007-03-21 16:51:30 UTC
I don't like when I do not understand something and it was the case :)

Thank you for your feedback and explanation !
Comment 16 Damien Sandras 2007-06-04 08:53:43 UTC
*** Bug 443848 has been marked as a duplicate of this bug. ***
Comment 17 Snark 2007-06-05 20:38:16 UTC
*** Bug 444379 has been marked as a duplicate of this bug. ***
Comment 18 Snark 2007-06-27 12:50:49 UTC
*** Bug 451584 has been marked as a duplicate of this bug. ***