Summary: | ASTERISK-27287: Cyclic reference between res_pjsip and res_pjsip_session | ||||||
Reporter: | Alexander Traud (traud) | Labels: | |||||
Date Opened: | 2017-09-22 06:30:22 | Date Closed: | 2017-09-22 06:37:04 | ||||
Priority: | Major | Regression? | |||||
Status: | Closed/Complete | Components: | Resources/res_pjsip | ||||
Versions: | 13.17.2 14.6.2 GIT 15.0.0-rc1 | Frequency of Occurrence | |||||
Related Issues: |
| ||||||
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: |