Thomas, did you get round to doing this?
Tim.
On Wed, Feb 26, 2003 at 10:54:12AM +0000, Tim Bunce wrote:
> On Tue, Feb 25, 2003 at 05:30:31PM -0500, Thomas Good wrote:
> > On Tue, 25 Feb 2003, Tim Bunce wrote:
> >
> > > > While I was using 5.8 large data transfers via DBI failed consistently.
> > > > I have compared notes with others (including Lincoln Stein) and this
> > > > problem is easily reproduced. In fact, I can't stop reproducing it. ;-)
> > > >
> > > A self-contained test case would be ideal!
> >
> > Hi, I will try to put this together, meanwhile here is a summary:
> >
> > I have a postgres table with 220 individual patient skills -
> > these skills become questions on a long form. Another table
> > holding live patient records is queried and the returned values
> > serve as popup_menu() defaults
> >
> > Tr ( td ( "$skill[0]" ) <-- Here is the string/question
> > td ( popup_menu( ...
> > -values=>['1 - Excellent', '2 - Adequate', '3 - Needs
> > Attention',
> > '4 - Needs Immediate Attention', '5 - Not
> > Applicable'],
> > -default=>"$row->{item_01}" <-- Here is the returned value
> > ...
> >
> > On wellworn test equipment (all ide, 64M RAM, clock speed of 300MHz) running
> > Slackware 8.1, perl 5.6.1, DBI 1.25, Apache 1.3.26, DBD-Pg 1.21, Postgres 7.3.1
> > this script runs.
> >
> > On a brand new IBM eServer (LSI SCSI, 512M RAM, 2 GHz clock) running Redhat 8.0,
> > perl 5.8.0, DBI 1.28, Apache 2.0.40, DBD-Pg 1.21 the script hangs.
> > I tried commenting out the defaults, etc. Only removing both queries allowed
> > the script to run. The CGI form was not a problem, even when I doubled the
> > length as a test.
>
> Enable tracing to a log file (eg set DBI_TRACE env var to something
> like "6=/tmp/dbi.log") and then run the script using truss
> (or similar tool that shows operating system calls).
>
> As a (better) alternative to using truss you could do a kill -QUIT
> on the process once it has hung and then get a stack trace from the
> core file.
>
> That would be useful, but to be *really* helpful the DBI and DBD::Pg
> would need to be compiled and linked with debugging enabled (ie -g
> option to the compiler/linker).
>
> For the DBI you can do that by simply rebuilding it starting with
> "perl Makefile.PL -g".
>
> For DBD::Pg you may need to run "perl Makefile.PL" and then hack the
> generated Makefile: Add -g as an option on the "CCCMD = $(CC) ..."
> line and also to the "OTHERLDFLAGS =" line.
>
> Once you've got the core file you can get a stack dump using a debugger
> like gdb ("gdb /path/to/the/perl/you/used /path/to/core" then "bt".)
>
> Tim.