Discussion:
pp incompatible with Windows 7 (SSL)?
(too old to reply)
Ulli Horlacher
2014-08-12 13:24:32 UTC
Permalink
I have had to move from Windows XP to Windows 7.
On the new system, I installed strawberry perl 5.18 and via cpan
PAR::Packer, Tk und IO::Socket::SSL

My program (*) runs flawless if I run it directly.
But when I compile it with pp, I get a run-time error:

Use of uninitialized value in subroutine entry at IO/Socket/SSL.pm line 537.
cannot connect fex.rus.uni-stuttgart.de:443 - IO::Socket:SSL: Timeout

In my source code there is:

$SH = IO::Socket::SSL->new(
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
) || error("cannot connect $server:$port - $@");


In IO/Socket/SSL.pm there is at line 537:

$ssl = ${*$self}{'_SSL_object'} = Net::SSLeay::new($ctx->{context})
|| return $self->error("SSL structure creation failed");


The bug must be somewhere in PAR/pp.
Is it compatible with Windows 7 at all?
On Windows XP I have no such error.


(*) http://fex.rus.uni-stuttgart.de/fop/Yt4lZHcZ/schwuppdiwupp.pl
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum IZUS/TIK E-Mail: ***@tik.uni-stuttgart.de
Universitaet Stuttgart Tel: ++49-711-68565868
Allmandring 30a Fax: ++49-711-682357
70550 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/
REF:<***@rus.uni-stuttgart.de>
Roderich Schupp
2014-08-13 09:22:38 UTC
Permalink
Hi,

the main suspect here is Net::SSLeay. It uses OpenSSL under the hood and
probably libssl*.dll doesn't get packed (PAR::Packer _never_ packs non-Perl
DLLs automatically). To check:

- find the Net::SSLeay "glue" DLL ...\auto\Net\SSLeay\SSLeay.dll
- check (e.g. using objdump) whether it is indeed linked against some
libssl*.dll, say libssl420.dll
- if that's the case, rebuild your packed executable with "pp --link
libssl420.dll ..."

Cheers, Roderich

Loading...