perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Trawick <traw...@gmail.com>
Subject Re: httpd24 on Windows?
Date Tue, 05 Nov 2013 13:08:37 GMT
On Tue, Nov 5, 2013 at 7:37 AM, Steve Hay <steve.m.hay@googlemail.com>wrote:

> On 5 November 2013 11:51, Jeff Trawick <trawick@gmail.com> wrote:
> > 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).
> >
>
> A set of overlays for 2.4.6, apr 1.4.8 and apu 1.5.2 would be great.
>


http://people.apache.org/~trawick/cmake-for-steve.zip
(the enclosed patches are needed only if you want to run the apr or
apr-util test suites from an out of source build tree, which is usual for
cmake)

http://svn.apache.org/viewvc/apr/apr/branches/1.5.x/README.cmake
http://svn.apache.org/viewvc/apr/apr-util/branches/1.5.x/README.cmake
http://svn.apache.org/viewvc/httpd/httpd/trunk/README.cmake


I have some other notes at http://people.apache.org/~trawick/cmake/
but the makefile there is probably too complex to see the gist of it.

PCRE includes cmake support already.

Snippets to roll into a makefile or script:

PREFIX = $(HOME)\httpd
CMAKE_BUILD_TYPE = Debug

CMAKE_BASE_OPTS = -DCMAKE_INSTALL_PREFIX=$(PREFIX) -G "NMake Makefiles"
-DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE)

APR_CMAKE_OPTS = $(CMAKE_BASE_OPTS) -DAPR_INSTALL_PRIVATE_H=ON
APRUTIL_CMAKE_OPTS = $(CMAKE_BASE_OPTS)
PCRE_CMAKE_OPTS = $(CMAKE_BASE_OPTS) -DBUILD_SHARED_LIBS=on
HTTPD_CMAKE_OPTS = $(CMAKE_BASE_OPTS) -DENABLE_MODULES=a

cd builddir\pcre
cmake $(PCRE_CMAKE_OPTS) /path/to/pcre-8.33
nmake && nmake install
cd ..\..

cd builddir\apr
cmake $(APR_CMAKE_OPTS) /path/to/apr-1.4.8+overlays
nmake && nmake install
cd ..\..

cd builddir\apr-util
cmake $(APRUTIL_CMAKE_OPTS) /path/to/apr-util-1.5.2+overlays
nmake && nmake install
cd ..\..

cd builddir\httpd
cmake $(HTTPD_CMAKE_OPTS) /path/to/httpd-2.4.6+overlays
nmake && nmake install
cd ..\..

(In my attempts to simplify this from my more complex Makefiles that handle
a number of variations, I may have omitted something.)
-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Mime
View raw message