I want to pay your attention to issue-29, where it has been turned out that APR pools are actually not thread safe.
This is a major issue, which affects project usability and may cause client and server stacks to crash.
There could be several workarounds, but the only universal one is to make APR pools thread safe themselves.
The patch introduced in comment-18 fixed the issue and allowed the reporter to reach a milestone of 2 million sessions under stress tests he made.
Several patches over the latest release of Sofia-SIP and now yet another one for APR pools bring me to conclusion to provide and mandate the use of custom, patched packages of the libraries UniMRCP uses. So the question is what would be the most convenient way.
1. Provide one dependency pack, which contains all the required and already patched libraries. So the user will obtain UniMRCP source and an appropriate dependency pack for it.
2. Commit all the dependencies with patches into UniMRCP tree and ship them with UniMRCP.
3. Leave everything as is and just warn the users to apply the patches.
Also I'm thinking about the version of APR to use and recommend. Actually this patch with minor modifications can be applied over any version of APR including 1.2.x and 1.3.x.
I used APR-1.2.12 before, but recently have migrated to APR-1.3.3 and APR-Util-13.4. However the latest ones are APR-1.3.5 and APR-1.3.7.
Please feel free to share you thoughts over the issue and the topics above.
--
Arsen Chaloyan
The author of UniMRCP
http://www.unimrcp.org