Hi all,
As I've reviving this thread, let me link to it:
http://www.gossamer-threads.com/lists/modperl/dev/83393
I'll start by saying across at least 20 FreeBSD computers and a mirriad
of versions and configs between 5.0 and 7.0-current, I've never seen
this work since at least August 22, 2005.
Thats bleed versions ~25197 -> current (26703)
The original error:
[EMAIL PROTECTED]
/home/pgollucci/dev/repos/asf/perl/modperl/bleed-svn_prefork 147>make
cd "src/modules/perl" && make
cc
-I/usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed-svn_prefork/src/modules/perl
-I/usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed-svn_prefork/xs
-I/usr/home/pgollucci/dev/apps-3.4.4/httpd/svn/prefork/include
-I/usr/home/pgollucci/dev/apps-3.4.4/httpd/svn/prefork/include
-I/usr/local/include
-I/usr/home/pgollucci/dev/apps-3.4.4/httpd/svn/prefork/include -pipe
-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing
-Wdeclaration-after-statement -I/usr/local/include
-I/usr/home/pgollucci/dev/apps-3.4.4/perl/bleed/lib/5.9.3/i386-freebsd-thread-multi-64int/CORE
-DMOD_PERL -Wall -Wmissing-prototypes -Wstrict-prototypes
-Wmissing-declarations -Werror -Wdeclaration-after-statement
-DMP_COMPAT_1X -DMP_DEBUG -O0 -DMP_TRACE -DAP_DEBUG -g3 -O0 -DPIC -fPIC
-c modperl_error.c && mv modperl_error.o modperl_error.lo
modperl_error.c: In function `modperl_croak':
modperl_error.c:93: warning: null format string
*** Error code 1
Stop in
/usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed-svn_prefork/src/modules/perl.
*** Error code 1
Stop in /usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed-svn_prefork.
Okay, so I've done some digging:
From proto.h:
* This file is built by embed.pl from data in embed.fnc, embed.pl,
* pp.sym, intrpvar.h, perlvars.h and thrdvar.h.
* Any changes made here will be lost!
So were talking about Perl_croak and/or croak
embed.fnc:
: croak()'s first parm can be NULL. Otherwise, mod_perl breaks.
Afprd |void |croak |NULLOK const char* pat|...
and for comaprison sake's, here's 5.8.7
Afprd |void |croak |const char* pat|...
Good to note, that NULLOK is correctly marked in bleed.
the resulting proto.h
PERL_CALLCONV void Perl_croak(pTHX_ const char* pat, ...)
__attribute__noreturn__
__attribute__format__(__printf__,pTHX_1,pTHX_2);
Again, 5.8.7 for comparison
PERL_CALLCONV void Perl_croak(pTHX_ const char* pat, ...)
__attribute__((noreturn))
__attribute__format__(__printf__,pTHX_1,pTHX_2);
sadly, thats identical so this is not the problem.
Also, if I were to regenrate it with
: croak()'s first parm can be NULL. Otherwise, mod_perl breaks.
Afprd |void |croak |NN const char* pat|...
I get
PERL_CALLCONV void Perl_croak(pTHX_ const char* pat, ...)
__attribute__noreturn__
__attribute__format__(__printf__,pTHX_1,pTHX_2)
__attribute__nonnull__(pTHX_1);
And if I now try to compile mp2
I get a different error
[EMAIL PROTECTED]
/home/pgollucci/dev/repos/asf/perl/modperl/bleed_svn_prefork 202>make
cd "src/modules/perl" && make
cc
-I/usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed_svn_prefork/src/modules/perl
-I/usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed_svn_prefork/xs
-I/usr/home/pgollucci/dev/apps-3.4.4/httpd/svn/prefork/include
-I/usr/home/pgollucci/dev/apps-3.4.4/httpd/svn/prefork/include
-I/usr/local/include
-I/usr/home/pgollucci/dev/apps-3.4.4/httpd/svn/prefork/include -pipe
-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing
-Wdeclaration-after-statement -I/usr/local/include
-I/usr/home/pgollucci/dev/apps-3.4.4/perl/bleed-26704/lib/5.9.3/i386-freebsd-64int/CORE
-DMOD_PERL -Wall -Wmissing-prototypes -Wstrict-prototypes
-Wmissing-declarations -Werror -Wdeclaration-after-statement
-DMP_COMPAT_1X -DMP_DEBUG -O0 -DMP_TRACE -DAP_DEBUG -g3 -O0 -DPIC -fPIC
-c modperl_error.c && mv modperl_error.o modperl_error.lo
modperl_error.c: In function `modperl_croak':
******************************************************************************************
modperl_error.c:93: warning: null argument where non-null required (arg 1)
******************************************************************************************
modperl_error.c:93: warning: null format string
*** Error code 1
Stop in
/usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed_svn_prefork/src/modules/perl.
*** Error code 1
Stop in /usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed_svn_prefork.
Alrighty, so something is amiss... Let me make it simpler -- a test program:
Note, I'll use the "pristine proto.h" from here on out.
cat test.c
#include "EXTERN.h"
#include "perl.h"
int main (int argc, char **argv) {
Perl_croak(Nullch);
return 0;
}
gcc -I/home/pgollucci/dev/apps/perl/5.8.7/lib/CORE
-L/home/pgollucci/dev/apps/perl/5.8.7/lib/CORE -lperl -o test5.8.7 test.c
gcc
-I/home/pgollucci/dev/apps/perl/bleed/lib/5.9.3/i386-freebsd-64int/CORE
-L/home/pgollucci/dev/apps/perl/bleed/lib/5.9.3/i386-freebsd-64int/CORE
-lperl -o test5.9.3 test.c
Amazingly, they BOTH compile..........
Let me get a little more complex and try to isolate mp2 as the culprit
So let me go create a new test file in the my mp2 svn tree:
cat src/modules/perl/test.c
[EMAIL PROTECTED]
/home/pgollucci/dev/repos/asf/perl/modperl/bleed_svn_prefork/src/modules/perl
318>cat test.c
#include "EXTERN.h"
#include "perl.h"
/* I AM NEW */
#include "mod_perl.h"
int main (int argc, char **argv) {
Perl_croak(Nullch);
return 0;
}
Test compile again:
cc
-I/usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed_svn_prefork/src/modules/perl
-I/usr/home/pgollucci/dev/repos/asf/perl/modperl/bleed_svn_prefork/xs
-I/usr/home/pgollucci/dev/apps-3.4.4/httpd/svn/prefork/include
-I/usr/home/pgollucci/dev/apps-3.4.4/httpd/svn/prefork/include
-I/usr/local/include
-I/usr/home/pgollucci/dev/apps-3.4.4/httpd/svn/prefork/include -pipe
-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing
-Wdeclaration-after-statement -I/usr/local/include
-I/usr/home/pgollucci/dev/apps-3.4.4/perl/bleed/lib/5.9.3/i386-freebsd-64int/CORE
-DMOD_PERL -Wall -Wmissing-prototypes -Wstrict-prototypes
-Wmissing-declarations -Werror -Wdeclaration-after-statement
-DMP_COMPAT_1X -DMP_DEBUG -O0 -DMP_TRACE -DAP_DEBUG -g3 -O0 -DPIC -fPIC
test.c
test.c: In function `main':
test.c:8: warning: null format string
JACKPOT, mp2 broke it... but how ?
grep Perl_croak * | grep -v .svn | grep define
src/modules/perl/modperl_perl_unembed.h:# define croak
Perl_croak_nocontext
Back to proto.h
#if defined(PERL_IMPLICIT_CONTEXT)
PERL_CALLCONV void Perl_croak_nocontext(const char* pat, ...)
__attribute__noreturn__
__attribute__format__(__printf__,1,2)
__attribute__nonnull__(1);
LIGHT BULB!
More #define mess in embed.h
#define croak Perl_croak
Okay, so I can say for sure, that
#ifdef PERL_CORE
#error "core"
# ifndef croak
#error "not defined croak"
# define croak Perl_croak_nocontext
# endif
#endif
the #errors aren't hit, so this is not causing it -- 1 down.
Okay, now I'm just plain pissed.... hardball
gcc -save-temps
modperl_error.i
Perl_croak( ((char*)((void *)0)));
I see
# 105
"/usr/home/pgollucci/dev/apps-3.4.4/perl/bleed/lib/5.9.3/i386-freebsd-64int/CORE/proto.h"
2
void Perl_croak( const char* pat, ...)
__attribute__((noreturn))
__attribute__((format(__printf__,1,2)));
So its not being expanded to anything else.
I'm now at a complete loss........ Something's wrong, but I've no idea what.
As I'm now at my wits end, so any help appreciated.
For reference this particular speal was done on
FreeBSD 6.0-RELEASE i386 GENERIC kernel
perl 5.8.7 release, bleed 26704 both without ithreads
httpd svn apr not threaded prefork mpm
mp2 svn
gcc 3.4.4
------------------------------------------------------------------------
"Love is not the one you can picture yourself marrying,
but the one you can't picture the rest of your life without."
"It takes a minute to have a crush on someone, an hour to like someone,
and a day to love someone, but it takes a lifetime to forget someone..."
"I wanna hold ya till I die ... I wanna hold ya till the fear in me
subsides."
Philip M. Gollucci ([EMAIL PROTECTED]) 301.254.5198
Consultant / http://p6m7g8.net/Resume/resume.shtml
Senior Software Engineer - TicketMaster - http://ticketmaster.com
1024D/A79997FA F357 0FDD 2301 6296 690F 6A47 D55A 7172 A799 97F
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]