[Mimedefang] Freezing/hanging MIMEDefang 2.56

David F. Skoll dfs at roaringpenguin.com
Wed Sep 6 11:14:58 EDT 2006


Bernd Petrovitsch wrote:
> Does anyone else experience a freezing mimedefang-multiplexor parent
> process with up to 200 child processes?

Not I.  (I develop on Sarge, and we have some Sarge-based CanIt appliances
running MIMEDefang/CanIt that experience pretty heavy load.)

> This happens on Linux Debian/Sarge if we try to stress-test the
> installation. Is there a known maximum number of child processes so that
> it works?

The maximum number of child processes is typically limited by the
number of file descriptors in an "fd_set" structure.  This number
(FD_SETSIZE) is typically 1024, and each slave consumes 4 or 5
descriptors (depending on whether or not you use the "-Z" flag),
limiting you to around 200-256 slaves.

However, you shouldn't see hangs if you exceed that number.  Instead,
you should see error messages about bad file descriptors in your logs.

> The mimedefang-multiplexor process hangs in a futex(2) SysCall - so it
> seems to be some locking problem.

There's no explicit locking.  The multiplexor is a single-threaded,
event-driven process.  All synchronization is implicit, and happens
in a select() call.

> But what I found was in activateSlave() around line 2313:
> ----  snip  ----
>     sigemptyset(&sigs);
>     sigprocmask(SIG_BLOCK, &sigs, NULL);
> ----  snip  ----

Doh... that IS a no-op.  It should be SIG_SETMASK.

But that shouldn't be the cause of the problem.

Regards,

David.



More information about the MIMEDefang mailing list