At $work, an application that uses SSL sockets began to crash with the following error message after a system upgrade:
Can't locate auto/Net/SSLeay/SSL_alert_d.al in @INC (@INC contains: /u
+sr/bin/../../lib /usr/bin/.. /usr/bin/../.. /usr/bin/../lib /usr/loca
+l/lib64/perl5/5.36 /usr/local/share/perl5/5.36 /usr/lib64/perl5/vendo
+r_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5
+) at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 3685.
The offending line, which was introduced in IO::Socket::SSL 2.076, is this:
$msg_name = eval { Net::SSLeay::SSL_alert_desc_string_long
+($msg_type) } || "Unknown alert";
But it is possible to trigger a similar error with just
perl -MNet::SSLeay -le 'print Net::SSLeay::SSL_alert_desc_string_long(
+1)'
This function seems to be a well-established exported function of OpenSSL, which is exposed to the Perl module in SSLeay.xs. The SSLeay.so library certainly has a similarly named symbol. But the error message, with the truncated function name seems to indicate that some breakage is going on around function export/import/autoloading.
My questions:
- This looks like a bug, but where to report to? IO::Socket::SSL, because it uses a function it's (possibly) not supposed to, or Net::SSLeay, because they have this weirdly broken function in the first place?
- Looking at Net::SSLeay's code as it is deployed, it has a bunch of these .al files in the auto/Net/SSLeay directory. Apparently these are created by AutoSplit which is a part of Autoload or something. But the functions in those files seem to exist in SSLeay.pm as well, so what is the point of this nonsense?
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.