### Description
### Troubleshooting By executing an external script using exec_cmd function I'm getting the following error: ``failed. exit_status=13, errno=11: Resource temporarily unavailable``
This is happening intermittently, sometimes it's working fine, but sometimes I see this error in the log file. After looking in the debug log file I found that for some reason the exit code for the executed command is not 0 (ki_exec_cmd(): execution return code: 1), that's why this function is complaining (I guess).
What is weird that this is not happening permanently, it's about 2 cases from 5, and by running the same command manually - every time I'm getting success, all the time exit code is 0. (I'm running the same command with the same user like kamailio is running)
Replacing exec_cmd with exec_avp - I didn't notice this issue.
#### Debugging Data
``` 2376cc5b10f549@192.168.0.1:5060} exec [exec_mod.c:278]: ki_exec_cmd(): executing [nice -20 /usr/local/bin/cmd arg1 arg2 2376cc5b10f549@192.168.0.1:5060} dialog [dlg_hash.c:1069]: dlg_unref_helper(): unref dlg 0x7fd643b32398 with 1 -> 4 376cc5b10f549@192.168.0.1:5060} <script>: [From=sip:+123456789@company.net, To Domain=company.net, R-URI=sip:+987654321@192.168.0.1:5060] 2376cc5b10f549@192.168.0.1:5060} <core> [main.c:905]: sig_usr(): SIGCHLD received: we do not worry about grand-children 2376cc5b10f549@192.168.0.1:5060} exec [exec_mod.c:282]: ki_exec_cmd(): execution return code: 1 2376cc5b10f549@192.168.0.1:5060} <core> [core/action.c:1598]: run_actions(): alert - action [corefunc (16)] cfg [/etc/kamailio-dev/conf.d/routes.cfg:1567] took too long [780373 us] 2376cc5b10f549@192.168.0.1:5060} dialog [dlg_hash.c:877]: internal_get_dlg(): ref dlg 0x7fd643b32398 with 1 -> 5 ```
### Possible Solutions
Use exec_avp instead
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
``` version: kamailio 5.4.1 (x86_64/linux) a6cb74 ```
* **Operating System**:
``` CentOS 7 x64 Linux k3-core1.nuacom.eqx 3.10.0-1127.8.2.el7.x86_64 #1 SMP Tue May 12 16:57:42 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ```
The log message suggests the command execution was interrupted, generating SIGPIPE (13). That can happen because it took too long. There is no reason that exec_avp() can do it faster than exec_cmd(), actually the first one does longer processing, but can get another error handling path because it expects to read the output of the command to store in avps, so the error can be different.
If you do not need to wait for the command to complete, run it in background by adding `&` at the end of the command. Also redirect the output to /dev/null just in case the command prints messages in various cases.
Overall, the code of the function is really minimal, practically popen() and pclose(), plus handing the exit status. Apart of not printing the error log, is not much that can be adjusted there. if you want to discuss further, let's do it on the sr-users mailing list.
Closed #2538.