[Home]

Summary:ASTERISK-06914: SIP<->IAX2 call using H.263 crashes Asterisk unless built with 'make dont-optimize'
Reporter:Aloha Tone (alohatone)Labels:
Date Opened:2006-05-07 17:17:11Date Closed:2006-05-19 20:03:15
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Core/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:I have a h263 sip device registered to server "A". Server "A" connected to Server "B" Over an IAX2 Link which is connected to the PSTN (PRI) via a TE110P.

When the Call is containted with Server "A" (sip-->sip) calls work FINE and video is great. If route a call to Server "B" for PSTN Dialing (via and IAX2) Server "B" dials correctly, as soon as the call gets answered, asterisk CRASHES HARD.

If I use a Plycom IP601 to dial over this IAX link it WORKS FINE 100% perfect. and IF I remove the H263 from allowed Codecs. The H263 device will work fine also (its a cip-5500) because it also supports ULAW.

A TE110P was ADDED to server "A" to test (removing the IAX from the picture) and the calls via the h263 phone go right over the psnt (obviously voice only)

Server "A" is running asterisk-1.2.7.1 (with libpri-1.2.2 and zaptel-1.2.5)
Here is my sip.conf for server "A"
(and yes I REALIZED I HAVE NO PASSWORD ON MY SIP ACCOUNT this is all internal for testing)

[general]
videosupport=yes
bindport=5060                   ; UDP Port to bind to (SIP standard port is
bindaddr=0.0.0.0                ; IP address to bind to (0.0.0.0 binds to all)
disallow=all
allow=ulaw
allow=h263
allow=h263p

[1234]
username=1234
type=friend
qualify=yes
port=5060
nat=yes
host=dynamic
dtmfmode=rfc2833
context=from-internal
canreinvite=no
callerid=Video Phone 1 <1234>

HERE IS MY IAX.CONF for SERVER "A" (this is only for OUTGOING CALLS)

[general]
videosupport=yes
bindport = 4569           ; Port to bind to (IAX is 4569)
bindaddr = 0.0.0.0    ; Address to bind to (all addresses on machine)
disallow=all
allow=ulaw
allow=h263
allow=h263p
mailboxdetail=yes

[vcout]
username=tnout
type=peer
secret=XXXXXX
qualify=yes
host=XXX.XXX.XXX.XXX

Here is my IAX.CONF from SERVER "B" (the server that SHOULD dial the PSTN)
[tnout]
username=tnout
secret=XXXXXX
type=user
host=XXX.XXX.XXX.XXX
qualify=yes

here is the IAX DEBUG FROM SERVER "B"  (IP's REMOVED AND REPLACED WITH XXX)
Connected to Asterisk 1.2.7.1 currently running on vc (pid = 6078)
Verbosity is at least 20
vc*CLI> iax2 debug
IAX2 Debugging Enabled
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: NEW    
  Timestamp: 00012ms  SCall: 00002  DCall: 00000 [XXX.XXX.XXX.XXX:4569]
  VERSION         : 2
  CALLED NUMBER   : 6993320
  CODEC_PREFS     : (ulaw|h263)
  CALLING NUMBER  : 1234
  CALLING PRESNTN : 0
  CALLING TYPEOFN : 0
  CALLING TRANSIT : 0
  CALLING NAME    : Video Phone 1
  LANGUAGE        : en
  USERNAME        : tnout
  FORMAT          : 4
  CAPABILITY      : 587780
  ADSICPE         : 2
  DATE TIME       : 2006-05-07  12:11:06
vc*CLI>
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: AUTHREQ
  Timestamp: 00014ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
  AUTHMETHODS     : 3
  CHALLENGE       : 948988689
  USERNAME        : tnout

Rx-Frame Retry[ No] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: AUTHREP
  Timestamp: 00020ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
  MD5 RESULT      : ab504a6c0b5438b539adb0923dbcf793

   -- Accepting AUTHENTICATED call from XXX.XXX.XXX.XXX:
      > requested format = ulaw,
      > requested prefs = (unknown|unknown|unknown),
      > actual format = ulaw,
      > host prefs = (ulaw|h263),
      > priority = mine
Tx-Frame Retry[000] -- OSeqno: 001 ISeqno: 002 Type: IAX     Subclass: ACCEPT
  Timestamp: 00015ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
  FORMAT          : 4

   -- Executing Dial("IAX2/XXX.XXX.XXX.XXX:4569-1", "ZAP/g1/6993320") in new stack
   -- Requested transfer capability: 0x00 - SPEECH
   -- Called g1/6993320
Rx-Frame Retry[ No] -- OSeqno: 002 ISeqno: 002 Type: IAX     Subclass: ACK    
  Timestamp: 00015ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Tx-Frame Retry[000] -- OSeqno: 002 ISeqno: 002 Type: VOICE   Subclass: 4
  Timestamp: 00040ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
   -- Zap/1-1 is proceeding passing it to IAX2/XXX.XXX.XXX.XXX:4569-1
Tx-Frame Retry[000] -- OSeqno: 003 ISeqno: 002 Type: CONTROL Subclass: (15?)
  Timestamp: 00043ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 002 ISeqno: 003 Type: IAX     Subclass: ACK    
  Timestamp: 00040ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 002 ISeqno: 004 Type: IAX     Subclass: ACK    
  Timestamp: 00043ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 002 ISeqno: 004 Type: VOICE   Subclass: 4
  Timestamp: 00295ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Tx-Frame Retry[-01] -- OSeqno: 004 ISeqno: 003 Type: IAX     Subclass: ACK    
  Timestamp: 00295ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
   -- Zap/1-1 is ringing
Tx-Frame Retry[000] -- OSeqno: 004 ISeqno: 003 Type: CONTROL Subclass: RINGING
  Timestamp: 01403ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 003 ISeqno: 005 Type: IAX     Subclass: ACK    
  Timestamp: 01403ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
   -- Zap/1-1 answered IAX2/XXX.XXX.XXX.XXX:4569-1
Tx-Frame Retry[000] -- OSeqno: 005 ISeqno: 003 Type: CONTROL Subclass: (255?)
  Timestamp: 08903ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
Tx-Frame Retry[000] -- OSeqno: 006 ISeqno: 003 Type: CONTROL Subclass: ANSWER
  Timestamp: 08906ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 003 ISeqno: 006 Type: IAX     Subclass: ACK    
  Timestamp: 08903ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 003 ISeqno: 007 Type: IAX     Subclass: ACK    
  Timestamp: 08906ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 003 ISeqno: 007 Type: IAX     Subclass: LAGRQ  
  Timestamp: 10012ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Tx-Frame Retry[000] -- OSeqno: 007 ISeqno: 004 Type: IAX     Subclass: LAGRP  
  Timestamp: 10012ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 004 ISeqno: 008 Type: IAX     Subclass: ACK    
  Timestamp: 10012ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Tx-Frame Retry[000] -- OSeqno: 008 ISeqno: 004 Type: IAX     Subclass: LAGRQ  
  Timestamp: 10023ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 004 ISeqno: 009 Type: IAX     Subclass: LAGRP  
  Timestamp: 10023ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Tx-Frame Retry[-01] -- OSeqno: 009 ISeqno: 005 Type: IAX     Subclass: ACK    
  Timestamp: 10023ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
Rx-Frame Retry[ No] -- OSeqno: 005 ISeqno: 009 Type: VIDEO   Subclass: 147
  Timestamp: 10218ms  SCall: 00002  DCall: 00001 [XXX.XXX.XXX.XXX:4569]
Tx-Frame Retry[-01] -- OSeqno: 009 ISeqno: 006 Type: IAX     Subclass: ACK    
  Timestamp: 10218ms  SCall: 00001  DCall: 00002 [XXX.XXX.XXX.XXX:4569]
vc*CLI>
Disconnected from Asterisk server
Executing last minute cleanups

I hope this enough information to help debug. Anymore that is needed please advice



Comments:By: Serge Vecher (serge-v) 2006-05-07 17:55:32

aloha:

as per bug guideliness, please provide a backtrace from a core file on server b. Please note, that asterisk needs to be built with 'make dont-optimize' in order for this bt to be useful.

thanks

By: Aloha Tone (alohatone) 2006-05-08 18:22:53

update to this bug:

As requested per "vechers"
I did a make clean and then a make dont-optimize on Server "B" to get a bt for the crash.
However.... when i build with make dont-optimize  asterisk DOES NOT CRASH (sorry about the caps just want to be clear)
I was able to maintain a call with the h263 phone FINE (for 10 mins)
SO I wanted to recreate the problem.
On server "B" I did a make clean and make (normal make) for asterisk and reinstalled
BOOM h263 device crashes asterisk! 100% of the time. I recreated this event 10 times in a row to be certain.

So I then did a make clean and make dont-optimize AGAIN and reinstalled the new binary and now asterisk will pass the channels just fine (no trouble at all)

So the result is I cannot create the crash condition when i do a make dont-optimize.

I hope this helps. Please let me know any other information I can give to you

All servers are running on Fedora Core 4
and as stated before running:
asterisk-1.2.7.1
zaptel-1.2.5
libpri-1.2.2

Thanks again!

By: Serge Vecher (serge-v) 2006-05-08 18:35:31

1. downgrading to major, since 'make dont-optimize' workaround is available.
2. there is another bug (7029) in the system with a similar scenario.
3. if you have access to IRC and can provide shell access to a developer, please log onto the #asterisk-dev and ask for help.
4. if possible to test with another distibution, please do that also.

Thanks.



By: Aloha Tone (alohatone) 2006-05-08 18:55:50

vecher,
Thanks for the quick attention. Excuse my ignorance... what does

"1. downgrading to major, since 'make dont-optimize'"

mean?

By: Serge Vecher (serge-v) 2006-05-08 19:02:40

oops, sorry about that -- I didn't even finish the sentence. I've changed the severity of bug from a 'crash' to 'major', since you have confirmed that a workaround for a crash is to build asterisk with 'make dont-optimize'

By: Kevin P. Fleming (kpfleming) 2006-05-19 20:03:15

Fixed in branch-1.2 revision 28896 and trunk revision 28903.