> In acl.c we have a rather long ACL_RDLOCK/ACL_UNLOCK in acl_filter(). It > calls ac->ac_acr->acr_filter() and acl_actions(). Both may perform > network operations (e.g.: DNSRBL). > > How can that be fixed? We can lock the individual entry and assign it a > refcount (config reload will decrease the refcount, unlink the entry, > and leave it allocated if refcount > 0). Or we can make sure no thread > get stuck forever here, but I am not sure how it could be acheived. > As a principle all lock protected critical section must not contain any other actions than manipulating the memory of the process shared between the threads. This excludes every I/O operation like sending syslog message or whatever else. Please let us know if anybody disagree with me! If you agree with me, we should start thinking of redesigning the program strictly adhering to that principle.
Message
RE: [milter-greylist] hang in new configuration load
2014-05-13 by Bruncsak, Attila
Attachments
- No local attachments were found for this message.