Thanks for the response Tim.
Commenting out this line appears to have fixed the first problem. It no
longer dies when it clones the process.
> DBIS->logfp = parent_dbis ? fp_dup(parent_dbis->logfp,'>',0) :
> PerlIO_stderr();
If you would still like to see the stack trace, I can uncomment the line
and run the program again. I don't know how to make perl dump the core
on a crash though, so the specific flag to pass or info about what I
need to do to get stack trace would be appreciated.
I'm still having trouble though with connecting to the database after
each thread starts.
Through the archive, I found the reference for the ora_init_mode
needing to be OCI_THREADED and OCI_OBJECT or'd together.
#define OCI_THREADED 0x01 /* the application is in threaded
environment */
#define OCI_OBJECT 0x02 /* the application is in object
environment */
So I added ora_init_mode => 3 to my connect args.
the basic premise of the code is this:
disconnect the db
start new thread
connect to db inside of thread
whatever I need to do.
I turned tracing to 5 to see If I could get any help from it. It
reports
disconnecting
connecting to db
DBI 1.30-ithread dispatch trace level set to 5
-> DBI->connect(dbi:Oracle:mfm, USERNAME, ****, HASH(0x8be139c))
-> DBI->install_driver(Oracle) for linux perl=5.008 pid=25587
ruid=500 euid=500
install_driver: DBD::Oracle version 1.12 loaded from
/home/mm/installs/lib/perl5/site_perl/5.8.0/i686-linux-thread-multi/DBD
/Oracle.pm
<- install_driver= DBI::dr=HASH(0x8b6cb08)
And then nothing more. When I do a connection before the threading,
There is a huge amount of output. I also don't see the connections
establish with netstat -atn.
Scott
On Mon, 12 Aug 2002 08:06:44 +0100
Tim Bunce <[EMAIL PROTECTED]> wrote:
> On Fri, Aug 09, 2002 at 06:16:08PM +0000, Scott Alexander wrote:
> > I'm doing some testing with perl 5.8.0 and trying to use DBI. I
> > know that the DBI and ithreads are listed as beta and not production
> > ready, but the problem I think I'm having is that this fails to even
> > make the clone. It never gets to using the dbi itself.
> >
> > The script is a Sendmail::Milter filter that I'm working on. It
> > dies right after I make a connection to the sendmail engine. Thats
> > why I'm pretty sure that this is caused by the cloning.
> >
> > The actual error is:
> > Starting Sendmail::Milter 0.18 engine.
> > Assertion tbl failed: file "sv.c", line 8798
>
> That's Perl_ptr_table_fetch(). A stack trace from the core file
> would be a big help.
> > at
> > /home/mm/installs/lib/perl5/site_perl/5.8.0/i686-linux-thread-multi
> > /DBI.pm line 425.
>
> That's inside the DBI's CLONE sub. Try commenting out this line in
> DBI.xs:
> DBIS->logfp = parent_dbis ? fp_dup(parent_dbis->logfp,'>',0) :
> PerlIO_stderr();
> > Is this just something where I need to wait for the next version of
> > DBI?
>
> Nope. At this stage I'm not using or testing or developing threads
> support for DBI. I'm just responding to any issues that crop up.
>
> > Does DBD::Oracle not support this yet?
>
> See archives for some changes you can make to DBD::Oracle to improve
> things. The next release will be better.
>
> Tim.