Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
Several days ago, I posted an inquiry (Diagnosing error report: "IO object version 1.21 does not match bootstrap parameter 1.22") concerning certain FAIL reports I was getting at testers.cpan.org (http://tinyurl.com/c8xd5) on uploads of a module I am maintaining. For reasons not clear to me, some (but not all) testers would report massive test failures, all of them starting out something like this:

IO object version 1.21 does not match bootstrap parameter 1.22 at /usr +/local/perl-5.8.5/lib/5.8.5/sun4-solaris-thread-multi/DynaLoader.pm l +ine 253.

I noted that I could not reproduce this error and was puzzled because I didn't call IO::Handle in any of my code, nor did I make any use of Dynaloader. (There's no XS in the distro.)

chromatic commented that "that error means that the version in the XS portion of IO does not match the version in the Perl portion of the module. It sounds like an incorrect installation of Perl."

Since that time there have been further developments. First, there have been more confusing automated testing reports. One of the testers who first reported the "IO object version" errors has re-tested ExtUtils-ModuleMaker-0.39 and it is now passing (http://tinyurl.com/awhay). But another tester first reported the distro as passing all tests, then switched to two different architectures (though all Linux) and reported failures -- with the same type of errors -- on those later architectures! (Go to http://tinyurl.com/c8xd5 and look at reports 241985, 242337 and 242426.)

Second, I googled for this error (http://tinyurl.com/7v7dc) and scanned the results. I got 44 hits (including duplicates) going back to 1999 from lists such as comp.lang.perl.misc, debian-user, perl.par, etc. Sometimes the error looks like this:

IO object version 1.20 does not match bootstrap parameter 1.21 at C:/Perl/lib/XSLoader.pm line 91. Compilation failed in require at C:/Perl/lib/IO/Handle.pm line 260. BEGIN failed--compilation aborted at C:/Perl/lib/IO/Handle.pm line 260 +. Compilation failed in require at C:/Perl/lib/IO/Seekable.pm line 101. BEGIN failed--compilation aborted at C:/Perl/lib/IO/Seekable.pm line 1 +01. Compilation failed in require at C:/Perl/lib/IO/File.pm line 117. BEGIN failed--compilation aborted at C:/Perl/lib/IO/File.pm line 117. Compilation failed in require at -e line 300.

Sometimes like this:

debconf: Perl may be unconfigured (IO object version 1.20 does not match bootstrap parameter 1.18 at /usr/lib/perl/5.6.1/DynaLoader.pm line 221.

Sometimes like this:

debconf: Perl may be unconfigured (IO object version 1.20 does not match bootstrap parameter 1.18 at /usr/lib/perl/5.6.1/DynaLoader.pm line 221.

What's interesting in reviewing these postings is that -- unlike most postings to Perl lists -- the OP's question never gets a definitive answer. Often the answer falls along the lines of "reinstall Perl."

The most thorough answer that I found was (not surprisingly) from Sherm Pendley (http://www.dbforums.com/t1064830.html). Sherm wrote:

So you have the latest IO.pm, which is reporting version 1.21, but when DynaLoader tries to load IO.so, that reports version 1.18. This is a fatal problem, so DynaLoader complains about it and dies.

Perl has separate directories for version-specific modules specifically to prevent this sort of problem. The fact that it's happening usually indicates either a module install gone very wrong, or a very badly misconfigured perl.

The first problem listed is the one you need to diagnose and fix first - the others are a result of the first. When IO fails to load, the module that tried to use it (IO::Handle) fails. Then the module that tried to use IO::Handle fails. And so on, until the main script fails at the end.

So the key to solving the problem is figuring out *why* your Perl is loading the latest IO.pm, but an older IO.so.

The thread trailed off there; I don't know if the poster Sherm was helping ever diagnosed the problem further or solved it. But if more than one CPAN tester -- each of whom, I presume, is a highly experienced Perl hacker -- is generating spurious error reports based on this error, then the problem has to be judged a serious one and worthy of serious attention by the community.

Since problems with IO modules, .so objects and perl distributions are beyond my personal expertise, I'm wondering where I should report the problem for further investigation. Suggestions?

Thank you very much.

Jim Keenan


In reply to More on "IO object version does not match bootstrap parameter" error by jkeenan1

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2024-03-29 10:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found