[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