On Tue, Nov 5, 2013 at 4:07 AM, Steve Hay <steve.m.hay@googlemail.com> wrote:
On 5 November 2013 01:00, Steve Hay <steve.m.hay@googlemail.com> wrote:
> On 4 November 2013 16:02, Steve Hay <steve.m.hay@googlemail.com> wrote:
>> On 4 November 2013 15:38, Jeff Trawick <trawick@gmail.com> wrote:
>>> On Mon, Nov 4, 2013 at 8:43 AM, Jeff Trawick <trawick@gmail.com> wrote:
>>>>
>>>> On Mon, Nov 4, 2013 at 4:22 AM, Steve Hay <steve.m.hay@googlemail.com>
>>>> wrote:
>>>>>
>>>>> On 30 October 2013 18:24, Steve Hay <steve.m.hay@googlemail.com> wrote:
>>>>> > I've now tried other perls (5.16.0, 5.18.0 and 5.19.4) in other build
>>>>> > configurations (with/without PERL_IMPLICIT_SYS) and can confirm that
>>>>> > the crash only occurs with perls built with PERL_IMPLICIT_SYS enabled.
>>>>> > I generally use perl with that disabled (although that isn't the
>>>>> > default configuration), so that's probably what I was doing when I had
>>>>> > this working back in July.
>>>>> >
>>>>> > That is indeed a Windows-specific thing, unfortunately :-/
>>>>> >
>>>>> > I will see what I can do to fix it since most users will indeed have
>>>>> > the default configuration (certainly ActivePerl and Strawberry Perl
>>>>> > both do) and hence experience the crash.
>>>>>
>>>>> As per your suggestion on the other thread, I've now merged the
>>>>> httpd24 and threading branches togther into a new branch called
>>>>> httpd24threading and I'm delighted to see that it does indeed fix the
>>>>> add_config.t crash when PERL_IMPLICIT_SYS is defined :-)
>>>>>
>>>>> There is one oddity when starting up the server: it complains that
>>>>> "KeepAliveTimeout 300" has the wrong format! I don't understand this.
>>>>> The directive is not new and that syntax (number of seconds) has long
>>>>> been valid. httpd-2.3.2 added a new millisecond format (append "ms"),
>>>>> but that shouldn't affect this:
>>>>> http://httpd.apache.org/docs/2.4/mod/core.html#keepalivetimeout
>>>>
>>>>
>>>> The most likely cause would seem to be some stray character after the 300
>>>> (e.g., maybe a ^M on Unix)???  The next most likely (also unlikely) cause
>>>> would seem to be that per-thread errno is hosed in your httpd build for some
>>>> reason???  (yeah, I know how bogus this sounds :) )
>>>>
>>>> 2.2 parses the number via the very forgiving atoi().
>>>> 2.4 parses the number with apr_strtoi64() which manipulates errno and also
>>>> by checking what comes after the number, which also manipulates errno and is
>>>> sensitive to the first character that apr_strtoi64() can't parse
>>>>
>>>> Maybe the quickest way to get to the bottom of it is to add some tracing
>>>> to the three "return some-error" paths in
>>>> server/util.c::ap_timeout_parameter_parse().
>>>
>>>
>>> I should be able to try that out...
>>>
>>> What do I need to grab from svn and run, and does this particular error
>>> reproduce on Linux?
>>>>
>>
>> I haven't heard from others yet whether this reproduces on Linux.
>>
>> The only thing you need from svn is modperl's 'httpd24threading'
>> branch and httpd-2.4 (I'm using 2.4.4) -- it works fine with 2.2. I
>> doubt that the perl version is relevant, but I'm using 5.19.4. I've
>> built everything in debug mode. I will have a look later; thanks for
>> the tip where to look. There are definitely no stray characters after
>> the 300 -- only a \n.
>
> Just tried again with httpd-2.4.6 and perl-5.19.5 and it works fine,
> albeit in release builds. I will find out whether it's the upgraded
> httpd, upgraded perl, or switch from debug to release mode that
> "fixed" it...

Returning to my (failing) debug mode 2.4.4 + 5.19.4 setup, if I
upgrade perl to 5.19.5 (debug or release) then it still fails, but
when I rebuild httpd in release mode then it works.

Not sure what to make of that. I tried debugging the failing debug
mode 2.4.4 but the debugger played up. It showed apr_strtoi64()
succeeding (returning 300 with endp pointing at the NUL after the 300
and errno 0) so it set time_str to default_time_unit, but then went
into the switch and decided that *time_str was none of 's', 'h' or
''m', so returned APR_EGENERAL. I don't understand how it can do that.

I wish I could try a debug build of 2.4.6, but I don't know how to
build that on Windows. There is no -win32-src for 2.4.x at
http://mirrors.ukfast.co.uk/sites/ftp.apache.org//httpd/ (or other
mirror sites). I've been using the -win32-src of the 2.4.4 version
from http://people.apache.org/~gsmith/httpd/releases/ but there is no
2.4.6 there. My 2.4.6 build came from Apache Lounge, but there is no
debug build there...

Are there Windows build instructions for 2.4.x anywhere?

If you want to build with modern tools (e.g., VS 2010/2012):

As far as Windows build instructions:  One of the svn guys has a Perl script to build httpd and a bunch support libraries with modern Microsoft tools, hacking the project files along the way.  The ApacheLounge and ApacheHaus guys use various manual interventions to get it to work. We now have a cmake build system for apr, apr-util, and httpd which for Unix-heads allows building these in a sane manner, but that requires the latest from svn (i.e. post-apr-1.4.8, post-apr-util-1.5.2, etc.).

I can give you a debug build of recent levels of apr, apr-util, and httpd that you want, or extract and adjust the cmake build system files so you can drop it on top of certain levels (+ build instructions).  I already have the set of overlays for httpd 2.4.6, apr-1.4.8, and apr-util-1.5.2.  There may be a required patch or two, but I don't recall at the moment.

Let me know if you can make use of either of these (and if appropriate, 32 vs. 64 and which versions).

As far as building with old tools (6.0):

I think this is accurate: http://httpd.apache.org/docs/2.4/platform/win_compiling.html

I guess it diverges more and more as you use later tools.

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/