Conversation
| struct transport_loop *loop = (struct transport_loop*) arg; | ||
|
|
||
| PJ_LOG(4, (loop->base.name, "Loop transport destroyed")); | ||
| pj_pool_release(loop->pool); |
There was a problem hiding this comment.
No need to erase this, it will cause leak.
There was a problem hiding this comment.
But then it the pool is released twice: the second time in
Line 404 in ca52557
which leads to a crash.
There was a problem hiding this comment.
the issue is that, the pool is released when the tp is still in use. If the tp is not used any longer, then it will be safe to release the pool. Tested here without removing the pool release, and there's no crash
There was a problem hiding this comment.
I missed that there are two pools...
I have to continue debugging...
Anyway... due to 6dc9b8c I get a crash for a code that worked at least since 2.11.
There was a problem hiding this comment.
You are right - it is working for me too.
Transport "loop" need set the `base.grp_lock`, as also shown in `transport_adapter_sample.c` to have destroying of the loop transport working. Issue pjsip#3771
6933099 to
15fdec8
Compare
|
IIRC the group lock of transport loop is not exported to |
|
@nanangizz: In the grp_lock is created, but the pointergrp_lock is nowhere stored in this function.
tries to accesstp->grp_lock - which was never set.E.g. the pool address is stored by tp->pool = pool; at
.
|
nanangizz
left a comment
There was a problem hiding this comment.
@wosrediinanatour You're absolutely right! Thanks for pointing it out.
Transport "loop" need set the `base.grp_lock`, as also shown in `transport_adapter_sample.c` to have destroying of the loop transport working. Issue #3771
Transport "loop" need set the `base.grp_lock`, as also shown in `transport_adapter_sample.c` to have destroying of the loop transport working. Issue pjsip#3771
Transport "loop" need set the
base.grp_lock, as also shown intransport_adapter_sample.cto have destroying of the loop transport working.Issue #3771