[asterisk-bugs] [Asterisk 0016517]: Segfault while setting up T.38 fax reception

Asterisk Bug Tracker noreply at bugs.digium.com
Fri Jan 8 08:46:33 CST 2010


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=16517 
====================================================================== 
Reported By:                bklang
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   16517
Category:                   Channels/chan_sip/T.38
Reproducibility:            always
Severity:                   crash
Priority:                   normal
Status:                     feedback
Asterisk Version:           SVN 
JIRA:                        
Regression:                 No 
Reviewboard Link:            
SVN Branch (only for SVN checkouts, not tarball releases): 1.6.1 
SVN Revision (number only!): 236360 
Request Review:              
====================================================================== 
Date Submitted:             2009-12-26 16:00 CST
Last Modified:              2010-01-08 08:46 CST
====================================================================== 
Summary:                    Segfault while setting up T.38 fax reception
Description: 
I have been experimenting with T.38 fax reception via SIP.  This results in
an immediate crash.  While I am able to capture a coredump, for whatever
reason GDB and MDB do not appear to be able to give me a usable backtrace. 
However, Asterisk logs these message immediately before crashing:

[Dec 26 21:06:25]     -- Executing [fax at standard-fax:2]
ReceiveFAX("SIP/broadriver-00000000",
"/var/spool/fax/1261861580.0.fax,debug") in new stack
[Dec 26 21:06:25] NOTICE[23097]: channel.c:2933 __ast_read: Dropping
incompatible voice frame on SIP/broadriver-00000000 of format slin since
our native format has changed to 0x4 (ulaw)
grant*CLI> [Dec 26 21:06:25] WARNING[23097]: udptl.c:766
calculate_far_max_ifp: (no tag): Cannot calculate far_max_ifp before
far_max_datagram has been set.
[Dec 26 21:06:25] WARNING[23097]: udptl.c:766 calculate_far_max_ifp: (no
tag): Cannot calculate far_max_ifp before far_max_datagram has been set.

Next I tried forcing the max datagram in sip.conf like this:

[general]
t38pt_udptl=yes,maxdatagram=400

However, Asterisk still crashes with the same message.

Out of curiosity, I modified main/udptl.c at line 764 in the function
calculate_far_max_ifp() to force the far_max_datagram to 400:

udptl->far_max_datagram = 400;

Doing this prevents Asterisk from segfaulting.

I wish I could share a backtrace, but so far I can't produce anything
useful.  I am willing to post the entire core dump if that would be
helpful.

====================================================================== 

---------------------------------------------------------------------- 
 (0116297) bklang (reporter) - 2010-01-08 08:46
 https://issues.asterisk.org/view.php?id=16517#c116297 
---------------------------------------------------------------------- 
At the next opportunity I will get a sip trace and console output.  The gdb
backtrace is just thousands of lines of nulls (mdb won't even give a
backtrace), so I don't think it's useful at all.  I'll include a paste from
the next crash I generate just in case.

One other possible clue has shown up during debugging:  compiling with
DONT_OPTIMIZE seems to prevent the crash.  So now there are two workaround:
force the far_max_datagram or compile with DONT_OPTIMIZE. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-01-08 08:46 bklang         Note Added: 0116297                          
======================================================================




More information about the asterisk-bugs mailing list