[Home]

Summary:ASTERISK-27287: Cyclic reference between res_pjsip and res_pjsip_session
Reporter:Alexander Traud (traud)Labels:
Date Opened:2017-09-22 06:30:22Date Closed:2017-09-22 06:37:04
Priority:MajorRegression?
Status:Closed/CompleteComponents:Resources/res_pjsip
Versions:13.17.2 14.6.2 GIT 15.0.0-rc1 Frequency of
Occurrence
Related
Issues:
is caused byASTERISK-26309 [patch] res_pjsip: Allow IPv4/IPv6 (Dual Stack) installations.
duplicatesASTERISK-26518 Error loading module 'res_pjsip.so': undefined symbol: ast_sip_session_register_supplement
Environment:Attachments:
Description:Since Asterisk 13.13, the module res_pjsip requires the module res_pjsip_session because it inits a {{pjsip_message_filter}} (formerly {{pjsip_message_ip_updater}}).

The call stack is as follows:
* res_pjsip → load_module → ast_res_pjsip_init_message_filter → ast_sip_session_register_supplement
* unload_pjsip → ast_res_pjsip_cleanup_message_filter →  ast_sip_session_unregister_supplement

This issue has two symptoms:
* In the build configuration (menuselect), when {{res_pjsip_session}} is disabled but {{res_pjsip}} stays enabled, Asterisk crashes with {{/usr/lib/asterisk/modules/res_pjsip.so: undefined symbol: ast_sip_session_register_supplement}}.
* In the Command-Line Interface (CLI), {{core stop gracefully}} and {{core stop when convenient}} give the error {{Some modules could not be unloaded, switching to fast shutdown}}.

Consequently, that {{pjsip_message_filter}} introduces a cyclic reference and the module {{res_pjsip_session}} can never be unloaded, because the reference count never drops to zero. Furthermore, menuselect shows an incorrect build dependency between those modules.

I have no idea how to fix this, because I am not into the architecture of res_pjsip enough to understand why {{ast_sip_session_(un)register_supplement}} is required at all. Therefore, I am just reporting this issue and cannot contribute any patch or suggestion.
Comments: