Re: Strange Error
[email protected] ("Jerry Kaidor")
| Newsgroups | perl.dbi.users |
|---|---|
| Message-ID | <[email protected]> |
> Yep it is something on the XS side of things.
>
> Perhaps the chap who wrote the DBD driver left in some debugging code?
*** Where would I look for it? All I see in DBD on my system is Perl.
>
> Are you doing any recursive calls or queries??
*** Not that I know of.
I tried an experiment to localize the error in time:
sub mark
{
my $string = shift;
open ( LOGFILE, ">>/var/log/httpd/error_log" );
print LOGFILE $string;
close LOGFILE;
}
Then I stuck invocations to this here and there in the code. It didn't
really work - the apache error log complained about trying to write to a
closed file - but that was good enough for me, because THAT error wound
up in the same file as my weird errors.
The way CGI::Application works, is you accumulate all the HTML you plan
to output in a perl scalar, and then return it to CGI::Application when
you're done. I put a call to mark() before the very last return to
CGI::Application, and the WEIRD ERROR IS STILL AFTER THAT. This is
interesting because at that point, my app has done ALL the DBI work,
and all that's left is for CGI::Application to pump the HTML out to the
outside world.
Of course with multi-threading and multiple processes, things may not be
happening in the order that I think....
One possibly cogent hint I found is in the DBD::mysql documentation -
you have to be sure that Mysql, Perl and the DBD are compiled with the
same compiler. Guy says that a lot of problems get fixed that way. I
am reluctant to recompile all that stuff on my production server, and
will probably have to set up a second server to try it out.....
- Jerry Kaidor
>
>
> On Fri, Sep 3, 2010 at 10:35 AM, Jerry Kaidor <[email protected]> wrote:
>
>> Hello,
>>
>> My name is Jerry Kaidor. I am seeing some cryptic errors in a web
>> application that I'm writing. Driving me nuts. My code runs under
>> CGI::Application, and uses DBI with the mysql driver. Here is the
>> error message, which appears in /var/log/httpd/error_log:
>>
>> ----------------- snip ------------------------
>>
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] SV =
>> RV(0x8c6212c) at 0x8c62120
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] REFCNT = 1
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] FLAGS =
>> (ROK,READONLY)
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] RV =
>> 0x8c61ef0
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] SV =
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] PVHV(0x8c57b84)
>> at 0x8c61ef0
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] REFCNT =
>> 1
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] FLAGS =
>> (OBJECT,OOK,SHAREKEYS)
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6]
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] STASH =
>> 0x8700430
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] \t"DBI::db"
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6]
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] ARRAY =
>> 0x8c66878
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6]
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6]
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] KEYS = 0
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6]
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] FILL = 0
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6]
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] MAX = 7
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6]
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] RITER = -1
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6]
>> [Fri Sep 03 07:11:35 2010] [error] [client 10.120.102.6] EITER = 0x0
>>
>> -------------------- endsnip ------------------------------------
>>
>> The Linux system is based on Slackware 13.0. I have upgraded to the
>> latest DBI and DBD::mysql via CPAN. The Linux kernel is 2.6.29.6-smp.
>> Perl is "v5.10.0 built for i486-linux-thread-multi". The mysql server
>> is 5.0.84. The webserver is Apache 2.2.13.
>>
>> I have done a fair amount of googling on this, no joy, except that the
>> error messages seem to be about some kind of Perl internals distress.
>> I also asked the CGI::Application mailing list - they know nothing.
>> One person suspected the DBD driver because it uses C code interfaced
>> to Perl via XS.
>>
>> Anybody have a clue? BTW, the application seems to work fine. I'm
>> just seeing this error in the httpd error log.
>>
>> Thanks in advance,
>>
>> - Jerry Kaidor ( [email protected] )
>>
>>
>>
>>
>
> --
> The best compliment you could give Pythian for our service is a referral.
>