Hi All,
I'm using app_python with a KEMI Python routing script. I have been getting
occasional Python exception error logs :
kamailio[2242]: 8(2253) ERROR: app_python [python_support.c:150]:
python_handle_exception(): python_exec2: Unhandled exception in the Python
code:
kamailio[2242]: TypeError: an integer is required
The scripts seems to function without an issue but these error logs appear
fairly frequently, always with an empty Python stack trace.
I am running Kamailio 5.1 on a Debian 9 system and using Python 2.7 :
>:/usr/local/etc/kamailio# python --version
Python 2.7.13
>:/usr/local/etc/kamailio# kamailio -v
version: kamailio 5.1.4 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, DISABLE_NAGLE,
USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC,
TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT,
USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST,
HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16,
MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled on 18:56:43 Jun 8 2018 with gcc 6.3.0
I have also tried using a Kamailio load built from the master branch
(commit f8b8cecb) which gives enhanced exception logging identifying the
function an exception occurs within and parameters. I see this occurring in
different parts of the routing script e.g.
from script
def ksr_onsend_route(self,msg):
KSR.xlog.xdbg("ONSEND_ROUTE fs=[$fs] $mb\n");
return 1;
an exception is reported within ksr_onsend_route() even when the log level
is info.
Changing log to xlog.xinfo, the log is seen to be sent to syslog but again
the exception is reported. These exceptions are always "TypeError: an
integer is required" but don't seem related to the Python script.
Here is an example of the log with a patch applied to to Kamailio 5.1 to
show the function the exception is reported within.
kamailio[14092]: 6(14103) ERROR: app_python [python_support.c:156]:
python_handle_exception(): apy_exec: ksr_reply_route((null)): Unhandled
exception in the Python code:
kamailio[14092]: TypeError: an integer is required
.
.
.
kamailio[14092]: 22(14119) INFO: <script>: ONSEND_ROUTE fs=[udp:
10.0.31.126:5080] ACK sip:10008@media.test.io:5061;transport=TLS SIP/2.0
.
.
.
.
kamailio[14092]: 22(14119) ERROR: app_python [python_support.c:156]:
python_handle_exception(): apy_exec: ksr_onsend_route((null)): Unhandled
exception in the Python code:
kamailio[14092]: TypeError: an integer is required
Has anyone got an idea what can be causing these exceptions and how to
avoid them? Currently I have simply patched the load to drop the level of
this log to debug when such an exception occurs with an empty traceback as
they seem spurious.
Cheers
Mike