Return-Path: Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: (qmail 34971 invoked from network); 4 Feb 2011 10:52:28 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 4 Feb 2011 10:52:28 -0000 Received: (qmail 58601 invoked by uid 500); 4 Feb 2011 10:52:28 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 58147 invoked by uid 500); 4 Feb 2011 10:52:25 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 58130 invoked by uid 99); 4 Feb 2011 10:52:24 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Feb 2011 10:52:24 +0000 X-ASF-Spam-Status: No, hits=0.0 required=5.0 tests= X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of SteveHay@planit.com designates 213.1.249.253 as permitted sender) Received: from [213.1.249.253] (HELO mailgate.planit.com) (213.1.249.253) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Feb 2011 10:52:23 +0000 Received: from mailgate.planit.com (localhost [127.0.0.1]) by mailgate.planit.com (Postfix) with ESMTP id 71C9343ECF2 for ; Fri, 4 Feb 2011 10:52:02 +0000 (GMT) X-Virus-Scanned: by SpamTitan at planit.com Received: from ukmail02.planit.group (unknown [10.20.200.12]) by mailgate.planit.com (Postfix) with ESMTP id F232543EC54 for ; Fri, 4 Feb 2011 10:52:01 +0000 (GMT) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01CBC459.8DA4489E" Subject: VS2010 release builds of Apache/mod_perl crash on Vista/2008/Win7 Date: Fri, 4 Feb 2011 10:51:59 -0000 Message-ID: <1B32FF956ABF414C9BCE5E487A1497E708E7C17D@ukmail02.planit.group> X-MS-Has-Attach: X-MS-TNEF-Correlator: thread-topic: VS2010 release builds of Apache/mod_perl crash on Vista/2008/Win7 thread-index: AcvEWYwLiwVsBjg1TYmrl/tnzzEPIA== From: "Steve Hay" To: This is a multi-part message in MIME format. ------_=_NextPart_001_01CBC459.8DA4489E Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I have found that VS2010 release mode builds of Apache/mod_perl crash on Windows Vista, Windows Server 2008 and Windows 7, and I believe that the problem may be something to do with the environment manipulation done by Apache (although Apache itself runs fine when not loading mod_perl). The same build runs on Windows XP and Windows Server 2003, and also runs (on all OSes) if I make a debug mode build or use VS2008 so it's quite a strange problem, maybe even a bug in msvcr100.dll? I'm using Apache 2.2.17, mod_perl 2.0.4 and Perl 5.12.2 (patched as per 5.13.9 to allow building with VS2010). Apache/mod_perl crashes during start-up, downstream from ap_run_open_logs(): > msvcr100.dll!free(void * pBlock) Line 51 C msvcr100.dll!__crtsetenv(char * * poption, const int primary) Line 211 + 0xa bytes C msvcr100.dll!_putenv_helper(const char * name, const char * value) Line 265 + 0xb bytes C msvcr100.dll!_putenv(const char * option) Line 77 + 0xa bytes C perl512.dll!ansify_path() Line 4798 C perl512.dll!Perl_win32_init(int * argcp, char * * * argvp) Line 4862 C perl512.dll!Perl_sys_init3(int * argc, char * * * argv, char * * * env) Line 150 + 0x3b bytes C mod_perl.so!modperl_sys_init() Line 561 + 0x11 bytes C mod_perl.so!modperl_hook_init(apr_pool_t * pconf, apr_pool_t * plog, apr_pool_t * ptemp, server_rec * s) Line 629 C libhttpd.dll!ap_run_open_logs(apr_pool_t * pconf, apr_pool_t * plog, apr_pool_t * ptemp, server_rec * s) Line 151 + 0x5b bytes C httpd.exe!main(int argc, const char * const * argv) Line 673 + 0x16 bytes C httpd.exe!__tmainCRTStartup() Line 555 + 0x19 bytes C httpd.exe!mainCRTStartup() Line 371 C It all goes wrong doing a putenv() call in ansify_path(). If I comment out the call to ansify_path() (which is only required for perl's -S option processing) then Apache/mod_perl starts up, but then crashes later on in our own proprietary software when that does a putenv() call... I've managed to reproduce the problem in a small standalone program (attached) by copying the environment manipulation (conversion from UTF-16 to UTF-8) done by httpd-2.2.17\srclib\apr\misc\win32\start.c and then following that with a putenv() call. This program runs (and prints "Ok") in a VS2010 release build on XP, but the same binary crashes on Server 2008. In a VS2008 release build it runs on Server 2008 too. The crash comes here (which is exactly where the Apache/mod_perl setup was crashing): > msvcr100.dll!free(void * pBlock) Line 51 C msvcr100.dll!__crtsetenv(char * * poption, const int primary) Line 211 + 0xa bytes C msvcr100.dll!_putenv_helper(const char * name, const char * value) Line 265 + 0xb bytes C msvcr100.dll!_putenv(const char * option) Line 77 + 0xa bytes C test.exe!main(int argc, char * * argv, char * * env) Line 97 + 0xb bytes C++ test.exe!__tmainCRTStartup() Line 555 + 0x17 bytes C Can anyone shed any light on what the problem is? In particular, can it be fixed (or at least worked around) in the Apache code, or is this a problem with msvcr100.dll? Steve ------_=_NextPart_001_01CBC459.8DA4489E Content-Type: application/octet-stream; name="test.cpp" Content-Transfer-Encoding: base64 Content-Description: test.cpp Content-Disposition: attachment; filename="test.cpp" LyogQnVpbGQgd2l0aDogY2wgL01EIC9aaSB0ZXN0LmNwcCAqLw0KI2luY2x1ZGUgPHdpbmRvd3Mu aD4NCiNpbmNsdWRlIDxzdGRpby5oPg0KI2luY2x1ZGUgPGNydGRiZy5oPg0KI2luY2x1ZGUgPGFz c2VydC5oPg0Kc3RhdGljIGludCB1Y3MydG91dGY4KGNvbnN0IHdjaGFyX3QqIGluLCBzaXplX3Qq IGlud29yZHMsIGNoYXIqIG91dCwgc2l6ZV90KiBvdXRieXRlcykgew0KICAgIF9faW50NjQgbmV3 Y2gsIHJlcXVpcmU7DQogICAgc2l6ZV90IG5lZWQ7DQogICAgY2hhciogaW52b3V0Ow0KICAgIGlu dCBjaDsNCiAgICB3aGlsZSAoKmlud29yZHMgJiYgKm91dGJ5dGVzKSB7DQogICAgICAgIGNoID0g KHVuc2lnbmVkIHNob3J0KSgqaW4rKyk7DQogICAgICAgIGlmIChjaCA8IDB4ODApIHsNCiAgICAg ICAgICAgIC0tKmlud29yZHM7DQogICAgICAgICAgICAtLSpvdXRieXRlczsNCiAgICAgICAgICAg ICoob3V0KyspID0gKHVuc2lnbmVkIGNoYXIpIGNoOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ug ew0KICAgICAgICAgICAgaWYgKChjaCAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7DQogICAgICAgICAg ICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoKGNoICYgMHhG QzAwKSA9PSAweEQ4MDApIHsNCiAgICAgICAgICAgICAgICBpZiAoKmlud29yZHMgPCAyKSB7DQog ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICBpZiAoKCh1bnNpZ25lZCBzaG9ydCkoKmluKSAmIDB4RkMwMCkgIT0gMHhEQzAwKSB7 DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgICAgICBuZXdjaCA9IChjaCAmIDB4MDNGRikgPDwgMTAgfCAoKHVuc2lnbmVkIHNob3J0 KSgqaW4rKykgJiAweDAzRkYpOw0KICAgICAgICAgICAgICAgIG5ld2NoICs9IDB4MTAwMDA7DQog ICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBuZXdjaCA9 IGNoOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmVxdWlyZSA9IG5ld2NoID4+IDExOw0K ICAgICAgICAgICAgbmVlZCA9IDE7DQogICAgICAgICAgICB3aGlsZSAocmVxdWlyZSkNCiAgICAg ICAgICAgICAgICByZXF1aXJlID4+PSA1LCArK25lZWQ7DQogICAgICAgICAgICBpZiAobmVlZCA+ PSAqb3V0Ynl0ZXMpDQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAqaW53b3Jk cyAtPSAobmVlZCA+IDIpICsgMTsNCiAgICAgICAgICAgICpvdXRieXRlcyAtPSBuZWVkICsgMTsN CiAgICAgICAgICAgIGNoID0gMDIwMDsNCiAgICAgICAgICAgIG91dCArPSBuZWVkICsgMTsNCiAg ICAgICAgICAgIGludm91dCA9IG91dDsNCiAgICAgICAgICAgIHdoaWxlIChuZWVkLS0pIHsNCiAg ICAgICAgICAgICAgICBjaCB8PSBjaCA+PiAxOw0KICAgICAgICAgICAgICAgICooLS1pbnZvdXQp ID0gKHVuc2lnbmVkIGNoYXIpKDAyMDAgfCAobmV3Y2ggJiAwMDc3KSk7DQogICAgICAgICAgICAg ICAgbmV3Y2ggPj49IDY7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAqKC0taW52b3V0KSA9 ICh1bnNpZ25lZCBjaGFyKShjaCB8IG5ld2NoKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1 cm4gMTsgICAgDQp9DQpzdGF0aWMgaW50IHdhcnJzenRvYXN0cihjaGFyKioqIHJldGFyciwgd2No YXJfdCogYXJyc3osIGludCBhcmdzKSB7DQogICAgY29uc3Qgd2NoYXJfdCogd2NoOw0KICAgIHNp emVfdCB0b3RsZW47DQogICAgc2l6ZV90IG5ld2xlbjsNCiAgICBzaXplX3Qgd3NpemU7DQogICAg Y2hhcioqIG5ld2FycjsNCiAgICBpbnQgYXJnOw0KICAgIGlmIChhcmdzIDwgMCkgew0KICAgICAg ICBmb3IgKGFyZ3MgPSAxLCB3Y2ggPSBhcnJzejsgd2NoWzBdIHx8IHdjaFsxXTsgKyt3Y2gpDQog ICAgICAgICAgICBpZiAoISp3Y2gpDQogICAgICAgICAgICAgICAgKythcmdzOw0KICAgIH0NCiAg ICB3c2l6ZSA9IDEgKyB3Y2ggLSBhcnJzejsNCiAgICBuZXdhcnIgPSAoY2hhcioqKV9tYWxsb2Nf ZGJnKChhcmdzICsgMSkgKiBzaXplb2YoY2hhciopLCBfQ1JUX0JMT0NLLCBfX0ZJTEVfXywgX19M SU5FX18pOw0KICAgIG5ld2xlbiA9IHRvdGxlbiA9IHdzaXplICogMyArIDE7DQogICAgbmV3YXJy WzBdID0gKGNoYXIqKV9tYWxsb2NfZGJnKG5ld2xlbiAqIHNpemVvZihjaGFyKSwgX0NSVF9CTE9D SywgX19GSUxFX18sIF9fTElORV9fKTsNCiAgICAodm9pZCl1Y3MydG91dGY4KGFycnN6LCAmd3Np emUsIG5ld2FyclswXSwgJm5ld2xlbik7DQogICAgYXNzZXJ0KG5ld2xlbiAmJiAhd3NpemUpOw0K ICAgIG5ld2FyclswXSA9IChjaGFyKilfcmVhbGxvY19kYmcobmV3YXJyWzBdLCB0b3RsZW4gLSBu ZXdsZW4sIF9DUlRfQkxPQ0ssIF9fRklMRV9fLCBfX0xJTkVfXyk7DQogICAgZm9yIChhcmcgPSAx OyBhcmcgPCBhcmdzOyArK2FyZykgew0KICAgICAgICBuZXdhcnJbYXJnXSA9IG5ld2Fyclthcmcg LSAxXSArIDI7DQogICAgICAgIHdoaWxlICgqKG5ld2FyclthcmddKyspKQ0KICAgICAgICAgICAg Ow0KICAgIH0NCiAgICBuZXdhcnJbYXJnXSA9IE5VTEw7DQogICAgKnJldGFyciA9IG5ld2FycjsN CiAgICByZXR1cm4gYXJnczsNCn0NCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgY2hh cioqIGVudikgew0KICAgIHdjaGFyX3QqIHN5c3N0ciA9IEdldEVudmlyb25tZW50U3RyaW5nc1co KTsNCiAgICBpbnQgZHVwZW52ID0gd2FycnN6dG9hc3RyKCZfZW52aXJvbiwgc3lzc3RyLCAtMSk7 DQogICAgaWYgKGVudikgew0KICAgICAgICAqZW52ID0gKGNoYXIqKV9tYWxsb2NfZGJnKChkdXBl bnYgKyAxKSAqIHNpemVvZiAoY2hhciopLCBfQ1JUX0JMT0NLLCBfX0ZJTEVfXywgX19MSU5FX18p Ow0KICAgICAgICBtZW1jcHkoKHZvaWQqKSplbnYsIF9lbnZpcm9uLCAoZHVwZW52ICsgMSkgKiBz aXplb2YgKGNoYXIqKSk7DQogICAgfQ0KICAgIEZyZWVFbnZpcm9ubWVudFN0cmluZ3NXKHN5c3N0 cik7DQogICAgaWYgKF93ZW52aXJvbikgew0KICAgICAgICB3Y2hhcl90Kiogd2VudiA9IF93ZW52 aXJvbjsNCiAgICAgICAgX3dlbnZpcm9uID0gTlVMTDsNCiAgICAgICAgZnJlZSgod2NoYXJfdCoq KXdlbnYpOw0KICAgIH0NCiAgICBfcHV0ZW52KCJQQVRIPUM6XFxXSU5ET1dTXFxzeXN0ZW0zMjtD OlxcV0lORE9XUztDOlxcV0lORE9XU1xcc3lzdGVtMzJcXHdiZW07QzpcXFByb2dyYW0gRmlsZXNc XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEwLjBcXFZTVFNEQlxcRGVwbG95O0M6XFxQcm9ncmFt IEZpbGVzXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxMC4wXFxDb21tb243XFxJREU7QzpcXFBy b2dyYW0gRmlsZXNcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEwLjBcXFZDXFxiaW47QzpcXFBy b2dyYW0gRmlsZXNcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEwLjBcXENvbW1vbjdcXFRvb2xz O0M6XFxXSU5ET1dTXFxNaWNyb3NvZnQuTkVUXFxGcmFtZXdvcmtcXHY0LjAuMzAzMTk7QzpcXFdJ TkRPV1NcXE1pY3Jvc29mdC5ORVRcXEZyYW1ld29ya1xcdjMuNTtDOlxcUHJvZ3JhbSBGaWxlc1xc TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMTAuMFxcVkNcXHZjcGFja2FnZXM7QzpcXFByb2dyYW0g RmlsZXNcXEhUTUwgSGVscCBXb3Jrc2hvcDtDOlxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0IFNE S3NcXFdpbmRvd3NcXHY3LjBBXFxiaW5cXE5FVEZYIDQuMCBUb29scztDOlxcUHJvZ3JhbSBGaWxl c1xcTWljcm9zb2Z0IFNES3NcXFdpbmRvd3NcXHY3LjBBXFxiaW47QzpcXFByb2dyYW0gRmlsZXNc XE1pY3Jvc29mdCBUZWFtIEZvdW5kYXRpb24gU2VydmVyIDIwMDggUG93ZXIgVG9vbHMiKTsNCiAg ICBwcmludGYoIk9rXG4iKTsNCiAgICByZXR1cm4gMDsNCn0NCg== ------_=_NextPart_001_01CBC459.8DA4489E--