On Mon, Feb 16, 2004 at 03:15:23PM -0800, Dean Arnold wrote:
> (Sorry for the repeated interruptions, perhaps I'm
> exersizing the bleeding edge ?)
Anything involving threads is bleeding edge.
> I managed to get around the previous issue by adding
> a driver package level $installed flag.
Yes, that's the best thing to do. (Though patches to make
install_method skip methods that are being re-installed are
most welcome :-)
> Alas, I now have another (somewhat more gruesome) issue:
>
> I'm running a test suite that
>
> 1. loads a table using 7 concurrent threads using raw binary data
> 2. Upon completion, the threads exit and are destroyed
> 3. the same table is then reloaded using
> 7 (new) threads, using character string data only
>
> Items 1 & 2 complete wo/ problems (at least once I add the #installed flag),
> but when the new threads are created and DBI->connect is called
> in the threads, I get the following errors:
>
> Attempt to free unreferenced scalar: SV 0x280bac00 at C:/Perl/site/lib/DBI.pm line
> 633.
> DBI::__ANON__[C:/Perl/site/lib/DBI.pm:646]('undef','undef') called at
> C:/Perl/site/lib/DBI.pm line 648
> DBI::connect('DBI','dbi:Teradata:jhvh1','dbitst','dbitst','HASH(0x25128e4)')
> called at
> testutf8.pl line 2827
>
> main::vartext_load_thrd(1,'jhvh1','dbitst','dbitst',7,'Thread::Queue=ARRAY(0x64b5e24)')
> called at testutf8.pl line 300
>
> Here's the connect() that generates the error:
>
> my $dbh = DBI->connect("dbi:Teradata:$dsn", $userid, $passwd,
> {
> PrintError => 0,
> RaiseError => 0,
> AutoCommit => 0,
> tdat_charset => 'UTF8'
> }
> ) || die "Thread $thrdnum: Can't connect to $dsn: $DBI::errstr. Exitting...\n";
>
> The DBI.pm line 633 is delete'ing one of the std. (RaiseError, PrintError,
> AutoCommit)
> entries from the \%attr and assigning the result to the internal $dbh.
>
> Note this is repeated for each thread.
>
> Any ideas what's amiss here ? Guess I'll try leaving the std. attrs alone and
> assigning them after connect()...
Can you reproduce the error with the latest versions of perl
(including bleadperl)?
Can you reproduce the error with a different driver?
Tim.