fatal: relocation error: symbol dirty?

Discussion in 'Perl Misc' started by mkirsch1@rochester.rr.com, Apr 19, 2006.

  1. Guest

    I see lots of one-message threads for errors similar to this:

    Can't load '/packages/perl/lib/perl5/site_perl/auto/DBI/DBI.so' for
    module DBI: ld.so.1: perl: fatal: relocation error: file
    /packages/perl/lib/perl5/site_perl/auto/DBI/DBI.so: symbol dirty:
    referenced symbol not found at
    /usr/perl5/5.8.4/lib/sun4-solaris-64int/DynaLoader.pm line 230.
    at /packages/perl/lib/perl5/site_perl/DBI.pm line 168
    BEGIN failed--compilation aborted at
    /packages/perl/lib/perl5/site_perl/DBI.pm line 168.
    Compilation failed in require at ./dbi_simple.pl line 4.
    BEGIN failed--compilation aborted at ./dbi_simple.pl line 4.

    But, no answers. Please tell me someone knows, as a general
    explanation, what is going on here, and can explain it to me. If I had
    an explanation of what the error message means on a generic level, I
    could probably figure out what's wrong and fix it.

    Situation: I have DBI and DBD-Oracle loaded in a non-standard location.
    They're "compiled" for Solaris 8 (perl 5.005), and we're trying to use
    them on Solaris 10 (perl 5.8.4) boxes. The above error message is what
    we get from this simple script:

    #!/usr/bin/perl
    use lib qw(/usr/perl5/5.00503/sun4-solaris /usr/perl5/5.00503
    /usr/perl5/site_perl/5.005/sun4-solaris /usr/perl5/site_perl/5.005
    /packages/perl/lib/perl5/site_perl);

    use DBI;
    use DBD::Oracle qw:)ora_types);

    Recompiling the modules for Solaris 10 is not an option because we're
    in a heterogenous environment, and production is still on Solaris 8.
     
    , Apr 19, 2006
    #1
    1. Advertising

  2. [A complimentary Cc of this posting was sent to

    <>], who wrote in article <>:
    > Can't load '/packages/perl/lib/perl5/site_perl/auto/DBI/DBI.so' for
    > module DBI: ld.so.1: perl: fatal: relocation error: file
    > /packages/perl/lib/perl5/site_perl/auto/DBI/DBI.so: symbol dirty:
    > referenced symbol not found at
    > /usr/perl5/5.8.4/lib/sun4-solaris-64int/DynaLoader.pm line 230.


    > But, no answers. Please tell me someone knows, as a general
    > explanation, what is going on here, and can explain it to me.


    Whoever wrote CRT library does not know how to write error messages.
    The parsable error would look like this:

    Can't load '/packages/perl/lib/perl5/site_perl/auto/DBI/DBI.so' for
    module DBI: ld.so.1: perl: fatal: relocation error: file
    /packages/perl/lib/perl5/site_perl/auto/DBI/DBI.so: symbol 'dirty':
    referenced symbol not found at
    /usr/perl5/5.8.4/lib/sun4-solaris-64int/DynaLoader.pm line 230.

    Is it better this way? (DBI.so mentions `extern dirty' which can't be
    found as an `extern' at runtime.) Most probably your Perl is not
    compiled on the current machine, and its Config.pm contains junk.

    Hope this helps,
    Ilya
     
    Ilya Zakharevich, Apr 19, 2006
    #2
    1. Advertising

  3. writes:

    > Situation: I have DBI and DBD-Oracle loaded in a non-standard location.
    > They're "compiled" for Solaris 8 (perl 5.005), and we're trying to use
    > them on Solaris 10 (perl 5.8.4) boxes.


    That's the problem, right there. Modules that include a compiled component
    are not binary-compatible from one major version to the next. You'll need
    to install them correctly on the Solaris 10 machine.

    > Recompiling the modules for Solaris 10 is not an option because we're
    > in a heterogenous environment


    .... which Perl already understands and makes allowances for, by placing
    architecture- and version-specific modules in their own subdirectory.

    sherm--

    --
    Cocoa programming in Perl: http://camelbones.sourceforge.net
    Hire me! My resume: http://www.dot-app.org
     
    Sherm Pendley, Apr 19, 2006
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.

Share This Page