diff --git a/third-party/pjproject/patches/0007-BUGBUG-Add-debug-msgs.patch b/third-party/pjproject/patches/0007-BUGBUG-Add-debug-msgs.patch new file mode 100644 index 0000000..5dd3a55 --- /dev/null +++ b/third-party/pjproject/patches/0007-BUGBUG-Add-debug-msgs.patch @@ -0,0 +1,197 @@ +diff --git a/pjlib/include/pj/pool_i.h b/pjlib/include/pj/pool_i.h +index 376fd6a..b19a498 100644 +--- a/pjlib/include/pj/pool_i.h ++++ b/pjlib/include/pj/pool_i.h +@@ -83,11 +83,16 @@ PJ_IDEF(pj_pool_t*) pj_pool_create( pj_pool_factory *f, + pj_size_t increment_size, + pj_pool_callback *callback) + { +- return (*f->create_pool)(f, name, initial_size, increment_size, callback); ++ pj_pool_t *pool = (*f->create_pool)(f, name, initial_size, increment_size, callback); ++ if (pool) { ++ PJ_LOG(3,(pool->obj_name, "Pool: created")); ++ } ++ return pool; + } + + PJ_IDEF(void) pj_pool_release( pj_pool_t *pool ) + { ++ PJ_LOG(3,(pool->obj_name, "Pool: released")); + if (pool->factory->release_pool) + (*pool->factory->release_pool)(pool->factory, pool); + } +diff --git a/pjlib/src/pj/pool.c b/pjlib/src/pj/pool.c +index fcdb862..fad3ddd 100644 +--- a/pjlib/src/pj/pool.c ++++ b/pjlib/src/pj/pool.c +@@ -31,7 +31,7 @@ + # include + #endif + +-#define LOG(expr) PJ_LOG(6,expr) ++#define LOG(expr) PJ_LOG(3,expr) + #define ALIGN_PTR(PTR,ALIGNMENT) (PTR + (-(pj_ssize_t)(PTR) & (ALIGNMENT-1))) + + PJ_DEF_DATA(int) PJ_NO_MEMORY_EXCEPTION; +@@ -106,7 +106,7 @@ PJ_DEF(void*) pj_pool_allocate_find(pj_pool_t *pool, pj_size_t size) + + /* If pool is configured NOT to expand, return error. */ + if (pool->increment_size == 0) { +- LOG((pool->obj_name, "Can't expand pool to allocate %u bytes " ++ LOG((pool->obj_name, "Pool: Can't expand pool to allocate %u bytes " + "(used=%u, cap=%u)", + size, pj_pool_get_used_size(pool), pool->capacity)); + (*pool->callback)(pool, size); +@@ -132,7 +132,7 @@ PJ_DEF(void*) pj_pool_allocate_find(pj_pool_t *pool, pj_size_t size) + } + + LOG((pool->obj_name, +- "%u bytes requested, resizing pool by %u bytes (used=%u, cap=%u)", ++ "Pool: %u bytes requested, resizing pool by %u bytes (used=%u, cap=%u)", + size, block_size, pj_pool_get_used_size(pool), pool->capacity)); + + block = pj_pool_create_block(pool, block_size); +@@ -224,7 +224,7 @@ PJ_DEF(pj_pool_t*) pj_pool_create_int( pj_pool_factory *f, const char *name, + /* Pool initial capacity and used size */ + pool->capacity = initial_size; + +- LOG((pool->obj_name, "pool created, size=%u", pool->capacity)); ++ LOG((pool->obj_name, "Pool: created, size=%u", pool->capacity)); + return pool; + } + +@@ -269,7 +269,7 @@ static void reset_pool(pj_pool_t *pool) + */ + PJ_DEF(void) pj_pool_reset(pj_pool_t *pool) + { +- LOG((pool->obj_name, "reset(): cap=%d, used=%d(%d%%)", ++ LOG((pool->obj_name, "Pool: reset(): cap=%d, used=%d(%d%%)", + pool->capacity, pj_pool_get_used_size(pool), + pj_pool_get_used_size(pool)*100/pool->capacity)); + +@@ -283,7 +283,7 @@ PJ_DEF(void) pj_pool_destroy_int(pj_pool_t *pool) + { + pj_size_t initial_size; + +- LOG((pool->obj_name, "destroy(): cap=%d, used=%d(%d%%), block0=%p-%p", ++ LOG((pool->obj_name, "Pool: destroy(): cap=%d, used=%d(%d%%), block0=%p-%p", + pool->capacity, pj_pool_get_used_size(pool), + pj_pool_get_used_size(pool)*100/pool->capacity, + ((pj_pool_block*)pool->block_list.next)->buf, +diff --git a/pjlib/src/pj/pool_caching.c b/pjlib/src/pj/pool_caching.c +index 11e5852..3dbd7b6 100644 +--- a/pjlib/src/pj/pool_caching.c ++++ b/pjlib/src/pj/pool_caching.c +@@ -184,7 +184,7 @@ static pj_pool_t* cpool_create_pool(pj_pool_factory *pf, + cp->capacity = 0; + } + +- PJ_LOG(6, (pool->obj_name, "pool reused, size=%u", pool->capacity)); ++ PJ_LOG(3, (pool->obj_name, "Pool: reused, size=%u", pool->capacity)); + } + + /* Put in used list. */ +@@ -241,7 +241,7 @@ static void cpool_release_pool( pj_pool_factory *pf, pj_pool_t *pool) + } + + /* Reset pool. */ +- PJ_LOG(6, (pool->obj_name, "recycle(): cap=%d, used=%d(%d%%)", ++ PJ_LOG(3, (pool->obj_name, "Pool: recycle(): cap=%d, used=%d(%d%%)", + pool_capacity, pj_pool_get_used_size(pool), + pj_pool_get_used_size(pool)*100/pool_capacity)); + pj_pool_reset(pool); +diff --git a/pjsip/include/pjsip/sip_transport.h b/pjsip/include/pjsip/sip_transport.h +index 78e3e1b..253c635 100644 +--- a/pjsip/include/pjsip/sip_transport.h ++++ b/pjsip/include/pjsip/sip_transport.h +@@ -652,7 +652,9 @@ PJ_DECL(pj_status_t) pjsip_tx_data_create( pjsip_tpmgr *mgr, + * + * @param tdata The transmit buffer. + */ +-PJ_DECL(void) pjsip_tx_data_add_ref( pjsip_tx_data *tdata ); ++#define pjsip_tx_data_add_ref(tdata) pjsip_tx_data_add_ref_dbg(tdata, __FILE__, __LINE__, __PRETTY_FUNCTION__) ++ ++PJ_DECL(void) pjsip_tx_data_add_ref_dbg(pjsip_tx_data *tdata, const char *file, int line, const char *func); + + /** + * Decrement reference counter of the transmit buffer. +@@ -664,7 +666,9 @@ PJ_DECL(void) pjsip_tx_data_add_ref( pjsip_tx_data *tdata ); + * status is non-zero. A status PJSIP_EBUFDESTROYED will be + * returned to inform that buffer is destroyed. + */ +-PJ_DECL(pj_status_t) pjsip_tx_data_dec_ref( pjsip_tx_data *tdata ); ++#define pjsip_tx_data_dec_ref(tdata) pjsip_tx_data_dec_ref_dbg(tdata, __FILE__, __LINE__, __PRETTY_FUNCTION__) ++ ++PJ_DECL(pj_status_t) pjsip_tx_data_dec_ref_dbg(pjsip_tx_data *tdata, const char *file, int line, const char *func); + + /** + * Print the SIP message to transmit data buffer's internal buffer. This +diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c +index 30b7d40..53b7561 100644 +--- a/pjsip/src/pjsip/sip_transaction.c ++++ b/pjsip/src/pjsip/sip_transaction.c +@@ -998,6 +998,7 @@ static pj_status_t tsx_create( pjsip_module *tsx_user, + + pj_ansi_snprintf(tsx->obj_name, sizeof(tsx->obj_name), + "tsx%p", tsx); ++ PJ_LOG(3,(tsx->obj_name, "Transaction created. Pool: renaming %s to %s", pool->obj_name, tsx->obj_name)); + pj_memcpy(pool->obj_name, tsx->obj_name, sizeof(pool->obj_name)); + + tsx->handle_200resp = 1; +@@ -1039,7 +1040,7 @@ static void tsx_on_destroy( void *arg ) + { + pjsip_transaction *tsx = (pjsip_transaction*)arg; + +- PJ_LOG(5,(tsx->obj_name, "Transaction destroyed!")); ++ PJ_LOG(3,(tsx->obj_name, "Transaction destroyed!")); + + pj_mutex_destroy(tsx->mutex_b); + pjsip_endpt_release_pool(tsx->endpt, tsx->pool); +diff --git a/pjsip/src/pjsip/sip_transport.c b/pjsip/src/pjsip/sip_transport.c +index f87e47c..ae7b734 100644 +--- a/pjsip/src/pjsip/sip_transport.c ++++ b/pjsip/src/pjsip/sip_transport.c +@@ -459,14 +459,17 @@ PJ_DEF(pj_status_t) pjsip_tx_data_create( pjsip_tpmgr *mgr, + /* + * Add reference to tx buffer. + */ +-PJ_DEF(void) pjsip_tx_data_add_ref( pjsip_tx_data *tdata ) ++PJ_DEF(void) pjsip_tx_data_add_ref_dbg(pjsip_tx_data *tdata, const char *file, int line, const char *func) + { +- pj_atomic_inc(tdata->ref_cnt); ++ pj_atomic_value_t ref_cnt; ++ ref_cnt = pj_atomic_inc_and_get(tdata->ref_cnt); ++ PJ_LOG(3,(tdata->obj_name, "Add ref tdata: %p ref_cnt: %d %s:%s(%d)", ++ tdata, (int)ref_cnt, file, func, line)); + } + + static void tx_data_destroy(pjsip_tx_data *tdata) + { +- PJ_LOG(5,(tdata->obj_name, "Destroying txdata %s", ++ PJ_LOG(3,(tdata->obj_name, "Destroying txdata %s", + pjsip_tx_data_get_info(tdata))); + pjsip_tpselector_dec_ref(&tdata->tp_sel); + #if defined(PJ_DEBUG) && PJ_DEBUG!=0 +@@ -489,7 +492,7 @@ static void tx_data_destroy(pjsip_tx_data *tdata) + * Decrease transport data reference, destroy it when the reference count + * reaches zero. + */ +-PJ_DEF(pj_status_t) pjsip_tx_data_dec_ref( pjsip_tx_data *tdata ) ++PJ_DEF(pj_status_t) pjsip_tx_data_dec_ref_dbg(pjsip_tx_data *tdata, const char *file, int line, const char *func) + { + pj_atomic_value_t ref_cnt; + +@@ -498,9 +501,13 @@ PJ_DEF(pj_status_t) pjsip_tx_data_dec_ref( pjsip_tx_data *tdata ) + ref_cnt = pj_atomic_dec_and_get(tdata->ref_cnt); + pj_assert( ref_cnt >= 0); + if (ref_cnt == 0) { ++ PJ_LOG(3,(tdata->obj_name, "Destroying tdata: %p %s:%s(%d)", ++ tdata, file, func, line)); + tx_data_destroy(tdata); + return PJSIP_EBUFDESTROYED; + } else { ++ PJ_LOG(3,(tdata->obj_name, "Dec ref tdata: %p ref_cnt: %d %s:%s(%d)", ++ tdata, (int)ref_cnt, file, func, line)); + return PJ_SUCCESS; + } + } diff --git a/third-party/pjproject/patches/config_site.h b/third-party/pjproject/patches/config_site.h index 564959d..2c897e3 100644 --- a/third-party/pjproject/patches/config_site.h +++ b/third-party/pjproject/patches/config_site.h @@ -34,7 +34,7 @@ #define PJ_SCANNER_USE_BITWISE 0 #define PJ_OS_HAS_CHECK_STACK 0 -#define PJ_LOG_MAX_LEVEL 3 +#define PJ_LOG_MAX_LEVEL 5 #define PJ_ENABLE_EXTRA_CHECK 1 #define PJSIP_MAX_TSX_COUNT ((64*1024)-1) #define PJSIP_MAX_DIALOG_COUNT ((64*1024)-1)