Apache 2.4.43 / Windows 10 / Crash of libhttpd.dll when Perl is called

Started by mdrmdr, April 08, 2020, 09:39:31 AM

Previous topic - Next topic

mdrmdr

Please note, I posted the below question in the forum of "www.apachelounge.com", but could not get a solution there. I hope it's ok to post the same question here.

Hi,

since quite a while I use Apache x64 2.4.41 for the staging of my website. It runs on latest Windows 10 (all updates) with PHP 7.4.4 and Perl 5.30.2. It's configured for TLS 1.3 only with "SSLProtocol -all TLSv1.3" and HTTP/2. The lastest Visual C++ Redistributable is installed.

Yesterday I updated to Apache x64 2.4.43. I copied the whole "conf" directory from .41 to .43 without any changes. Almost all of my site still works. But *all* https calls to Perl URLs now fail. Regardless of a direct URL or using PHP cURL. http works fine. PHP/https also works fine. Perl is configured as "ScriptInterpreterSource registry-strict" using .pl and .cgi settings in the registry. Calling Perl with PHP system or exec also works fine.

There are *no* error messages at all in the browser. Also *no* error messages when I instruct cURL to write a verbose logfile. Windows event log shows an app crash of httpd.exe (in detail libhttpd.dll). Exception is "0xc0000005" (access violation) at "Error offset: 0x00000000000266f9". "ScriptLog" does not even create a file.

Where do I start to look for errors? Why fails a fully working .41 environment in .43? If required, I'll upload (parts of) my config files.

Thanks for any help
mdrmdr

PS: For further reference, this is the link to the short thread in Apache Lounge

mario

The access violation.... did you try to run the apache service with a different user so far? I had the problem using shared memory and the default service user wasn't allowed to do so.

mdrmdr

I am already admin with enhanced user rights (set via gpedit.msc). To be sure I ran httpd.exe as "TrustedInstaller" using NirSoft's "AdvancedRun". Same result :-(
But, "Access Violation" usually has nothing to do with user rights. Usually this happens on a programming error when the programm tries to access the address 0 (zero pointer exception).

mdrmdr

I think I found the cause.

It's mod_http2. Either when I disable http2 in httpd.conf or when I use the .41 module, everything works again.
So one of the changes from .41 to .43 must have caused the crash.

I reported this finding also in the Apache Lounge board linked above.