Re: [Ekiga-devel-list] I need brains!



Julien Puydt a écrit :
the crash-on-exit bug which cripples ekiga since too long.

I have no clue why. Help!

If :
- I compile out evolution-data-server ;
- I disconnect forcefully the GUI from the engine in the roster&addressbook windows (which makes ekiga unusable...) ;
- I put back the memory management (make gmref.cpp call delete again) ;

then I don't get crashes.

This makes me wonder if there aren't *two* crashers, helping each other escape a proper fix.

Here is the backtrace from the evolution crash :
#0  0x00000500 in ?? ()
#1  0xb7002dbb in sigc::trackable::notify_callbacks() ()
   from /usr/lib/libsigc-2.0.so.0
#2  0xb7002e2d in sigc::trackable::~trackable() ()
   from /usr/lib/libsigc-2.0.so.0
#3  0xb700287a in sigc::signal_base::~signal_base() ()
   from /usr/lib/libsigc-2.0.so.0
#4  0x0817d11f in ~Book (this=0x832ee00, __vtt_parm=0x824ec58)
    at /usr/include/sigc++-2.0/sigc++/signal.h:1663
#5  0x081ec5a3 in ~BookImpl (this=0x832ee00, __vtt_parm=0x824ec54)
    at ../../../../lib/engine/addressbook/skel/book-impl.h:157
#6  0x081e93e1 in ~Book (this=0x832ee00)
    at ../../../../lib/engine/addressbook/evolution/evolution-book.cpp:220
#7  0x080f8b88 in gmref_dec (obj=0xb673e160) at gmref.cpp:60
#8  0x081c5f41 in ~gmref_ptr (this=0x832fe98)
    at ../../../../lib/gmref/gmref.h:207
#9 0x081c63f2 in sigc::internal::typed_slot_rep<sigc::bind_functor<0, sigc::bound_const_mem_functor2<void, sigc::signal2<void, gmref_ptr<Ekiga::Book>, gmref_ptr<Ekiga::Contact>, sigc::nil>, gmref_ptr<Ekiga::Book> const&, gmref_ptr<Ekiga::Contact> const&>, gmref_ptr<Evolution::Book>, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> >::destroy (data=0x832fe68)
    at /usr/include/sigc++-2.0/sigc++/adaptors/bound_argument.h:51
#10 0xb700335d in sigc::internal::slot_rep::notify(void*) ()
   from /usr/lib/libsigc-2.0.so.0
#11 0xb7002d5a in sigc::internal::trackable_callback_list::~trackable_callback_list() () from /usr/lib/libsigc-2.0.so.0
#12 0xb7002dbb in sigc::trackable::notify_callbacks() ()
   from /usr/lib/libsigc-2.0.so.0
#13 0xb7002e2d in sigc::trackable::~trackable() ()
   from /usr/lib/libsigc-2.0.so.0
#14 0xb700287a in sigc::signal_base::~signal_base() ()
   from /usr/lib/libsigc-2.0.so.0
#15 0x081c8fd8 in Ekiga::SourceImpl<Evolution::Book>::~SourceImpl() ()
#16 0x081c59ad in ~Source (this=0x82c3b58)
at ../../../../lib/engine/addressbook/evolution/evolution-source.cpp:160
#17 0x080f8b88 in gmref_dec (obj=0xb673e160) at gmref.cpp:60
#18 0x080d6ff1 in ~gmref_ptr (this=0x83301e0) at ../lib/gmref/gmref.h:207
#19 0x08129d11 in ~ServiceCore (this=0x828bb78)
    at /usr/include/c++/4.3/ext/new_allocator.h:118
#20 0x080f6c18 in GnomeMeeting::Exit (this=0x8253760) at ekiga.cpp:119
#21 0x080e3801 in main (argc=0, argv=0x8618274, envp=Cannot access memory at address 0x20
) at gui/main.cpp:4557

What does that mean? Well, at shutdown, we free the Ekiga::ServiceCore, which frees the Evolution::Source, which frees a signal, which frees a gmref_ptr (which was there because a sigc::bind was connected to the signal), which frees an Evolution::Book, which frees a signal... and there it crashes, and I don't know exactly why (!).

What I find quite startling is that the LDAP code and the call-history code, which are organized like the EDS code... doesn't crash! So the problem has to be something pretty unique to the EDS code...

Before you ask : that evolution crash does go away if I comment out the memory freeing in gmref.cpp... so it may share a common root with the crash in the GUI code.

Help, I need somebody! Help, not just anybody! Help, you know I need someone, help!

Snark


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