Changes for version 1.28
- Multiple fixes to locking code:
- flock() can be interrupted by a syscall. work around by using a safe_flock() wrapper that retries if errno is EAGAIN (and also EWOULDBLOCK).
- handle several possible race conditions between open() and flock().
- DESTROY() was unlinking the lockfile (.logfile.LCK). This was the cause of a race condition where multiple processes could enter the critical seciton at the same time. Avoided by leaving .LCK files in place. Probably fixes #77075 (Thanks Emanuele Tomasi).
- add author test for DESTROY lockfile race condition.
Modules
Log to Files that Archive/Rotate Themselves