PickupChan not working

looks like something change with pickupchan

PickupChan("PJSIP/200-GIS-000dc8f8", "PJSIP/203-GIS,p")

but for some reason it does not get bridged

do not see a obvious error

i think it has to do with the last asterisk 20.20 /1

how would i debug this.

it is pulling only one side of the call .

the other side hangs

like i see it on the phone and it is bridged but caller a is still ringing

after 2 minutes sngrep show up transferring rtp and to the wrong endpoint.

edit: restarted asterisk and all is ok now but there is bug

There would need to be a usable backtrace taken at the time of the issue to see the state of Asterisk.

there are going to be more reports …

did not think to take a backtrace since it was not a total stop just a partial on one object …

what would i be looking for in the bt ?

i think going to roll back to 2.18.2 …

does this give a clue ?

2026-07-02 13:18:28] ERROR[49269] pjproject: ../src/pjsip/sip_util. .Assert failed: req_msg->line.req.method.id != PJSIP_ACK_METHOD
[2026-07-02 13:18:29] ERROR[49269] pjproject: ../src/pjsip/sip_util. .Assert failed: req_msg->line.req.method.id != PJSIP_ACK_METHOD
[2026-07-02 13:20:07] ERROR[49269] pjproject: ../src/pjsip/sip_util. .Assert failed: req_msg->line.req.method.id != PJSIP_ACK_METHOD
[2026-07-02 13:34:39] ERROR[49269] pjproject: ../src/pjsip/sip_util. .Assert failed: req_msg->line.req.method.id != PJSIP_ACK_METHOD
[2026-07-02 14:01:27] ERROR[49269] pjproject: ../src/pjsip/sip_util. .Assert failed: req_msg->line.req.method.id != PJSIP_ACK_METHOD
[2026-07-02 14:12:38] ERROR[49269] pjproject: ../src/pjsip/sip_util. .Assert failed: req_msg->line.req.method.id != PJSIP_ACK_METHOD

It’s certainly possible. The security fixes included nothing to do with PJSIP or bridging in any of the related area, so that would mean it could have been from 20.20.0 which has been out for a few weeks now.

Presumably a deadlock, but it’s just a guess. A core debug log leading up to it could also provide insight.

It’s certainly possible, but it’s an end result assertion - it doesn’t tell you how it got there. The assertion itself was also present in the prior versions of PJSIP.

I’m seeing an issue with PickupChan() where it works after an Asterisk restart, but after some time pickup stops working until Asterisk is restarted again.

From the log, PickupChan() does appear to find the target channel and enter the pickup path. The failure does not look like a channel lookup problem.

What I observe after the issue happens is:

  • Later PickupChan() attempts stop working.
  • The called extension can remain stuck in Ringing.
  • Restarting Asterisk clears the condition temporarily.

My suspicion is that something later in the pickup path is getting blocked, possibly around the channel move/masquerade or the related device/extension-state update.

One area I’m looking at is the new extension-state path.

the below is ai ,i do not trust but have a feeling it something in that area …

Device-state updates now use synchronous Stasis subscriptions, and extension_state_device_state_cb() appears to publish an extension-state message while still holding the extension-state object lock. If a subscriber/callback in that path needs related state/channel locks, it might explain the partially completed pickup and the extension state remaining stuck as Ringing.

You mentioned the latest releases. These don’t have the new extension state work, so are you not using the latest releases and instead the git branch?

correct i was wrong again chasing the wrong thing .

it just made sense till i tried to revert and there was nothing to revert …

then i think i am going back to remove the manager patch and see if it happens again

since nobody reported a issue with 20.20 like me

and iam testing the new manager patch maybe something there .
but do not see it .

side note why am i seeing this message did something change ?

[root@pbx5 asterisk-20.20.0]# asterisk -rx "devstate list"|grep RING
Unable to access the running directory (No such file or directory). Changing to '/' for compatibility.

I wouldn’t expect the manager patch to do anything, since it doesn’t lock anything involved in pickup really. A backtrace would really show what is going on.

Are you in a directory that you’ve deleted elsewhere?

I am really disappointed… i did not take that back trace!!

i removed the manager patch and a million plus call later and everything is working.

i did leave a small system with the manager patch on put it did not show up yet!

Something I have noticed is that performance changes are indirectly causing existing potential issues to occur more often, because things are faster resulting in threads executing faster.

Interesting that you mention that. I am noticing that a system running 22.10.0 has calls that my SIP proxy show as gone still up and alive. I also have rtp timeout set so if the calls went away Asterisks hould have hung up on them. I am doing some more troubleshooting to make sure this is not an ID10T error.

just complaining …

compiled and got core dump
but i reverted the patch so i could restart fast and the core is worthless

will need to wait for the next opportunity…