Error loading module 'res_pjsip.so'

Asterisk 13.13.1 + pjproject 2.5.5 (external/shared):

[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'chan_pjsip.so': /usr/lib/asterisk/modules/chan_pjsip.so: undefined symbol: ast_sip_send_request
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'func_pjsip_endpoint.so': /usr/lib/asterisk/modules/func_pjsip_endpoint.so: undefined symbol: ast_sip_get_sorcery
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip.so': /usr/lib/asterisk/modules/res_pjsip.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_acl.so': /usr/lib/asterisk/modules/res_pjsip_acl.so: undefined symbol: ast_sip_unregister_service
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_authenticator_digest.so': /usr/lib/asterisk/modules/res_pjsip_authenticator_digest.so: undefined symbol: ast_sip_retrieve_auths
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_caller_id.so': /usr/lib/asterisk/modules/res_pjsip_caller_id.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_dialog_info_body_generator.so': /usr/lib/asterisk/modules/res_pjsip_dialog_info_body_generator.so: undefined symbol: ast_sip_pubsub_unregister_body_generator
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_diversion.so': /usr/lib/asterisk/modules/res_pjsip_diversion.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_dtmf_info.so': /usr/lib/asterisk/modules/res_pjsip_dtmf_info.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_endpoint_identifier_anonymous.so': /usr/lib/asterisk/modules/res_pjsip_endpoint_identifier_anonymous.so: undefined symbol: ast_sip_get_transport_states
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_endpoint_identifier_ip.so': /usr/lib/asterisk/modules/res_pjsip_endpoint_identifier_ip.so: undefined symbol: ast_sip_unregister_endpoint_formatter
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_endpoint_identifier_user.so': /usr/lib/asterisk/modules/res_pjsip_endpoint_identifier_user.so: undefined symbol: ast_sip_get_transport_states
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_exten_state.so': /usr/lib/asterisk/modules/res_pjsip_exten_state.so: undefined symbol: ast_sip_subscription_get_serializer
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_header_funcs.so': /usr/lib/asterisk/modules/res_pjsip_header_funcs.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_logger.so': /usr/lib/asterisk/modules/res_pjsip_logger.so: undefined symbol: ast_sip_unregister_service
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_messaging.so': /usr/lib/asterisk/modules/res_pjsip_messaging.so: undefined symbol: ast_sip_send_request
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_mwi.so': /usr/lib/asterisk/modules/res_pjsip_mwi.so: undefined symbol: ast_sip_send_request
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_mwi_body_generator.so': /usr/lib/asterisk/modules/res_pjsip_mwi_body_generator.so: undefined symbol: ast_sip_pubsub_unregister_body_generator
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_nat.so': /usr/lib/asterisk/modules/res_pjsip_nat.so: undefined symbol: ast_sip_unregister_service
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_notify.so': /usr/lib/asterisk/modules/res_pjsip_notify.so: undefined symbol: ast_sip_send_request
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_one_touch_record_info.so': /usr/lib/asterisk/modules/res_pjsip_one_touch_record_info.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_outbound_authenticator_digest.so': /usr/lib/asterisk/modules/res_pjsip_outbound_authenticator_digest.so: undefined symbol: ast_sip_retrieve_auths
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_outbound_publish.so': /usr/lib/asterisk/modules/res_pjsip_outbound_publish.so: undefined symbol: ast_sip_auth_vector_destroy
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_outbound_registration.so': /usr/lib/asterisk/modules/res_pjsip_outbound_registration.so: undefined symbol: ast_sip_auth_vector_destroy
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_path.so': /usr/lib/asterisk/modules/res_pjsip_path.so: undefined symbol: ast_sip_location_retrieve_aor
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_pidf_body_generator.so': /usr/lib/asterisk/modules/res_pjsip_pidf_body_generator.so: undefined symbol: ast_sip_pubsub_unregister_body_generator
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_pidf_digium_body_supplement.so': /usr/lib/asterisk/modules/res_pjsip_pidf_digium_body_supplement.so: undefined symbol: ast_sip_pubsub_register_body_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_pidf_eyebeam_body_supplement.so': /usr/lib/asterisk/modules/res_pjsip_pidf_eyebeam_body_supplement.so: undefined symbol: ast_sip_pubsub_register_body_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_publish_asterisk.so': /usr/lib/asterisk/modules/res_pjsip_publish_asterisk.so: undefined symbol: ast_sip_unregister_event_publisher_handler
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_pubsub.so': /usr/lib/asterisk/modules/res_pjsip_pubsub.so: undefined symbol: ast_sip_unregister_service
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_refer.so': /usr/lib/asterisk/modules/res_pjsip_refer.so: undefined symbol: ast_sip_unregister_service
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_registrar.so': /usr/lib/asterisk/modules/res_pjsip_registrar.so: undefined symbol: ast_sip_location_retrieve_aor_contacts_nolock
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_registrar_expire.so': /usr/lib/asterisk/modules/res_pjsip_registrar_expire.so: undefined symbol: ast_sip_location_delete_contact
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_rfc3326.so': /usr/lib/asterisk/modules/res_pjsip_rfc3326.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_sdp_rtp.so': /usr/lib/asterisk/modules/res_pjsip_sdp_rtp.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_send_to_voicemail.so': /usr/lib/asterisk/modules/res_pjsip_send_to_voicemail.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_session.so': /usr/lib/asterisk/modules/res_pjsip_session.so: undefined symbol: ast_sip_unregister_service
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_t38.so': /usr/lib/asterisk/modules/res_pjsip_t38.so: undefined symbol: ast_sip_session_unregister_supplement
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_transport_websocket.so': /usr/lib/asterisk/modules/res_pjsip_transport_websocket.so: undefined symbol: ast_sip_unregister_service
[Dec 22 23:30:20] WARNING[9081]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip_xpidf_body_generator.so': /usr/lib/asterisk/modules/res_pjsip_xpidf_body_generator.so: undefined symbol: ast_sip_pubsub_unregister_body_generator

what am I missing please? autoload is set to yes in modules.conf

Any ideas? Looks like some sort of circular dependency, I don’t think there’s a module missing.

The only pjproject module I’m able to load is res_pjproject.so.

For the “embedded” pjproject I noticed there’s a set of patches, do they also need to be applied on the “external” pjproject sources?

The patches are not required. They are backports from PJSIP for bug fixes that have not yet gotten released by them.

As for the load problem it should be res_pjproject.so, then res_pjsip.so, then res_pjsip_session.so, then everything else. The module loader should resolve these automatically.

What distribution are you using?

*CLI> module load res_pjproject.so
  == Parsing '/etc/asterisk/pjproject.conf': Found
00:10:55.875 os_core_unix.c !pjlib 2.5.5 for POSIX initialized
 Loaded res_pjproject.so => (PJPROJECT Log and Utility Support)
Loaded res_pjproject.so
*CLI> module load res_pjsip.so
[Jan  3 00:11:06] WARNING[2354]: loader.c:556 load_dynamic_module: Error loading module 'res_pjsip.so': /usr/lib/asterisk/modules/res_pjsip.so: undefined symbol: ast_sip_session_unregister_supplement
[Jan  3 00:11:06] WARNING[2354]: loader.c:1090 load_resource: Module 'res_pjsip.so' could not be loaded.
Unable to load module res_pjsip.so
Command 'module load res_pjsip.so ' failed.

To me it looks like res_pjsip.so depends on res_pjsip_session.so and vice versa?

It’s crosscompiled for OpenWRT - standard x86 with glibc though, nothing exotic. Everything else is working absolutely fine including codec_opus or 3rd party modules like chan_dongle.

That would be this issue[1] then.

[1] https://issues.asterisk.org/jira/browse/ASTERISK-26518

Great thanks, that was really helpful! Looks much better after applying the patch.

  Loading chan_pjsip.so.
  == Registered RTP glue 'PJSIP'
  == Registered channel type 'PJSIP' (PJSIP Channel Driver)
  == Registered custom function 'PJSIP_DIAL_CONTACTS'
  == Registered custom function 'PJSIP_MEDIA_OFFER'
  == Registered custom function 'PJSIP_SEND_SESSION_REFRESH'
  == chan_pjsip.so => (PJSIP Channel Driver)

OK now I’m having another issue:

*CLI> pjsip qualify 1234
Sending qualify to endpoint 1234
 contact sip:1234@192.168.88.22:5061
[Jan  4 14:48:04] ERROR[11251]: res_pjsip.c:3591 endpt_send_request: Error 171060 'Unsupported transport (PJSIP_EUNSUPTRANSPORT)' sending OPTIONS request to endpoint 1234
    -- Contact 1234/sip:1234@192.168.88.22:5061 is now Unreachable.  RTT: 0.000 msec
  == Endpoint 1234 is now Unreachable
[Jan  4 14:48:04] ERROR[11251]: astobj2.c:131 INTERNAL_OBJ: FRACK!, Failed assertion bad magic number 0x1 for object 0x8c8b180 (0)
[Jan  4 14:48:04] WARNING[11251]: logger.c:1996 ast_log_backtrace: Must run configure with '--with-execinfo' for stack backtraces.
*CLI>
Disconnected from Asterisk server
Asterisk cleanly ending (0).
Executing last minute cleanups

Used config_site.h taken from https://wiki.asterisk.org/wiki/display/AST/Building+and+Installing+pjproject and built pjproject with --enable-shared.

I think I’m giving up and reverting back to chan_sip. This is far from being stable :confused:

What precisely is your configuration in pjsip.conf?

Just the absolute minimum:

[system]
type = system

[global]
type = global

[transport-udp]
type = transport
protocol = udp
bind = ::

[transport-tcp]
type = transport
protocol = tcp
bind = ::

[transport-tls]
type = transport
protocol = tls
bind = ::
cert_file = /var/ssl/asterisk.crt
priv_key_file = /var/ssl/asterisk.key
method = tlsv1

[transport-wss]
type = transport
protocol = wss
bind = 127.0.0.1

[1234]
type = endpoint
context = internal
disallow = all
allow = alaw
aors = 1234
auth = 1234

[1234]
type = aor
max_contacts = 1

[1234]
type = auth
auth_type=userpass
password = 1234
username = 1234

Somehow it’s not segfaulting anymore now (didn’t change anything as far as I know)

*CLI> pjsip qualify 1234
Sending qualify to endpoint 1234
 contact sip:1234@192.168.88.22:5061
[Jan  4 16:42:46] ERROR[17135]: res_pjsip.c:3591 endpt_send_request: Error 171060 'Unsupported transport (PJSIP_EUNSUPTRANSPORT)' sending OPTIONS request to endpoint 1234
[Jan  4 16:42:46] ERROR[17135]: astobj2.c:131 INTERNAL_OBJ: FRACK!, Failed assertion bad magic number 0x0 for object 0x8953920 (0)
[Jan  4 16:42:46] WARNING[17135]: logger.c:1996 ast_log_backtrace: Must run configure with '--with-execinfo' for stack backtraces.
[Jan  4 16:42:46] ERROR[17135]: astobj2.c:131 INTERNAL_OBJ: FRACK!, Failed assertion bad magic number 0x0 for object 0x8953920 (0)
[Jan  4 16:42:46] WARNING[17135]: logger.c:1996 ast_log_backtrace: Must run configure with '--with-execinfo' for stack backtraces.
[Jan  4 16:42:46] ERROR[17135]: astobj2.c:131 INTERNAL_OBJ: FRACK!, Failed assertion bad magic number 0x0 for object 0x8953920 (0)
[Jan  4 16:42:46] WARNING[17135]: logger.c:1996 ast_log_backtrace: Must run configure with '--with-execinfo' for stack backtraces.
*CLI>

after adding

transport = transport-udp

into the endpoint definition it seems to be working now

*CLI> pjsip qualify 1234
Sending qualify to endpoint 1234
 contact sip:1234@192.168.88.22:5061
*CLI>

If this is expected then the info here is wrong https://wiki.asterisk.org/wiki/display/AST/PJSIP+Configuration+Sections+and+Relationships (for the endpoint section “transport=” option, if no value is assigned then Asterisk will DEFAULT to the first configured transport in pjsip.conf which is valid for the URI we are trying to contact).

You can’t bind a single transport to both IPv6 and IPv4 like that. You need to create two transports, one for IPv4 and one for IPv6. As it is it is creating an IPv6 one and thus there is no transport to send an IPv4 request out on. It certainly shouldn’t crash as a result of that for the qualify like that so file an issue[1].

[1] https://issues.asterisk.org/jira

Ah ok, now I see, that’s what 0003-r5403-pjsip_IPV6_V6ONLY.patch is for.

https://issues.asterisk.org/jira/browse/ASTERISK-26309 - so in short IPv6 is not production ready in 2.5.5 :confused:

You have to create separate transports regardless, that’s not going to change. PJSIP fundamentally works that way. On the Asterisk side work has been done to properly support dual stack. The latest releases support this.

To clarify in regards to the patch: it made it so that you could create a transport and bind it to “::” to listen on IPv6, without knowing the IPv6 address of the system. Using this you can create two transports - one bound to “::” and one bound to “0.0.0.0”

Yep understood - 2 separate transports is not a problem, not being able to use [::] is a major pain though.

Thanks for your help.