On Apr 08, 2009 at 12:50, Henning Westerholt henning.westerholt@1und1.de wrote:
Hi,
i've tried to run some of my tests written for kamailio on kamailio-3.0 in order to check if the modules can be load. With test/2.cfg i've run into this error:
BUG: <core> [pt.c:283]: ERROR: fork_process(): Process limit of 36 exceeded. Will simulate fork fail.
Is this something critical? Why is there a limit on the process number and how can i extend this?
It's not limited, but every new process must first be registered. In the case of a module, if you want to start 2 processes (for example) you have to call from mod_init: register_procs(2).
This is used to properly size-up the process table. If you don't call it when the number of registered processes is exceeded, fork will fail.
(modules init and starting processes is documented in doc/modules_init.txt).
Another important thing: if one opens file descriptors globally (e.g. from mod_init or child_init(*)), their maximum number should be registered from mod_init with register_fds(no)). Not doing this might result in strange problems at runtime, since there are parts of code that need to know the maximum fd number (e.g. tcp in most cases, the ctl module a.s.o.). There are some very conservative defaults, but it's much safer not to rely on them an register instead the maximum number of fds you'll use.
Andrei