### Description
I am using Kemi with the app_python3 module. I was getting what appeared to be random TypeError exceptions thrown within the Kamailio app_python3 module. I later discovered that this only happened when calling a Kamailio function that exceeded the duration specified in the latency_limit_action core parameter. Also, the line printed in the logs displayed Null values in the 'file:' and 'func:' fields.
#### Reproduction
To reproduce the issue:
1. You must be using Kemi with the app_python3 module, with the cfgengine set to python.
2. Set the following in your kamailio.cfg file:
```
latency_log=2
latency_limit_action=100000
```
3. Run a Kemi function call that takes more time than the latency_limi_action set above. You may have to lower it if your computer is a fast runner. Here is my suggested code:
```
jsreload = dict()
jsreload["jsonrpc"] = "2.0"
jsreload["method"] = "tls.reload"
jsreload["id"] = 1
KSR.jsonrpcs.exec(json.dumps(jsreload))
```
4. Use python version 3.11
#### Log Messages
45(324) INFO: app_python3 [apy_kemi.c:377]: sr_apy_kemi_exec_func(): alert - action KSR.jsonrpcs.exec(...) took too long [752946 ms] (file:(null) func:(null) line:491)
45(324) ERROR: app_python3 [python_support.c:167]: python_handle_exception(): apy_exec: ksr_rtimer_dodebug(rtimer): Unhandled exception in the Python code:
TypeError: expected bytes, str found
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/etc/kamailio/kamailio.py", line 491, in ksr_rtimer_dodebug
KSR.jsonrpcs.exec(json.dumps(jsreload))
SystemError: <built-in function exec> returned a result with an exception set
### Possible Solutions
The solution is to replace PyBytes_AsString(..) calls with calls to PyUnicode_AsUTF8(..) in the PY_VERSION_HEX >= 0x030B0000 block of apy_kemi.c. The PyBytes_AsString expects a Bytes value but reeives a Unicode value instead, thus causing the TypeError exception. Enclosed is a patch file with the fix implemented:
[kamailio-5.8.2.patch.txt](https://github.com/user-attachments/files/1619573…
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
# kamailio -v
version: kamailio 5.8.2 (x86_64/linux) 3fa5f4
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, 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_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_SEND_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: 3fa5f4
compiled on 09:58:55 Jul 12 2024 with gcc 12.2.0
```
* **Operating System**:
<!--
Details about the operating system, the type: Linux (e.g.,: Debian 8.4, Ubuntu 16.04, CentOS 7.1, ...), MacOS, xBSD, Solaris, ...;
Kernel details (output of `lsb_release -a` and `uname -a`)
-->
```
# uname -a
Linux xxxxxxxxxxxxxxxxxxx 5.10.0-30-amd64 #1 SMP Debian 5.10.218-1 (2024-06-01) x86_64 GNU/Linux
```
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3915
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3915(a)github.com>
- [X] Commit message has the format required by CONTRIBUTING guide
- [X] Commits are split per component (core, individual modules, libs, utils, ...)
- [X] Each component has a single commit (if not, squash them into one commit)
- [X] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [X] Small bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
<!-- Go over all points below, and after creating the PR, tick the checkboxes that apply -->
- [X] PR should be backported to stable branches
- [X] Tested changes locally
- [X] Related to issue # 3915
#### Description
<!-- Describe your changes in detail -->
Replace PyBytes_AsString(..) calls with calls to PyUnicode_AsUTF8(..) in the PY_VERSION_HEX >= 0x030B0000 block of apy_kemi.c. The PyBytes_AsString expects a Bytes value but receives a Unicode value instead, thus causing the TypeError exception.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3959
-- Commit Summary --
* app_python3: Fixes Kemi TypeError thrown when latency_limit_action is exceeded.
-- File Changes --
M src/modules/app_python3/apy_kemi.c (4)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3959.patchhttps://github.com/kamailio/kamailio/pull/3959.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3959
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3959(a)github.com>
<!--
Kamailio Project uses GitHub Issues only for bugs in the code or feature requests. Please use this template only for bug reports.
If you have questions about using Kamailio or related to its configuration file, ask on sr-users mailing list:
* https://lists.kamailio.org/mailman3/postorius/lists/sr-users.lists.kamailio…
If you have questions about developing extensions to Kamailio or its existing C code, ask on sr-dev mailing list:
* https://lists.kamailio.org/mailman3/postorius/lists/sr-dev.lists.kamailio.o…
Please try to fill this template as much as possible for any issue. It helps the developers to troubleshoot the issue.
Note that an issue report may be closed automatically after about 2 months
if there is no interest from developers or community users on pursuing it, being
considered expired. In such case, it can be reopened by writing a comment that includes
the token `/notexpired`. About two weeks before considered expired, the issue is
marked with the label `stale`, trying to notify the submitter and everyone else
that might be interested in it. To remove the label `stale`, write a comment that
includes the token `/notstale`. Also, any comment postpone the `expire` timeline,
being considered that there is interest in pursuing the issue.
If there is no content to be filled in a section, the entire section can be removed.
You can delete the comments from the template sections when filling.
You can delete next line and everything above before submitting (it is a comment).
-->
### Start up failed with error " waiting for child one too long"
execute start up command, and suddenly failed.
`
sudo /usr/local/sbin/kamailio -m 128 -M 8 -E -e -dd -f /usr/local/etc/kamailio/kamailio.cfg
`
### Troubleshooting
#### Reproduction
Maybe the problem of my env.
#### Debugging Data
#### Log Messages
the log:
0(2749) INFO: <core> [core/sctp_core.c:74]: sctp_core_check_support(): SCTP API not enabled - if you want to use it, load sctp module
Listening on
udp: 192.168.5.167:5061
Aliases:
udp: 192.168.5.167:5061
0(2749) INFO: <core> [core/tcp_main.c:5218]: init_tcp(): using epoll_lt as the io watch method (auto detected)
0(2751) INFO: rr [../outbound/api.h:53]: ob_load_api(): unable to import bind_ob - maybe module is not loaded
0(2751) INFO: rr [rr_mod.c:185]: mod_init(): outbound module not available
0(2751) WARNING: db_mysql [km_my_con.c:187]: db_mysql_new_connection(): opt_ssl_ca option not supported by mysql version (value (null)) - ignoring
0(2751) INFO: auth [auth_mod.c:342]: mod_init(): qop set, but nonce-count (nonce_count) support disabled
0(2751) WARNING: db_mysql [km_my_con.c:187]: db_mysql_new_connection(): opt_ssl_ca option not supported by mysql version (value (null)) - ignoring
0(2751) WARNING: tls [tls_mod.c:364]: mod_init(): tls support is disabled (set enable_tls=1 in the config to enable it)
0(2751) INFO: <core> [main.c:3233]: main(): processes (at least): 24 - shm size: 134217728 - pkg size: 8388608
0(2751) INFO: <core> [core/udp_server.c:163]: probe_max_receive_buffer(): SO_RCVBUF is initially 16777216 for fd 9
0(2751) INFO: <core> [core/udp_server.c:233]: probe_max_receive_buffer(): SO_RCVBUF is finally 16777216 on fd 9
0(2751) INFO: <core> [core/udp_server.c:264]: probe_max_send_buffer(): SO_SNDBUF is initially 16777216 for fd 9
0(2751) INFO: <core> [core/udp_server.c:334]: probe_max_send_buffer(): SO_SNDBUF is finally 16777216 on fd 9
1(2754) WARNING: db_mysql [km_my_con.c:187]: db_mysql_new_connection(): opt_ssl_ca option not supported by mysql version (value (null)) - ignoring
1(2754) NOTICE: ndb_redis [redis_client.c:257]: redisc_init(): Connecting to 10.20.80.33:6380
0(2751) ERROR: <core> [main.c:1825]: main_loop(): waiting for child one too long - wait time: 1000000
1(2754) INFO: <core> [main.c:888]: sig_usr(): signal 15 received
0(2751) INFO: snmpstats [snmpstats.c:399]: mod_destroy(): The SNMPStats module got the kill signal
0(2751) INFO: snmpstats [snmpstats.c:403]: mod_destroy(): Shutting down the AgentX Sub-Agent!
0(2751) INFO: <core> [core/sctp_core.c:53]: sctp_core_destroy(): SCTP API not initialized`
what does that mean? ` 0(2751) ERROR: <core> [main.c:1825]: main_loop(): waiting for child one too long - wait time: 1000000`
How can I solve that?
#### SIP Traffic
### Possible Solutions
### Additional Information
* **Operating System**:
`
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.9.2009 (Core)
Release: 7.9.2009
Codename: Core
`
Kamailio-5.8.2
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3960
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3960(a)github.com>