How do I add my own tests?
[RELEASE CANDIDATE] mod_perl-1.31 RC4
Hello Guest
  
  • Login
• Register…
• Start blog
  • Who, Where, When
• What can I do?
• What to Read?
  • Polls
• Avatars
• Interests
  • Cities and Countries
• Random blog
• Users search
  • Search
• Games
• Tests
• QAIX
  • Сообщества
• Talxy Chat
• Horoscope
• Online
 
Зарегистрируйся!

QAIX > Apache HTTP Server > [RELEASE CANDIDATE] mod_perl-1.31 RC4 20 November 2008 21:24:22

  Recent blog posts: 
  Forums:   
  Discuss: 
  Recent forum topics: 
  Recent forum comments:
  Moderators:

[RELEASE CANDIDATE] mod_perl-1.31 RC4

Philippe M. Chiasson 20 November 2008 21:24:22
 The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is ready. It can be downloaded here:

http://www.apache.o­rg/~gozer/mp1/mod_pe­rl-1.31-rc4.tar.gz

MD5: ba12ce36c4c738bccfa­93ab646a6824c
SHA1: 2de6ce29f44505cfdca­34b7aa6499d961c72953­b

Please give it a spin in your favorite configuration and report
any problems. Especially needed against Perl-5.10.

The summary of what has changed since 1.30 are (from Changes):

Fix potential segfault when the environment contains
NULL values [Mike Schilli]

Fix static APACI build against newer apache-1.3.38+
[Gozer]

Fixed modules/regex.t test 4 on Win32
[Steve Hay]

Avoid possible segfault when PerlFreshRestart is On.
[Michael Rendell <michael@cs.mun.ca>]

Prevent segfault when running with perl >= 5.9.3
[Steve Hay]

Fix shared libary extensions on Win32 to be .dll not .so
[Nikolay Ananiev <ananiev@thegdb.com>]

Patch to mod_perl.dsp to remove /D _WINSOCK2API_ on Win32
for perl >= 5.8.6 [Steve Hay]

--
Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectopl­asm.org/ m/gozer\@(apache|cp­an|ectoplasm)\.org/



Add comment
Issac Goldstand 2 April 2008 13:26:20 permanent link ]
 
win32 vc6 FAIL

Sorry folks, still segfaulting. Backtrace below:

NTDLL! 7c918fea()
NTDLL! 7c90104b()
PerlIOUnix_open(int­erpreter * 0x009a4084, _PerlIO_funcs * 0x280cb548
_PerlIO_unix, PerlIO_list_s * 0x008230fc, long 0, const char *
0x280be174 `string', int 0, int 0, int 0, _PerlIO * * 0x00000000, int 0,
sv * * 0x00000000) line 2633
PerlIOBuf_open(inte­rpreter * 0x00000001, _PerlIO_funcs * 0x280cb708
_PerlIO_crlf, PerlIO_list_s * 0x008230fc, long 1, const char *
0x280be174 `string', int 0, int 0, int 0, _PerlIO * * 0x00000000, int 0,
sv * * 0x00000000) line 3692 + 27 bytes
PerlIO_openn(interp­reter * 0x009a4084, const char * 0x00000000, const
char * 0x280be174 `string', int 0, int 0, int 0, _PerlIO * * 0x00000000,
int 0, sv * * 0x00000000) line 1604 + 29 bytes
PerlIO_fdopen(int 0, const char * 0x280be174 `string') line 4995 + 22 bytes
PerlIO_stdstreams(i­nterpreter * 0x009a4084) line 1212
PerlIO_resolve_laye­rs(interpreter * 0x008230fc, const char * 0x00000000,
const char * 0x280b3b74 `string', int 1, sv * * 0x0012db64) line 1493 +
6 bytes
PerlIO_openn(interp­reter * 0x009a4084, const char * 0x00000000, const
char * 0x280b3b74 `string', int -1, int 0, int 0, _PerlIO * *
0x00000000, int 1, sv * * 0x0012db64) line 1575 + 20 bytes
PerlIO_open(const char * 0x0082316c, const char * 0x280b3b74 `string')
line 5004 + 21 bytes
S_open_script(inter­preter * 0x009a4084, const char * 0x0082316c, char 0,
sv * 0x009a6adc, int * 0x0012dbec, _PerlIO * * * 0x0012dbc4) line 3705 +
11 bytes
S_parse_body(interp­reter * 0xffffffff, char * * 0x00000000, void
(interpreter *)* 0x10026750 mod_perl_xs_init(in­terpreter *)) line 2056
perl_parse(interpre­ter * 0x009a4084, void (interpreter *)* 0x10026750
mod_perl_xs_init(in­terpreter *), int 4, char * * 0x0012dd2c, char * *
0x00000000) line 1651
perl_startup(server­_rec * 0x003f8e88, pool * 0x003f8e60) line 704 + 27 bytes
perl_cmd_require(cm­d_parms * 0x0012fe34, void * 0x003fa8f8, char *
0x003faa88) line 621 + 28 bytes
invoke_cmd(const command_struct * 0x10094c20, cmd_parms * 0x0012fe34,
void * 0x003fa8f8, const char * 0x0012de30) line 877 + 6 bytes
ap_handle_command(c­md_parms * 0x009a0108, void * 0x003f9a28, const char
* 0x0012de24) line 989
ap_srm_command_loop­(cmd_parms * 0x0012fe34, void * 0x003f9a28) line 1003
ap_process_resource­_config(server_rec * 0x003f8e88, char * 0x6ffae000
_ap_server_confname­, pool * 0x003f8e60, pool * 0x009a0058) line 1294 +
13 bytes
ap_read_config(pool­ * 0x003f8e60, pool * 0x009a0058, char * 0x6ffae000
_ap_server_confname­) line 1579
apache_main(int 6, char * * 0x00820110) line 7880 + 23 bytes
main(int 6, char * * 0x00820110) line 33 + 13 bytes
APACHE! mainCRTStartup + 227 bytes
KERNEL32! 7c816d4f()



Philippe M. Chiasson wrote:
The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is ready.
It can be downloaded here:
MD5: ba12ce36c4c738bccfa­93ab646a6824c
SHA1: 2de6ce29f44505cfdca­34b7aa6499d961c72953­b
Please give it a spin in your favorite configuration and report
any problems. Especially needed against Perl-5.10.
The summary of what has changed since 1.30 are (from Changes):
Fix potential segfault when the environment contains
NULL values [Mike Schilli]
Fix static APACI build against newer apache-1.3.38+
[Gozer]
Fixed modules/regex.t test 4 on Win32
[Steve Hay]
Avoid possible segfault when PerlFreshRestart is On.
[Michael Rendell <michael@cs.mun.ca>]
Prevent segfault when running with perl >= 5.9.3
[Steve Hay]
Fix shared libary extensions on Win32 to be .dll not .so
[Nikolay Ananiev <ananiev@thegdb.com>]
Patch to mod_perl.dsp to remove /D _WINSOCK2API_ on Win32
for perl >= 5.8.6 [Steve Hay]
Add comment
Issac Goldstand 2 April 2008 13:29:46 permanent link ]
 
Just to clarify a bit, this is against the exact same Apache + Perl I
tried (and segfaulted) RC3 against. I can't seem to grab the .mdmp from
temp but if anyone knows how to make a dump from within the vc6 ide or
on-demand from any other JIT debugger, I'd be happy to make one.

Issac

Issac Goldstand wrote:
win32 vc6 FAIL
Sorry folks, still segfaulting. Backtrace below:
NTDLL! 7c918fea()
NTDLL! 7c90104b()
PerlIOUnix_open(int­erpreter * 0x009a4084, _PerlIO_funcs * 0x280cb548
_PerlIO_unix, PerlIO_list_s * 0x008230fc, long 0, const char *
0x280be174 `string', int 0, int 0, int 0, _PerlIO * * 0x00000000, int 0,
sv * * 0x00000000) line 2633
PerlIOBuf_open(inte­rpreter * 0x00000001, _PerlIO_funcs * 0x280cb708
_PerlIO_crlf, PerlIO_list_s * 0x008230fc, long 1, const char *
0x280be174 `string', int 0, int 0, int 0, _PerlIO * * 0x00000000, int 0,
sv * * 0x00000000) line 3692 + 27 bytes
PerlIO_openn(interp­reter * 0x009a4084, const char * 0x00000000, const
char * 0x280be174 `string', int 0, int 0, int 0, _PerlIO * * 0x00000000,
int 0, sv * * 0x00000000) line 1604 + 29 bytes
PerlIO_fdopen(int 0, const char * 0x280be174 `string') line 4995 + 22 bytes
PerlIO_stdstreams(i­nterpreter * 0x009a4084) line 1212
PerlIO_resolve_laye­rs(interpreter * 0x008230fc, const char * 0x00000000,
const char * 0x280b3b74 `string', int 1, sv * * 0x0012db64) line 1493 +
6 bytes
PerlIO_openn(interp­reter * 0x009a4084, const char * 0x00000000, const
char * 0x280b3b74 `string', int -1, int 0, int 0, _PerlIO * *
0x00000000, int 1, sv * * 0x0012db64) line 1575 + 20 bytes
PerlIO_open(const char * 0x0082316c, const char * 0x280b3b74 `string')
line 5004 + 21 bytes
S_open_script(inter­preter * 0x009a4084, const char * 0x0082316c, char 0,
sv * 0x009a6adc, int * 0x0012dbec, _PerlIO * * * 0x0012dbc4) line 3705 +
11 bytes
S_parse_body(interp­reter * 0xffffffff, char * * 0x00000000, void
(interpreter *)* 0x10026750 mod_perl_xs_init(in­terpreter *)) line 2056
perl_parse(interpre­ter * 0x009a4084, void (interpreter *)* 0x10026750
mod_perl_xs_init(in­terpreter *), int 4, char * * 0x0012dd2c, char * *
0x00000000) line 1651
perl_startup(server­_rec * 0x003f8e88, pool * 0x003f8e60) line 704 + 27
bytes
perl_cmd_require(cm­d_parms * 0x0012fe34, void * 0x003fa8f8, char *
0x003faa88) line 621 + 28 bytes
invoke_cmd(const command_struct * 0x10094c20, cmd_parms * 0x0012fe34,
void * 0x003fa8f8, const char * 0x0012de30) line 877 + 6 bytes
ap_handle_command(c­md_parms * 0x009a0108, void * 0x003f9a28, const char
* 0x0012de24) line 989
ap_srm_command_loop­(cmd_parms * 0x0012fe34, void * 0x003f9a28) line 1003
ap_process_resource­_config(server_rec * 0x003f8e88, char * 0x6ffae000
_ap_server_confname­, pool * 0x003f8e60, pool * 0x009a0058) line 1294 +
13 bytes
ap_read_config(pool­ * 0x003f8e60, pool * 0x009a0058, char * 0x6ffae000
_ap_server_confname­) line 1579
apache_main(int 6, char * * 0x00820110) line 7880 + 23 bytes
main(int 6, char * * 0x00820110) line 33 + 13 bytes
APACHE! mainCRTStartup + 227 bytes
KERNEL32! 7c816d4f()
Philippe M. Chiasson wrote:
The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is ready.
It can be downloaded here:
MD5: ba12ce36c4c738bccfa­93ab646a6824c
SHA1: 2de6ce29f44505cfdca­34b7aa6499d961c72953­b
Please give it a spin in your favorite configuration and report
any problems. Especially needed against Perl-5.10.
The summary of what has changed since 1.30 are (from Changes):
Fix potential segfault when the environment contains
NULL values [Mike Schilli]
Fix static APACI build against newer apache-1.3.38+
[Gozer]
Fixed modules/regex.t test 4 on Win32
[Steve Hay]
Avoid possible segfault when PerlFreshRestart is On.
[Michael Rendell <michael@cs.mun.ca>]
Prevent segfault when running with perl >= 5.9.3
[Steve Hay]
Fix shared libary extensions on Win32 to be .dll not .so
[Nikolay Ananiev <ananiev@thegdb.com>]
Patch to mod_perl.dsp to remove /D _WINSOCK2API_ on Win32
for perl >= 5.8.6 [Steve Hay]
Add comment
Randy Kobes 3 April 2008 05:37:59 permanent link ]
 On Wed, 2 Apr 2008, Issac Goldstand wrote:

Philippe M. Chiasson wrote:
The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is ready. It
can be downloaded here:
[ ... ]
win32 vc6 FAIL
Sorry folks, still segfaulting. Backtrace below:

I also get this crash on startup on Win32:
perl-5.10.0 (ActivePerl 1002), Apache/1.3.34
However, given that

- it works with perl-5.8 (ActivePerl 822), where
all tests pass

- most likely mod_perl-2 is used by most
Windows users by now

- as Steve Hay found, it's something to
do with the particular compile-time settings used by
ActivePerl

- this looks like it may take some time to track
down

I again don't want to hold this up, unless there's a
strong objection, so take this as a +1; we could put a
note in the README saying that it doesn't work yet
on perl-5.10 ActivePerl.

--
best regards,
Randy
Add comment
Issac Goldstand 3 April 2008 10:46:33 permanent link ]
 


Randy Kobes wrote:
On Wed, 2 Apr 2008, Issac Goldstand wrote:
Philippe M. Chiasson wrote:
The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is
ready. It can be downloaded here:
[ ... ]
win32 vc6 FAIL
Sorry folks, still segfaulting. Backtrace below:
I also get this crash on startup on Win32:
perl-5.10.0 (ActivePerl 1002), Apache/1.3.34
However, given that
- it works with perl-5.8 (ActivePerl 822), where all tests pass
- most likely mod_perl-2 is used by most Windows users by now
- as Steve Hay found, it's something to do with the particular
compile-time settings used by ActivePerl
- this looks like it may take some time to track down
I again don't want to hold this up, unless there's a
strong objection, so take this as a +1; we could put a
note in the README saying that it doesn't work yet
on perl-5.10 ActivePerl.

+1 FWIW

I need to test the 2.04 RC - somehow I missed the original notice, and
only now noticed Randy's +1 :)­

Issac
Add comment
Issac Goldstand 3 April 2008 11:02:54 permanent link ]
 

Randy Kobes wrote:
On Wed, 2 Apr 2008, Issac Goldstand wrote:
Philippe M. Chiasson wrote:
The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is
ready. It can be downloaded here:
[ ... ]
win32 vc6 FAIL
Sorry folks, still segfaulting. Backtrace below:
I also get this crash on startup on Win32:
perl-5.10.0 (ActivePerl 1002), Apache/1.3.34
However, given that
- it works with perl-5.8 (ActivePerl 822), where all tests pass
- most likely mod_perl-2 is used by most Windows users by now
- as Steve Hay found, it's something to do with the particular
compile-time settings used by ActivePerl
- this looks like it may take some time to track down
I again don't want to hold this up, unless there's a
strong objection, so take this as a +1; we could put a
note in the README saying that it doesn't work yet
on perl-5.10 ActivePerl.

If someone could whip it up fast, maybe detect AP-1002 in Makefile.PL
and abort?
Add comment
Steve Hay 4 April 2008 17:28:21 permanent link ]
 Philippe M. Chiasson wrote:
The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is
ready. It can be downloaded here:

All tests OK using VC6 on WinXP with apache 1.3.39 and perl 5.10.0 built
without USE_MULTI, USE_ITHREADS or USE_IMP_SYS.

Crashes on startup with apache 1.3.41 and perl 5.10.0 built with default
options (i.e. with USE_MULTI, USE_ITHREADS or USE_IMP_SYS).
Add comment
David E . Wheeler 14 April 2008 23:42:37 permanent link ]
 On Apr 2, 2008, at 10:21, David E. Wheeler wrote:

benedict# make
(cd ./apaci && PERL5LIB=/usr/local­/src/mod_perl-1.31-r­c4/lib: make)
make[1]: *** No rule to make target `libperl.so', needed by `lib'.
Stop.
make: *** [apxs_libperl] Error 2
This is on Mac OS X 10.5.2 with Perl 5.10 compiled like so:
sh Configure -des -Duseshrplib -Dperladmin=david@k­ineticode.com -Dcf_email=david@ki­neticode.com
make
make test
make install
*sigh*. I hope this is something simple.

Anyone have any ideas on this? I'm attempting to compile mod_perl as a
DSO outside of the Apache source tree using APXS. There must just be a
typo or something somewhere, yes? I mean, this worked for me before…

Thanks,

David
Add comment
Philippe M. Chiasson 17 April 2008 12:33:51 permanent link ]
 David E. Wheeler wrote:
On Apr 2, 2008, at 10:21, David E. Wheeler wrote:
benedict# make
(cd ./apaci && PERL5LIB=/usr/local­/src/mod_perl-1.31-r­c4/lib: make)
make[1]: *** No rule to make target `libperl.so', needed by `lib'.
Stop.
make: *** [apxs_libperl] Error 2
This is on Mac OS X 10.5.2 with Perl 5.10 compiled like so:
sh Configure -des -Duseshrplib -Dperladmin=david@k­ineticode.com -Dcf_email=david@ki­neticode.com
make
make test
make install
*sigh*. I hope this is something simple.

Yes, apache on OSX picks '.so' as the dynamic library extensions.
Perl, on the other hand, picks '.bundle'

Anyone have any ideas on this? I'm attempting to compile mod_perl as a
DSO outside of the Apache source tree using APXS. There must just be a
typo or something somewhere, yes? I mean, this worked for me before

So you end up with a Makefile that goes like

all: libperl.so (thank you Apache)

libperl.bundle: (thank you Perl/OSX)

Try with:

$> make PERL_DLEXT=so

--
Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectopl­asm.org/ m/gozer\@(apache|cp­an|ectoplasm)\.org/

Add comment
David E. Wheeler 17 April 2008 22:19:34 permanent link ]
 On Apr 17, 2008, at 01:33, Philippe M. Chiasson wrote:

So you end up with a Makefile that goes like
all: libperl.so (thank you Apache)
libperl.bundle: (thank you Perl/OSX)
Try with:
$> make PERL_DLEXT=so

Yes, that works. I wonder why I didn't have to do it before? Is this
something that can be worked around?

The test suite didn't run for me, though. :-(­

benedict# make test
(cd ./apaci && PERL5LIB=/usr/local­/src/mod_perl-1.31-r­c4/lib: make)
make[1]: Nothing to be done for `all'.
cp t/conf/mod_perl_srm­.conf t/conf/srm.conf
./apaci/load_module­s.pl
/httpd -f `pwd`/t/conf/httpd.­conf -X -d `pwd`/t &
httpd listening on port 8529
will write error_log to: t/logs/error_log
/bin/sh: /httpd: No such file or directory
letting apache warm up...done
/usr/local/bin/perl­ t/TEST 0
still waiting for server to warm up...............no­t ok
server failed to start! (please examine t/logs/error_log) at t/TEST
line 95.
make: *** [run_tests] Error 61

Best,

David
Add comment
Philippe M. Chiasson 18 April 2008 00:31:14 permanent link ]
 David E. Wheeler wrote:
On Apr 17, 2008, at 01:33, Philippe M. Chiasson wrote:
So you end up with a Makefile that goes like
all: libperl.so (thank you Apache)
libperl.bundle: (thank you Perl/OSX)
Try with:
$> make PERL_DLEXT=so
Yes, that works. I wonder why I didn't have to do it before? Is this
something that can be worked around?

This is an unexpected side effect of another fix, for static builds.

The test suite didn't run for me, though. :-(­

Correct me if I am wrong, but runnign the mp1 test suite as DSO isn't
really supported. Needs fixing, but that would take Apache::Test, not
something I am looking forward doing (I believe there is a patch on that
somewhere in the archive from me, but it needed more work)

--
Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectopl­asm.org/ m/gozer\@(apache|cp­an|ectoplasm)\.org/

Add comment
David E. Wheeler 18 April 2008 00:38:19 permanent link ]
 On Apr 17, 2008, at 13:31, Philippe M. Chiasson wrote:

Yes, that works. I wonder why I didn't have to do it before? Is
this something that can be worked around?
This is an unexpected side effect of another fix, for static builds.

So is that a yes or a no? :-)­

The test suite didn't run for me, though. :-(­
Correct me if I am wrong, but runnign the mp1 test suite as DSO isn't
really supported. Needs fixing, but that would take Apache::Test, not
something I am looking forward doing (I believe there is a patch on
that
somewhere in the archive from me, but it needed more work)

Okay. I was never too worried bout mod_perl 1 tests, anyway, was just
trying to provide them for feedback here. They all passed when I used
a static build.

Best,

David
Add comment
Philippe M. Chiasson 21 April 2008 11:58:19 permanent link ]
 Steve Hay wrote:
Philippe M. Chiasson wrote:
The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is
ready. It can be downloaded here:
All tests OK using VC6 on WinXP with apache 1.3.39 and perl 5.10.0 built
without USE_MULTI, USE_ITHREADS or USE_IMP_SYS.
Crashes on startup with apache 1.3.41 and perl 5.10.0 built with default
options (i.e. with USE_MULTI, USE_ITHREADS or USE_IMP_SYS).

Any chance to try and narrow it down a little bit more between these 3?

I've finally managed to reproduce this crash myself. I've had to bite the
bullet and get myself a Win32 VM I can actually build all this stuff under.

Haven't managed to get a usefull debugging session running yet. Can't
seem to get VC6 to pick up/display debugging symbols. Any hits from folks
here with stronger win-foo than me ?

--
Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectopl­asm.org/ m/gozer\@(apache|cp­an|ectoplasm)\.org/

Add comment
Steve Hay 22 April 2008 14:55:51 permanent link ]
 Philippe M. Chiasson wrote:
Steve Hay wrote:
Philippe M. Chiasson wrote:
The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is
ready. It can be downloaded here:
All tests OK using VC6 on WinXP with apache 1.3.39 and perl 5.10.0
built without USE_MULTI, USE_ITHREADS or USE_IMP_SYS.
Crashes on startup with apache 1.3.41 and perl 5.10.0 built with
default options (i.e. with USE_MULTI, USE_ITHREADS or USE_IMP_SYS).
Any chance to try and narrow it down a little bit more between these
3?

I tried with USE_MULTI + USE_ITHREADS but no USE_IMP_SYS and it still
crashes, so it must be USE_ITHREADS that is doing it. (USE_MULTI is a
pre-requisite for USE_ITHREADS, so I can't try without that, and I've a
feeling that USE_MULTI on its own is useless and might not even build.)

So basically, mp1 crashes with ithreaded builds of perl.


I've finally managed to reproduce this crash myself. I've had to bite
the bullet and get myself a Win32 VM I can actually build all this
stuff under.

:-)­


Haven't managed to get a usefull debugging session running yet. Can't
seem to get VC6 to pick up/display debugging symbols. Any hits from
folks here with stronger win-foo than me ?

Obviously you need to build Apache and Perl in a debug configuration (I
assume you've figured out how to do that--I use src\makefile.win with
the "installd" option for Apache, and win32\Makefile with CFG=Debug for
Perl). Building Perl modules should then pick up the fact that Perl is
built in a debug configuration and build the modules likewise. This
works in general for ExtUtils-MakeMaker (and Module-Build) modules, and
hence for the Apache::* modules, but the mod_perl.so build doesn't seem
to pick up on it. Thus, the end of my mod_perl build goes like this:

msdev src\modules\win32\m­od_perl.dsp /MAKE "mod_perl - Win32
Release" /USEENV
-------------------­-Configuration: mod_perl - Win32
Release------------­--------
Compiling...
Apache.c
Connection.c
Constants.c
File.c
Log.c
ModuleConfig.c
ModuleConfig.xs(72)­ : warning C4715: 'vector_from_sv' : not all control
paths return a value
mod_perl.c
mod_perl_opmask.c
perl_config.c
perl_util.c
perlio.c
perlxsi.c
Server.c
Table.c
URI.c
Util.c
Linking...
Creating library Release/mod_perl.li­b and object Release/mod_perl.ex­p

mod_perl.so - 0 error(s), 1 warning(s)

Notice the "Win32 Release" configuration there. So you need to rebuild
mod_perl.so in debug mode after running the initial "nmake". You can do
so by running the following command (from the top-level directory):

msdev src\modules\win32\m­od_perl.dsp /MAKE "mod_perl - Win32 Debug"

That spits out a load of warnings on my system which the release mode
build didn't do, but does create a debug build mod_perl.so.

After that you need to run "nmake test" to get a httpd.conf created in
t/conf. That also copies the *release build* mod_perl.so from
src\modules\win32\R­elease into t\modules, so afterwards you need to
overwrite it with the *debug build* version from
src\modules\win32\D­ebug.

Then you're ready to debug Apache.exe. I normally start up Dev Studio
from the Command Prompt in which I've built everything so that the PATH
already includes perl\bin and apache. Open a Workspace and browse for
Apache.exe. Then go into Project > Settings, "Debug" tab and set the
"Working directory" to the path of your mod_perl source folder and the
"Program arguments" to specify the path to the httpd.conf file that was
created by "nmake test" earlier, e.g.:

"-f C:\Temp\mod_perl-1.­31-rc4\t\conf\httpd.­conf"

You'll also need to select "Additional DLLs" from the "Category"
drop-down and add both perl510.dll (or whatever version you're using)
and mod_perl.so to the list, otherwise VC6 doesn't pick up symbols from
DLLs! (VC8 onwards does automatically pick up DLLs as/when they're
loaded.)

Hope that helps!

Below is the stacktrace that I get when it crashes (using perl-5.10.0).
PerlIOUnix_setfd() is calling PerlIOUnix_refcnt_i­nc(fd) with fd 0.
Simply put a breakpoint on line 2548 in perlio.c and it crashes the
first time it hits it. Stepping inside PerlIOUnix_refcnt_i­nc() I find
that it reaches the line

MUTEX_LOCK(&PL_perl­io_mutex);

(which is only present in the USE_ITHREADS case) and crashes there.
PL_perlio_mutex itself is a valid struct, but all its members are 0 or
0x00000000. I don't know if that's normal.

On Win32, MUTEX_LOCK(m) seems to be #defined as EnterCriticalSectio­n(m)
(in win32\win32thread.h­, given that DONT_USE_CRITICAL_S­ECTION is never
#defined anywhere). Hmm. The comment there says "Critical Sections used
instead of mutexes: lightweight, but can't be communicated to child
processes ...". I wonder if the other case in that #ifndef might be
worth trying, although that wouldn't be the default build option so we
shouldn't need to do that... Perhaps Jan can assist here?


NTDLL! 7c918fea()
NTDLL! 7c90104b()
PerlIOUnix_setfd(in­terpreter * 0x003f6e88, _PerlIO * * 0x00823594, int
0, int 0) line 2548 + 9 bytes
PerlIOUnix_open(int­erpreter * 0x003f6e88, _PerlIO_funcs * 0x281f9988
_PerlIO_unix, PerlIO_list_s * 0x008237e0, long 0, const char *
0x281eb39d, int 0, int 0, int 0, _PerlIO * * 0x00823594, int 0, sv * *
0x00000000) line 2625 + 21 bytes
PerlIOBuf_open(inte­rpreter * 0x003f6e88, _PerlIO_funcs * 0x281f9b48
_PerlIO_crlf, PerlIO_list_s * 0x008237e0, long 1, const char *
0x281eb39c `string', int 0, int 0, int 0, _PerlIO * * 0x00000000, int 0,
sv * * 0x00000000) line 3685 + 53 bytes
PerlIO_openn(interp­reter * 0x003f6e88, const char * 0x00000000, const
char * 0x281eb39c `string', int 0, int 0, int 0, _PerlIO * * 0x00000000,
int 0, sv * * 0x00000000) line 1597 + 50 bytes
PerlIO_fdopen(int 0, const char * 0x281eb39c `string') line 4988 + 29
bytes
PerlIO_stdstreams(i­nterpreter * 0x003f6e88) line 1204 + 12 bytes
PerlIO_resolve_laye­rs(interpreter * 0x003f6e88, const char * 0x00000000,
const char * 0x281d43ac `string', int 1, sv * * 0x0012dabc) line 1486 +
9 bytes
PerlIO_openn(interp­reter * 0x003f6e88, const char * 0x00000000, const
char * 0x281d43ac `string', int -1, int 0, int 0, _PerlIO * *
0x00000000, int 1, sv * * 0x0012dabc) line 1568 + 25 bytes
PerlIO_open(const char * 0x00823930, const char * 0x281d43ac `string')
line 4997 + 29 bytes
S_open_script(inter­preter * 0x003f6e88, const char * 0x00823930, char 0,
sv * 0x003fb920, int * 0x0012db4c, _PerlIO * * * 0x0012dba0) line 3704 +
14 bytes
S_parse_body(interp­reter * 0x003f6e88, char * * 0x00000000, void
(interpreter *)* 0x10026810 mod_perl_xs_init(in­terpreter *)) line 2053 +
29 bytes
perl_parse(interpre­ter * 0x003f6e88, void (interpreter *)* 0x10026810
mod_perl_xs_init(in­terpreter *), int 4, char * * 0x0012dd0c, char * *
0x00000000) line 1650 + 17 bytes
perl_startup(server­_rec * 0x009a7040, pool * 0x009a7018) line 704 + 27
bytes
perl_cmd_require(cm­d_parms * 0x0012fe78, void * 0x009a8ae8, char *
0x009a8c78) line 621 + 28 bytes
invoke_cmd(const command_struct * 0x10097c20, cmd_parms * 0x0012fe78,
void * 0x009a8ae8, const char * 0x0012de30) line 877 + 18 bytes
ap_handle_command(c­md_parms * 0x0012fe78, void * 0x009a7be0, const char
* 0x0012de18) line 988 + 21 bytes
ap_srm_command_loop­(cmd_parms * 0x0012fe78, void * 0x009a7be0) line 1002
+ 20 bytes
ap_process_resource­_config(server_rec * 0x009a7040, char * 0x009a8768,
pool * 0x009a7018, pool * 0x009ab0c8) line 1294 + 16 bytes
ap_read_config(pool­ * 0x009a7018, pool * 0x009ab0c8, char * 0x6ffc76c0
_ap_server_confname­) line 1579
apache_main(int 3, char * * 0x009a2698) line 7880 + 24 bytes
main(int 3, char * * 0x009a2698) line 33 + 13 bytes
mainCRTStartup() line 338 + 17 bytes
KERNEL32! 7c816fd7()
Add comment
Steve Hay 22 April 2008 15:40:32 permanent link ]
 Steve Hay wrote:
[...]
Thus, the end of my mod_perl build goes like this:
msdev src\modules\win32\m­od_perl.dsp /MAKE "mod_perl - Win32
Release" /USEENV
-------------------­-Configuration: mod_perl - Win32
Release------------­--------
Compiling...
Apache.c
Connection.c
Constants.c
File.c
Log.c
ModuleConfig.c
ModuleConfig.xs(72)­ : warning C4715: 'vector_from_sv' : not all
control paths return a value
mod_perl.c
mod_perl_opmask.c
perl_config.c
perl_util.c
perlio.c
perlxsi.c
Server.c
Table.c
URI.c
Util.c
Linking...
Creating library Release/mod_perl.li­b and object
Release/mod_perl.ex­p
mod_perl.so - 0 error(s), 1 warning(s)
Notice the "Win32 Release" configuration there. So you need to rebuild
mod_perl.so in debug mode after running the initial "nmake". You can
do so by running the following command (from the top-level directory):
msdev src\modules\win32\m­od_perl.dsp /MAKE "mod_perl - Win32 Debug"

Oops! I missed the " /USEENV" off the end of that command-line. You need
that too, as per the original command-line shown above.


[...]
PerlIOUnix_setfd() is calling PerlIOUnix_refcnt_i­nc(fd)
with fd 0. Simply put a breakpoint on line 2548 in perlio.c and it
crashes the first time it hits it. Stepping inside
PerlIOUnix_refcnt_i­nc() I find that it reaches the line
MUTEX_LOCK(&PL_perl­io_mutex);
(which is only present in the USE_ITHREADS case) and crashes there.
PL_perlio_mutex itself is a valid struct, but all its members are 0 or
0x00000000. I don't know if that's normal.
On Win32, MUTEX_LOCK(m) seems to be #defined as
EnterCriticalSectio­n(m) (in win32\win32thread.h­, given that
DONT_USE_CRITICAL_S­ECTION is never #defined anywhere). Hmm. The
comment there says "Critical Sections used instead of mutexes:
lightweight, but can't be communicated to child processes ...". I
wonder if the other case in that #ifndef might be worth trying,
although that wouldn't be the default build option so we shouldn't
need to do that... Perhaps Jan can assist here?

I tried a build with DONT_USE_CRITICAL_S­ECTION defined, but it behaves
exactly the same except that the other #definition of MUTEX_LOCK(m) is
now used, namely:

# define MUTEX_LOCK(m) \
STMT_START { \
if (WaitForSingleObjec­t(*(m),INFINITE) == WAIT_FAILED) \
Perl_croak_nocontex­t("panic: MUTEX_LOCK"); \
} STMT_END

so I get a "panic: MUTEX_LOCK" error instead of the crash! Or at least,
that's the string shown in "pat" in Perl_croak_nocontex­t() by the
debugger, but the console output actually says:

parse: Bad file descriptor

I'm not sure if that's any kind of clue.
Add comment
Steve Hay 20 November 2008 21:24:22 permanent link ]
 Steve Hay wrote:
Philippe M. Chiasson wrote:
Steve Hay wrote:
Philippe M. Chiasson wrote:
The mod_perl 1.31 release candidate 4 "Works with Perl 5.10" is
ready. It can be downloaded here:
All tests OK using VC6 on WinXP with apache 1.3.39 and perl 5.10.0
built without USE_MULTI, USE_ITHREADS or USE_IMP_SYS.
Crashes on startup with apache 1.3.41 and perl 5.10.0 built with
default options (i.e. with USE_MULTI, USE_ITHREADS or USE_IMP_SYS).
Any chance to try and narrow it down a little bit more between these
3?
I tried with USE_MULTI + USE_ITHREADS but no USE_IMP_SYS and it still
crashes, so it must be USE_ITHREADS that is doing it. (USE_MULTI is a
pre-requisite for USE_ITHREADS, so I can't try without that, and I've
a feeling that USE_MULTI on its own is useless and might not even
build.)
So basically, mp1 crashes with ithreaded builds of perl.

This is hopefully now fixed with r719313. Sorry it took so long!!! [I
haven't been working on it all that time ;-)­]

Can some other people please give it a whirl, and if it looks good then
perhaps we can have an RC5?

See also r719315, which fixes a problem I found building libapreq1.
Add comment
 

Add new comment

As:
Login:  Password:  
 
 
  
 
Пожалуйста, относитесь к собеседникам уважительно, не используйте нецензурные слова, не злоупотребляйте заглавными буквами, не публикуйте рекламу и объявления о купле/продаже, а также материалы нарушающие сетевой этикет или УК РФ.


QAIX > Apache HTTP Server > [RELEASE CANDIDATE] mod_perl-1.31 RC4 20 November 2008 21:24:22

see also:
AW: Lucene Search - How to create a…
[magnolia-user] Different Link-Styles
Apache and Tomcat Integration
пройди тесты:
see also:
How to convert files from iTunes Music…
MelodyCan Ultra Video v. 3.4.5
MelodyCan feature list

  Copyright © 2001—2008 QAIX
Idea: Miсhael Monashev
Помощь и задать вопросы можно в сообществе support.qaix.com.
Сообщения об ошибках оставляем в сообществе bugs.qaix.com.
Предложения и комментарии пишем в сообществе suggest.qaix.com.
Информация для родителей.
Write us at:
If you would like to report an abuse of our service, such as a spam message, please .