Assertion when sending SUBSCRIBE failed synchronously #3985
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reported that assertion happens with this call stack trace:
After investigating the provided log file, the problem seems to be accessing buddy states after getting reset/null-ed. Check
subscribe_buddy()
code here:pjproject/pjsip/src/pjsua-lib/pjsua_pres.c
Lines 2142 to 2149 in 2d5e351
When the sending fails synchronously, the callbacks of transaction and event subscription may be invoked. From the callbacks, the event subscription terminates the subscription and PJSUA presence resets the buddy states. So when the send operation returns, the buddy states (e.g:
buddy->dlg
&buddy->sub
) may have been set toNULL
andpjsip_dlg_dec_lock(NULL)
will raise an assertion.