You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by pascal barbedor <pa...@laposte.net> on 2002/08/15 08:36:57 UTC

DBI make apache fail in perl58.dll

Hi 

the following startup.pl
makes apache segfault in perl58.dll on windows XP(or 2000)

version are : 
apache 2.0.40-dev
perl 5.8.0
modperl 1.99
mysqld-nt 3.23.49

DBI 1.30
DBD::Mysql 2.1017

from perl 5.8-win32-bin.tar.gz ready-to-use RK archive (date 25/07/02) in theoryx5.uwinnipeg.ca/public/other

here is the startup (only added lines after #added, everything works fine without):



use Apache2 ();
use ModPerl::Util ();
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::RequestUtil ();
use Apache::Server ();
use Apache::ServerUtil ();
use Apache::Connection ();
use Apache::Log ();
use Apache::Const -compile => ':common';
use APR::Const -compile => ':common';
use APR::Table ();
use Apache::compat ();
use ModPerl::Registry ();
use CGI ();

#added

use DBI();
use DBD::Mysql();

1;



- apache fails the same if use DBI() line alone or use DBD::Mysql() line alone
- same from a registry script


use DBI();
use DBD::Mysql();

does not fail from a regularly perl script outside apache


thanks
pascal

Re: DBI make apache fail in perl58.dll

Posted by Stas Bekman <st...@stason.org>.
pascal barbedor wrote:
> SharedUserData!SystemCallStub+0x4
> ntdll!ZwTerminateProcess+0xc
> kernel32!_ExitProcess+0x57
> kernel32!ExitProcess+0x11
> msvcrt!__crtExitProcess+0x2f
> msvcrt!_cinit+0xe4
> msvcrt!exit+0xe
> WARNING: Stack unwind information not available. Following frames may be
> wrong.
> perl58!Perl_Tregnarrate_ptr+0x14809d
> perl58!Perl_Tregnarrate_ptr+0x57255
> perl58!Perl_Tregnarrate_ptr+0x56ef8
> perl58!Perl_Tregnarrate_ptr+0x13fc84
> perl58!Perl_Tregnarrate_ptr+0x13fcd9
> perl58!Perl_Tregnarrate_ptr+0xfeb7a
> perl58!Perl_Tregnarrate_ptr+0xfe465
> DBI!XS_DBI__clone_dbis+0x27b
> DBI!XS_DBI__clone_dbis+0x100
> perl58!Perl_Tregnarrate_ptr+0x96df8
> perl58!Perl_Tregnarrate_ptr+0x17de8
> perl58!Perl_Tregnarrate_ptr+0x52c21
> perl58!Perl_Tregnarrate_ptr+0x5237c
> 
> 
> I am affraid it's the best I can do, it's very hard to compile debug on
> win32
> 
> I have seemingly compiled perl58 DEBUG (there was a complain about missing
> vc60.pdb, and I supplied one I found )
> 
> I cannot compile debug either modperl1-99_04 either _05 against my debug
> perl.
> 
> so I just copied from perl/site/lib everything concerning modperl into the
> perldebug site/lib tree
> (don't know if this is liable)
> 
> I also properly installed DBI-1.30 in the perldebug site/lib tree
> 
> then I ran apache in windbg  and got this stacktrace
> 
> also here is the last loading modules sequence inside apache
> 
> ModLoad: 6fbf0000 6fbf6000 C:\Apache2\modules\mod_userdir.so
> ModLoad: 28000000 281a3000 C:\perld\bin\perl58.dll
> ModLoad: 10000000 10010000 C:\Apache2\modules\mod_perl.so
> ModLoad: 71a90000 71a98000 C:\WINDOWS\System32\wshtcpip.dll
> ModLoad: 00360000 00383000 C:\perld\site\lib\auto\DBI\DBI.dll
> ModLoad: 00390000 00399000
> C:\perld\site\lib\auto\Apache\RequestRec\RequestRec.dll
> ModLoad: 003a0000 003a6000
> C:\perld\site\lib\auto\Apache\RequestIO\RequestIO.dll
> ModLoad: 003b0000 003b8000 C:\perld\site\lib\auto\ModPerl\Const\Const.dll
> ModLoad: 003c0000 003c5000 C:\perld\site\lib\auto\Apache\Const\Const.dll
> -->error at this point
> since it is past DBI.dll , maybe this is because I copied incompatible
> modperl to perld site/lib tree.
> 
> hope this can help

I don't think this has anything to do with loading dlls. It definitely 
happens when DBI gets loaded. May be DBI-1.30 still needs work, as it 
seems to work on linux, but not on windows. Have you considered asking 
on the dbi-users list? including posting the traces there?


__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


Re: DBI make apache fail in perl58.dll

Posted by pascal barbedor <pa...@laposte.net>.
SharedUserData!SystemCallStub+0x4
ntdll!ZwTerminateProcess+0xc
kernel32!_ExitProcess+0x57
kernel32!ExitProcess+0x11
msvcrt!__crtExitProcess+0x2f
msvcrt!_cinit+0xe4
msvcrt!exit+0xe
WARNING: Stack unwind information not available. Following frames may be
wrong.
perl58!Perl_Tregnarrate_ptr+0x14809d
perl58!Perl_Tregnarrate_ptr+0x57255
perl58!Perl_Tregnarrate_ptr+0x56ef8
perl58!Perl_Tregnarrate_ptr+0x13fc84
perl58!Perl_Tregnarrate_ptr+0x13fcd9
perl58!Perl_Tregnarrate_ptr+0xfeb7a
perl58!Perl_Tregnarrate_ptr+0xfe465
DBI!XS_DBI__clone_dbis+0x27b
DBI!XS_DBI__clone_dbis+0x100
perl58!Perl_Tregnarrate_ptr+0x96df8
perl58!Perl_Tregnarrate_ptr+0x17de8
perl58!Perl_Tregnarrate_ptr+0x52c21
perl58!Perl_Tregnarrate_ptr+0x5237c


I am affraid it's the best I can do, it's very hard to compile debug on
win32

I have seemingly compiled perl58 DEBUG (there was a complain about missing
vc60.pdb, and I supplied one I found )

I cannot compile debug either modperl1-99_04 either _05 against my debug
perl.

so I just copied from perl/site/lib everything concerning modperl into the
perldebug site/lib tree
(don't know if this is liable)

I also properly installed DBI-1.30 in the perldebug site/lib tree

then I ran apache in windbg  and got this stacktrace

also here is the last loading modules sequence inside apache

ModLoad: 6fbf0000 6fbf6000 C:\Apache2\modules\mod_userdir.so
ModLoad: 28000000 281a3000 C:\perld\bin\perl58.dll
ModLoad: 10000000 10010000 C:\Apache2\modules\mod_perl.so
ModLoad: 71a90000 71a98000 C:\WINDOWS\System32\wshtcpip.dll
ModLoad: 00360000 00383000 C:\perld\site\lib\auto\DBI\DBI.dll
ModLoad: 00390000 00399000
C:\perld\site\lib\auto\Apache\RequestRec\RequestRec.dll
ModLoad: 003a0000 003a6000
C:\perld\site\lib\auto\Apache\RequestIO\RequestIO.dll
ModLoad: 003b0000 003b8000 C:\perld\site\lib\auto\ModPerl\Const\Const.dll
ModLoad: 003c0000 003c5000 C:\perld\site\lib\auto\Apache\Const\Const.dll
-->error at this point
since it is past DBI.dll , maybe this is because I copied incompatible
modperl to perld site/lib tree.

hope this can help


pascal


Re: DBI make apache fail in perl58.dll

Posted by Stas Bekman <st...@stason.org>.
pascal barbedor wrote:
>>>PERL58! 280681d9() <-- error here access violation
>>>DBI! 003970b6()
>>>PERL58! 2803f289()
>>>PERL58! 2805cf4c()
>>>PERL58! 2806b821()
>>>PERL58! 2808596f()
>>>MOD_PERL! 100018b7()
>>>LIBHTTPD! 6ff012a6()
>>
> 
> Hi here is maybe more informative stack trace
> 
> WARNING: Stack unwind information not available. Following frames may be
> wrong.
> perl58!Perl_ptr_table_fetch+0x8
> DBI+0x70b6
> perl58!Perl_sv_compile_2op+0x76ca
> perl58!Perl_runops_standard+0xc
> perl58!perl_clone_using+0x1eac
> perl58!perl_clone_host+0x6d
> mod_perl!modperl_interp_new+0x39
> libhttpd!ap_run_post_config+0x36

that's a weird trace. it's still incomplete, but getting better.

One things missing is 'DBI+0x70b6'. Can you now rebuild DBI? It should 
pick the debug flags from perl (which you've apparently just rebuilt).

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


Re: DBI make apache fail in perl58.dll

Posted by pascal barbedor <pa...@laposte.net>.
> >
> > PERL58! 280681d9() <-- error here access violation
> > DBI! 003970b6()
> > PERL58! 2803f289()
> > PERL58! 2805cf4c()
> > PERL58! 2806b821()
> > PERL58! 2808596f()
> > MOD_PERL! 100018b7()
> > LIBHTTPD! 6ff012a6()
>

Hi here is maybe more informative stack trace

WARNING: Stack unwind information not available. Following frames may be
wrong.
perl58!Perl_ptr_table_fetch+0x8
DBI+0x70b6
perl58!Perl_sv_compile_2op+0x76ca
perl58!Perl_runops_standard+0xc
perl58!perl_clone_using+0x1eac
perl58!perl_clone_host+0x6d
mod_perl!modperl_interp_new+0x39
libhttpd!ap_run_post_config+0x36


pascal


Re: DBI make apache fail in perl58.dll

Posted by Stas Bekman <st...@stason.org>.
pascal barbedor wrote:
>>Can you retrieve a backtrace from the core file? The version that I was 
>>using before 1.30 (I think it was 1.29) was blowing so badly that it was 
>>leaving no stack.
> 
> 
> this is the only uninformative stack i have, having no debug version.
> I am trying to build one...
> 
> PERL58! 280681d9() <-- error here access violation
> DBI! 003970b6()
> PERL58! 2803f289()
> PERL58! 2805cf4c()
> PERL58! 2806b821()
> PERL58! 2808596f()
> MOD_PERL! 100018b7()
> LIBHTTPD! 6ff012a6()

you realize that this stack is not very useful ;) you need to rebuild 
perl with debug enabled and then you will get all the symbols. see:
http://perl.apache.org/docs/2.0/user/help/help.html#Resolving_Segmentation_Faults


__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


Re: DBI make apache fail in perl58.dll

Posted by pascal barbedor <pa...@laposte.net>.
> 
> Can you retrieve a backtrace from the core file? The version that I was 
> using before 1.30 (I think it was 1.29) was blowing so badly that it was 
> leaving no stack.

this is the only uninformative stack i have, having no debug version.
I am trying to build one...

PERL58! 280681d9() <-- error here access violation
DBI! 003970b6()
PERL58! 2803f289()
PERL58! 2805cf4c()
PERL58! 2806b821()
PERL58! 2808596f()
MOD_PERL! 100018b7()
LIBHTTPD! 6ff012a6()

pascal


Re: DBI make apache fail in perl58.dll

Posted by Stas Bekman <st...@stason.org>.
pascal barbedor wrote:
>>same here. segfault in startup.pl.
>>not sure what version it was, but < 1.30
>>
>>installed DBI 1.30. no more segfault.
> 
> 
> 
> segfault for me on win XP with DBI 1.30 if DBI is used in the startup.pl
> (apache 2.0.40 modperl 1.99_05 perl 5.8)
> 
> I reinstalled DBI 1.30 from CPAN just in case, installs and tests ok,
> but the same error occurs on apache (in perl58.dll.) if module used in
> startup.pl
> and no error if use DBI from a registry script (PerlResponseHandler
> ModPerl::Registry)

My working case is on linux, perl 5.8 with ithreads enabled, the rest is 
the same.

Can you retrieve a backtrace from the core file? The version that I was 
using before 1.30 (I think it was 1.29) was blowing so badly that it was 
leaving no stack.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


Re: DBI make apache fail in perl58.dll

Posted by Randy Kobes <ra...@theoryx5.uwinnipeg.ca>.
On Fri, 16 Aug 2002, pascal barbedor wrote:

> >
> > same here. segfault in startup.pl.
> > not sure what version it was, but < 1.30
> >
> > installed DBI 1.30. no more segfault.
> 
> 
> segfault for me on win XP with DBI 1.30 if DBI is used in the startup.pl
> (apache 2.0.40 modperl 1.99_05 perl 5.8)
> 
> I reinstalled DBI 1.30 from CPAN just in case, installs and tests ok,
> but the same error occurs on apache (in perl58.dll.) if module used in
> startup.pl
> and no error if use DBI from a registry script (PerlResponseHandler
> ModPerl::Registry)

Just to add one more data point - using DBI in a startup
script is OK for Win32 with perl-5.6.1 and apache-2.0.40.
And as with perl-5.8, it works fine in a registry script.
This is also with DBI-1.30.

-- 
best regards,
randy


Re: DBI make apache fail in perl58.dll

Posted by pascal barbedor <pa...@laposte.net>.
>
> same here. segfault in startup.pl.
> not sure what version it was, but < 1.30
>
> installed DBI 1.30. no more segfault.


segfault for me on win XP with DBI 1.30 if DBI is used in the startup.pl
(apache 2.0.40 modperl 1.99_05 perl 5.8)

I reinstalled DBI 1.30 from CPAN just in case, installs and tests ok,
but the same error occurs on apache (in perl58.dll.) if module used in
startup.pl
and no error if use DBI from a registry script (PerlResponseHandler
ModPerl::Registry)


best regards
pascal


Re: DBI make apache fail in perl58.dll

Posted by Stas Bekman <st...@stason.org>.
pascal barbedor wrote:
> 
> 
>>I find that too ... Gerald, a little while ago, mentioned in a
>>message to the dev list that latter DBIs work only if they come
>>into play after the perl interpreter has been cloned - perhaps
>>this is related to problems with using DBI in a startup script?
>>
>>
>>>- same from a registry script
>>
>>This I don't find - pulling in DBI and DBD::mysql in a registry
>>script seems to work OK in some simple mysql queries. For this
>>libmySQL.dll has to be in the PATH, which I often forget ...
>>
> 
> 
> ok from a registry script, it works for me too.
> but with the lastest snapshot apache 2.0.40/modperl 1.99_05 DBI or any
> module using DBI loaded in the startup.pl makes apache segfault.
> 
> doesn't it sounds like a real limitation ?

same here. segfault in startup.pl.
not sure what version it was, but < 1.30

installed DBI 1.30. no more segfault.



__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com


Re: DBI make apache fail in perl58.dll

Posted by pascal barbedor <pa...@laposte.net>.


> I find that too ... Gerald, a little while ago, mentioned in a
> message to the dev list that latter DBIs work only if they come
> into play after the perl interpreter has been cloned - perhaps
> this is related to problems with using DBI in a startup script?
>
> > - same from a registry script
>
> This I don't find - pulling in DBI and DBD::mysql in a registry
> script seems to work OK in some simple mysql queries. For this
> libmySQL.dll has to be in the PATH, which I often forget ...
>

ok from a registry script, it works for me too.
but with the lastest snapshot apache 2.0.40/modperl 1.99_05 DBI or any
module using DBI loaded in the startup.pl makes apache segfault.

doesn't it sounds like a real limitation ?

best regards
pascal



Re: DBI make apache fail in perl58.dll

Posted by Randy Kobes <ra...@theoryx5.uwinnipeg.ca>.
On Thu, 15 Aug 2002, pascal barbedor wrote:

> Hi 
> 
> the following startup.pl
> makes apache segfault in perl58.dll on windows XP(or 2000)
> 
> version are : 
> apache 2.0.40-dev
> perl 5.8.0
> modperl 1.99
> mysqld-nt 3.23.49
> 
> DBI 1.30
> DBD::Mysql 2.1017
> 
> from perl 5.8-win32-bin.tar.gz ready-to-use RK archive (date
> 25/07/02) in theoryx5.uwinnipeg.ca/public/other
> 
> here is the startup (only added lines after #added, everything works fine without):
> 
> use Apache2 ();
> use ModPerl::Util ();
> use Apache::RequestRec ();
> use Apache::RequestIO ();
> use Apache::RequestUtil ();
> use Apache::Server ();
> use Apache::ServerUtil ();
> use Apache::Connection ();
> use Apache::Log ();
> use Apache::Const -compile => ':common';
> use APR::Const -compile => ':common';
> use APR::Table ();
> use Apache::compat ();
> use ModPerl::Registry ();
> use CGI ();
> 
> #added
> 
> use DBI();
> use DBD::Mysql();
> 
> 1;
> 
> - apache fails the same if use DBI() line alone or use DBD::Mysql() line alone

I find that too ... Gerald, a little while ago, mentioned in a
message to the dev list that latter DBIs work only if they come
into play after the perl interpreter has been cloned - perhaps
this is related to problems with using DBI in a startup script?

> - same from a registry script

This I don't find - pulling in DBI and DBD::mysql in a registry
script seems to work OK in some simple mysql queries. For this
libmySQL.dll has to be in the PATH, which I often forget ...

It might be though that the versions you have have something
broken in this respect - I just put up a new perl-5.8/Apache-2
binary in perl-5.8-win32-bin.tar.gz at
   ftp://theoryx5.uwinnipeg.ca/pub/other/
which is compiled against apache-2.0.40 (with the recent security
fix) and the cvs modperl-2 sources. It may be worth trying this.

-- 
best regards,
randy