Johann Bertscheit wrote:
> I analyzed the difference in speed - and I found the reason:
> for debugging purposes I set the SSLLogLevel to "debug" on WIN32 but not on cygwin.
> When I set the SSLLogLevel back to "info" then the speed difference is gone.
Wow...
I wouldn't imagine that such a flag may cause a so big hit to the
performance...
Once, I thought of writing a monitoring tool for Apache to analyze
bottlenecks (contrary to profile, not only CPU bottlenecks, but
also I/O). I already wrote such a tool for other applications, and
it worked great, and it could find the problem with logging
immediately. However, I don't have any idea how to implement it in
a multithreading environment, such as the WIN32 port of Apache.
> The problem occurs when a switch of VirtualHosts occur!
> I have 2 VirtualHosts configured in my httpd.conf.
> - one on port 443
> - another on port 5443
> (- and the normal port 80)
> Also I checked the dependency with SSLLogLevel, because I noticed that the
>SSL-logfile
> is garbled prior(!) the crash - It seems to be that 2 processes write in the logfile
>without sync!
> But even if I set SSLLogLevel to "warn" the crash occurs!
> To reproduce the problem it seems you need two requests to a semi-complex html-page
> (I have a frameset with 3 frames and with approx. 20 images)
> first from http://host:443/page.html
> then from http://host:5443/page.html
> try it several times (maybe also with different pages) and the crash occurs!
> ...
> I use winnt 4.0.
>
> The following crash occurs while serving 'https://...' pages
> (e.g. frameset with 3 frames and with approx. 20 images)
>
> The crash is not always reproduceable but occurs again and again.
It looks exactly as a multithreading conflict.
But I would expect a multi-threading problem to affect any compiler,
so I'm not sure if this is the problem here too.
To check it, you may try to set "ThreadsPerChild" to 1; It will slow
your performance VERY heavily, so it will require you to spend about
100 times the average time needed to crash your Apache before, i.e.
if Apache crashed once per a minute with the old configuration, with
"ThreadsPerChild" set to 1, you will need a hour or two in order to
be *100%* sure that the problem is over. If it is, we can look for a
problem with lockings or static memory areas, conflicting with each
other. If it is not, then the problem is probably with the compiler.
It is still hard to imagine that there is a so critical bug in MSVC,
so I think about another option: You wrote that you inserted various
modifications into the sources; Is it possible that one of them
resolved a multithreading/locking problem?
And of course, there is a possibility that the Cygwin multithreading
is simply better...
One last possibility: You mentioned that your WIN32 version supported
also mod_rewrite and mod_proxy, while the Cygwin version didn't; Did
you access them when the crashes occured? Maybe the multithreading
in them is buggy?
Regarding your debugging stuff and stack: Seems that we need my
patches urgently, so the debugging information will be more readable.
I finished the migration to 1.3.12-2.6.2, so I'll submit the patches
today later. Then, if you can apply the patches and re-build your
WIN32 version, but with "installd" rather than installr, and provide
us with the results of the debugger, it will be great.
--
Eli Marmor
______________________________________________________________________
Apache Interface to OpenSSL (mod_ssl) www.modssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]