How can you tell if threads are enabled?

How do you know if you are using 64 bit integers (is this a solaris thing or a Perl thing?)

terry

Michael Peppler wrote:

One of the DBD::Sybase users is reporting that DBD::Sybase segfaults on
startup when built with DBI 1.38, perl 5.8.0 with ithreads and 64 bit
integers (but NOT 64 bit everything).

DBD::Sybase fails the first time it tries to access DBIS:

In dbd_init() we have:

   if(DBIS->debug >= 2) {
       char *p = "";
       if((sv = perl_get_sv("DBD::Sybase::VERSION", FALSE)))
           p = SvPV(sv, lna);

and it segfaults on the if() statement.

If I'm not mistaken, this comes from the following:

# define DBIS (*(dbistate_t**)&SvIVX(DBISTATE_ADDRSV))

which is used if MULTIPLICITY is defined (which it is when ithreads is
enabled).

SvIVX will return a 64 bit entity in this situation, but pointers are 32
bit.

I have a feeling that there isn't any direct work-around, other than not
using 64 bit integers?

Michael





Reply via email to