Asterisk crash on attended call transfer

I am currently running Asterisk version and having Cisco 7940 phones (running SIP) connected to it. This is all on a Dell server running Redhat Enterprise Server. If I choose to transfer a call, it fails and causes Asterisk to crash (immediately restarted by safe_asterisk). It does not crash doing a blind transfer; only when doing an attended transfer. I’ve tried versions 1.4.18, 1.4.19, 1.4.20, The result is the same on all versions.

Basically, the first call comes in, the “transfer” button is pressed, the other extension is dialed and the person picks up (audio and everything working fine at this point) and then when the “transfer” button is pressed one more time to complete the transfer, that is when it crashes.

I tried some things to see if it was issues with more than one call per phone, but conferencing and having two separate calls on a phone work just like they should. Has anyone experienced this, and/or does anyone have suggestions for fixing this rather major problem?


I guess I’ll answer my own question in case someone else runs into this problem.

I started looking at core files from each time Asterisk would crash and saw a pattern emerging. Each time when executing the transfer, for some reason, it would try to contact my “catch all” wildcard for non-existent extensions (which would go to our primary operator phone). In my extensions.conf I had something like:

exten => _.,1,Goto(xxxxxxx)

I first removed this line and the problem disappeared. I ended up changing the wildcard such that it should still catch anything, but does NOT use the “_.” wildcard.

I still don’t think that should cause Asterisk to crash. Maybe a developer will read this and figure out why that happens and fix the code base. It appears other people have had problems with Asterisk crashing while doing a transfer, although I’m not sure if this is the actual cause for everyone else, or just me.

Im supprised you haven seen the message in the log files about using _. and that you shouldnt use it. use _x. instead.