I started seeing the following errors in the specweb99 run output, when I use mod_specweb99.c with Apache 2.0.43 and worker MPM. The following patch seems to get rid of the problem. If you're thinking that it may degrade the response - I did not find much difference though.
Can somebody please evaluate and let me know if it's okay ?.
Ha! I have seen this too but have had no time to even think about working on it.
I have one question. Your patch mutexes out the acquisition of the file lock. Do these thread mutexes apply only within the process, or across processes as well? In the latter case, we could do away with the flock entirely if we're in a multithreaded environment. In that case the #ifs would move to the _dolock function and we'd have an _unlock function with its own #ifs.
I dug into APR locks a little bit. The apr_global_mutex_* functions turn into two separate syscalls, with #if APR_HAS_THREADS around the thread mutexing. So unfortunately they wouldn't save us any syscalls :-( :-( But they might save a little bit of function call overhead.
Another interesting place to look is in srclib/apr/include/arch/unix/apr_private.h .
There are several xxxx_IS_GLOBAL symbols for various serialization mechanisms. On my Linux box, all of them are #undef'ed and commented out, including fcntl and flock which are the two choices for apr_file_lock. Madhu, could you take a look there and see what you've got?
Thanks, Greg