> There's a page on running Asterisk under valgrind on the wiki here:

Thanks for the pointer.  Valgrind wasn't needed since Asterisk MALLOC_DEBUG
was enough.

It took almost 1.5 hours in GDB, but I found it.  Because I was having
problems with res_speech_lumenvox, I was using UniMRCP, which uses Sofia-SIP.
But there's a bug:

*** su_uniqueid.c.old   2011-08-22 07:05:02.000000000 -0400
--- su_uniqueid.c       2012-09-04 23:46:02.000000000 -0400
***************
*** 100,104 ****
  
  static pthread_once_t once = PTHREAD_ONCE_INIT;
! static int done_once = 1;
  static pthread_key_t state_key;
  
--- 100,104 ----
  
  static pthread_once_t once = PTHREAD_ONCE_INIT;
! static int done_once = 0;
  static pthread_key_t state_key;
  
This was causing Sofia-SIP to call pthread_key_delete with a key that
wasn't actually created, meaning key 0.  Key 0 is used in Asterisk for
the thread storage for verbose_buf when MALLOC_DEBUG is enabled.
Deleting that key by itself didn't cause a problem, but mySQL's
initialization created another key, so 0 was reassigned.  When it
then used pthread_setspecific for its own purpose, it messed up
Asterisk's memory allocation.

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to