Re: [RELEASE CANDIDATE]: mod_perl-2.0.9 RC2

Steve Hay <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <CADED=K4rv-2uH3aBv6LeQ2Gx5G0NWbbM8QSTdH85yJXF-29K3w@mail.gmail.com>
On 3 June 2015 at 01:47, John D Groenveld <[email protected]> wrote:
> In message <CADED=K74mJPpYcYyU5NkXku6r6LAJDtb=5TAVbzbK_g5z-LYPg@mail.gmail.com>
> , Steve Hay writes:
>>Please download, test, and report back on this release candidate of
>>the long-awaited mod_perl 2.0.9.
>
> Not good.
>
> $ cat /etc/release
>   OmniOS v11 r151014
>   Copyright 2015 OmniTI Computer Consulting, Inc. All rights reserved.
>   Use is subject to license terms.
>
>
> $ perl -V
> Summary of my perl5 (revision 5 version 20 subversion 2) configuration:
>
>   Platform:
>     osname=solaris, osvers=2.11, archname=i86pc-solaris-64
>     uname='sunos bernice 5.11 omnios-10b9c79 i86pc i386 i86pc '
>     config_args='-Dprefix=/opt/apache2/perl-5.20.2 -Dcc=gcc -Duseshrplib -Uusemymalc -Duselargefiles -Ubincompat5005 -Doptimize=-O3 -Duse64bitall'
>     hint=recommended, useposix=true, d_sigaction=define
>     useithreads=undef, usemultiplicity=undef
>     use64bitint=define, use64bitall=define, uselongdouble=undef
>     usemymalloc=n, bincompat5005=undef
>   Compiler:
>     cc='gcc', ccflags ='-m64 -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV',
>     optimize='-O3',
>     cppflags='-m64 -fwrapv -fno-strict-aliasing -pipe -fstack-protector'
>     ccversion='', gccversion='4.8.1', gccosandvers=''
>     intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
>     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
>     ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
>     alignbytes=8, prototype=define
>   Linker and Libraries:
>     ld='gcc', ldflags =' -m64 -fstack-protector -L/usr/gnu/lib '
>     libpth=/opt/gcc-4.8.1/lib /opt/gcc-4.8.1/lib/gcc/i386-pc-solaris2.11/4.8.1/include-fixed /usr/lib /usr/gnu/lib /usr/ccs/lib
>     libs=-lsocket -lnsl -ldl -lm -lc
>     perllibs=-lsocket -lnsl -ldl -lm -lc
>     libc=/lib/libc.so, so=so, useshrplib=true, libperl=libperl.so
>     gnulibc_version=''
>   Dynamic Linking:
>     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='  -R /opt/apache2/perl-5.20.2/lib/5.20.2/i86pc-solaris-64/CORE'
>     cccdlflags='-fPIC', lddlflags=' -shared -m64 -L/usr/gnu/lib -fstack-protector'
>
>
> Characteristics of this binary (from libperl):
>   Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV
>                         PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP
>                         PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV
>                         PERL_USE_SAFE_PUTENV USE_64_BIT_ALL USE_64_BIT_INT
>                         USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE
>                         USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO
>                         USE_PERL_ATOF
>   Built under solaris
>   Compiled at Mar 27 2015 17:54:42
>   @INC:
>     /opt/apache2/perl-5.20.2/lib/site_perl/5.20.2/i86pc-solaris-64
>     /opt/apache2/perl-5.20.2/lib/site_perl/5.20.2
>     /opt/apache2/perl-5.20.2/lib/5.20.2/i86pc-solaris-64
>     /opt/apache2/perl-5.20.2/lib/5.20.2
>     .
>
>
> $ /opt/apache2/bin/httpd -V
> Server version: Apache/2.2.29 (Unix)
> Server built:   Dec 14 2014 18:03:56
> Server's Module Magic Number: 20051115:36
> Server loaded:  APR 1.5.1, APR-Util 1.5.3
> Compiled using: APR 1.5.1, APR-Util 1.5.3
> Architecture:   64-bit
> Server MPM:     Prefork
>   threaded:     no
>     forked:     yes (variable process count)
> Server compiled with....
>  -D APACHE_MPM_DIR="server/mpm/prefork"
>  -D APR_HAS_SENDFILE
>  -D APR_HAS_MMAP
>  -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
>  -D APR_USE_PROC_PTHREAD_SERIALIZE
>  -D APR_USE_PTHREAD_SERIALIZE
>  -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
>  -D APR_HAS_OTHER_CHILD
>  -D AP_HAVE_RELIABLE_PIPED_LOGS
>  -D DYNAMIC_MODULE_LIMIT=128
>  -D HTTPD_ROOT="/opt/apache2"
>  -D SUEXEC_BIN="/opt/apache2/bin/suexec"
>  -D DEFAULT_PIDLOG="logs/httpd.pid"
>  -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
>  -D DEFAULT_LOCKFILE="logs/accept.lock"
>  -D DEFAULT_ERRORLOG="logs/error_log"
>  -D AP_TYPES_CONFIG_FILE="conf/mime.types"
>  -D SERVER_CONFIG_FILE="conf/httpd.conf"
>
>
> $ env PATH=/opt/apache2/perl-5.20.2/bin:/usr/bin:/usr/sbin:/usr/ccs/bin:/opt/gcc-4.8.1/bin:/usr/sfw/bin:/usr/gnu/bin gmake
> Go
> cd "src/modules/perl" && gmake
> gmake[1]: Entering directory `/home/john/mod_perl-2.0.9-rc2/src/modules/perl'
> gcc -I/home/john/mod_perl-2.0.9-rc2/src/modules/perl -I/home/john/mod_perl-2.0.9-rc2/xs -I/opt/apache2/include -I/opt/apache2/include -I/usr/sfw/include -I/opt/apache2/include -m64 -fwrapv -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -I/opt/apache2/perl-5.20.2/lib/5.20.2/i86pc-solaris-64/CORE -DMOD_PERL -DMP_COMPAT_1X -DSOLARIS2=11 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -O3 -fPIC \
> -c modperl_filter.c && mv modperl_filter.o modperl_filter.lo
> In file included from mod_perl.h:32:0,
>                  from modperl_filter.c:17:
> modperl_filter.c: In function 'modperl_run_filter':
> modperl_error.h:42:9: error: unknown type name 'modperl_interp_t'
>          modperl_interp_t *interp = modperl_thx_interp_get(aTHX);        \
>          ^
> modperl_error.h:50:9: note: in expansion of macro 'MP_PUTBACK_IF_USED'
>          MP_PUTBACK_IF_USED();                                           \
>          ^
> modperl_filter.c:538:17: note: in expansion of macro 'MP_CROAK_PUTBACK'
>                  MP_CROAK_PUTBACK(MODPERL_FILTER_ERROR,
>                  ^
> modperl_error.h:42:36: warning: initialization makes pointer from integer without a cast [enabled by default]
>          modperl_interp_t *interp = modperl_thx_interp_get(aTHX);        \
>                                     ^
> modperl_error.h:50:9: note: in expansion of macro 'MP_PUTBACK_IF_USED'
>          MP_PUTBACK_IF_USED();                                           \
>          ^
> modperl_filter.c:538:17: note: in expansion of macro 'MP_CROAK_PUTBACK'
>                  MP_CROAK_PUTBACK(MODPERL_FILTER_ERROR,
>                  ^
>

This looks like the same failure reported here with an unthreaded perl:

https://rt.cpan.org/Ticket/Display.html?id=102930#txn-1502924

Unfortunately, I can't reproduce that on Windows since the WinNT MPM
is threaded and hence requires a threaded perl to build with. However,
I think it's a failure introduced by r1682366, and (shooting in the
dark) I wonder if the patch below (also attached, although the patch
might have some Windows style EOLs) would fix it?

Index: src/modules/perl/modperl_error.h
===================================================================
--- src/modules/perl/modperl_error.h    (revision 1683243)
+++ src/modules/perl/modperl_error.h    (working copy)
@@ -37,6 +37,7 @@

 void modperl_croak(pTHX_ apr_status_t rc, const char* func);

+#ifdef USE_ITHREADS
 #define MP_PUTBACK_IF_USED() STMT_START                                 \
     {                                                                   \
         modperl_interp_t *interp = modperl_thx_interp_get(aTHX);        \
@@ -44,6 +45,9 @@
             modperl_interp_unselect(interp);                            \
         }                                                               \
     } STMT_END
+#else
+#define MP_PUTBACK_IF_USED() NOOP
+#endif

 #define MP_CROAK_PUTBACK(rc, func) STMT_START                           \
     {                                                                   \
putback.patch (text/x-diff, 938 B)
Index: src/modules/perl/modperl_error.h
===================================================================
--- src/modules/perl/modperl_error.h	(revision 1683243)
+++ src/modules/perl/modperl_error.h	(working copy)
@@ -37,6 +37,7 @@
 
 void modperl_croak(pTHX_ apr_status_t rc, const char* func);
 
+#ifdef USE_ITHREADS
 #define MP_PUTBACK_IF_USED() STMT_START                                 \
     {                                                                   \
         modperl_interp_t *interp = modperl_thx_interp_get(aTHX);        \
@@ -44,6 +45,9 @@
             modperl_interp_unselect(interp);                            \
         }                                                               \
     } STMT_END
+#else
+#define MP_PUTBACK_IF_USED() NOOP
+#endif
 
 #define MP_CROAK_PUTBACK(rc, func) STMT_START                           \
     {                                                                   \
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.