ashok.g has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

When trying to run a simple Net::SSH2 program, it says

Segmentation Fault (core dumped)

And my program is like this:
#!/usr/bin/perl use strict; use warnings; use Net::SSH2; my $sshf = Net::SSH2->new(); $sshf->connect('192.168.0.18') or print "SSH Connect Failed\n";
Not sure what is the problem here. I am using multi thread Perl 5.8.9 on Sun Solaris 10

Any Help??

Thanks,
Ashok.

Replies are listed 'Best First'.
Re: Net::SSH2 dumping core
by syphilis (Archbishop) on Mar 29, 2012 at 01:52 UTC
    At what point does the segfault occur ? When Net::SSH2 is loaded ? ... or when new() is called ? ... or when connect() is called ?

    A few lines down from the top of t/Net-SSH2.t (in the Net-SSH2 source distro) you'll see:
    my ($host, $user, $pass) = qw();
    Change that to:
    my ($host, $user, $pass) = qw(192.168.0.18 user pass);
    and then run that script: perl t/Met-SSH2.t
    Perhaps that will help pinpoint when/where the error occurs.

    Be aware that, having done that, t/Net-SSH2.t now contains your username and password (in plain text) for anyone who opens the file to view.

    Cheers,
    Rob
      Hi Rob,

      Thanks for the reply. The core is dumping when it is trying to connect. See the following output of Net::SSH.t
      bash-3.00# perl Net-SSH2.t 1..73 ok 1 - use Net::SSH2; ok 2 - new session isa Net::SSH2 ok 3 - error state clear ok 4 - set banner ok 5 - LIBSSH2_* constants ok 6 - list version match ok 7 # skip version not decimal ok 8 - banner is SSH-2.0-libssh2_1.4.0 ok 9 - poll indefinite ok 10 - poll 1/4 second ok 11 - ->sock is undef before connect Segmentation Fault (core dumped)
      Please advice.

      Thanks,
      Ashok.
Re: Net::SSH2 dumping core
by ashok.g (Beadle) on Mar 29, 2012 at 23:15 UTC
    Logged the follwoing bug as well.

    https://rt.cpan.org/Public/Bug/Display.html?id=76149

      FWIW, useful information for the developer would be which version of libssh2 you're using, like the output from

      ldd -v ...auto/Net/SSH2.so

        Following is the output for your reference.
        bash-3.00# ldd -v /usr/local/lib/perl5/site_perl/5.8.9/sun4-solaris-th +read-multi/auto/Net/SSH2/SSH2.so find object=libssh2.so.1; required by /usr/local/lib/perl5/site_per +l/5.8.9/sun4-solaris-thread-multi/auto/Net/SSH2/SSH2.so libssh2.so.1 => /usr/local/lib/libssh2.so.1 find object=libz.so; required by /usr/local/lib/perl5/site_perl/5.8 +.9/sun4-solaris-thread-multi/auto/Net/SSH2/SSH2.so libz.so => /usr/lib/libz.so find object=libc.so.1; required by /usr/local/lib/perl5/site_perl/5 +.8.9/sun4-solaris-thread-multi/auto/Net/SSH2/SSH2.so libc.so.1 => /lib/libc.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.22) => /lib/libc.so.1 find object=libssl.so.0.9.7; required by /usr/local/lib/libssh2.so. +1 libssl.so.0.9.7 => /usr/sfw/lib/libssl.so.0.9.7 find object=libcrypto.so.0.9.7; required by /usr/local/lib/libssh2. +so.1 libcrypto.so.0.9.7 => /usr/sfw/lib/libcrypto.so.0.9.7 find object=libz.so.1; required by /usr/local/lib/libssh2.so.1 find version=libz.so.1 libz.so.1 (SUNW_1.1) => /usr/lib/libz.so find object=libnsl.so.1; required by /usr/local/lib/libssh2.so.1 libnsl.so.1 => /lib/libnsl.so.1 find object=libsocket.so.1; required by /usr/local/lib/libssh2.so.1 libsocket.so.1 => /lib/libsocket.so.1 find version=libsocket.so.1 libsocket.so.1 (SISCD_2.3) => /lib/libsocket.so.1 find object=libc.so.1; required by /usr/local/lib/libssh2.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.1) => /lib/libc.so.1 find object=libgcc_s.so.1; required by /usr/local/lib/libssh2.so.1 libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1 find version=libgcc_s.so.1 libgcc_s.so.1 (GCC_3.0) => /usr/sfw/lib/libgcc_s.so.1 find object=libc.so.1; required by /usr/lib/libz.so find version=libc.so.1 libc.so.1 (SUNW_1.1) => /lib/libc.so.1 find object=libcrypto.so.0.9.7; required by /usr/sfw/lib/libssl.so. +0.9.7 find object=libc.so.1; required by /usr/sfw/lib/libssl.so.0.9.7 find version=libc.so.1 libc.so.1 (SISCD_2.3) => /lib/libc.so.1 find object=libc.so.1; required by /usr/sfw/lib/libcrypto.so.0.9.7 find version=libc.so.1 libc.so.1 (SUNW_1.22) => /lib/libc.so.1 find object=libsocket.so.1; required by /usr/sfw/lib/libcrypto.so.0 +.9.7 find version=libsocket.so.1 libsocket.so.1 (SISCD_2.3) => /lib/libsocket.so.1 find object=libnsl.so.1; required by /usr/sfw/lib/libcrypto.so.0.9. +7 find version=libnsl.so.1 libnsl.so.1 (SISCD_2.3) => /lib/libnsl.so.1 find object=libmp.so.2; required by /lib/libnsl.so.1 libmp.so.2 => /lib/libmp.so.2 find version=libmp.so.2 libmp.so.2 (SUNW_1.1) => /lib/libmp.so.2 libmp.so.2 (SUNWprivate_1.1) => /lib/libmp.so.2 find object=libmd.so.1; required by /lib/libnsl.so.1 libmd.so.1 => /lib/libmd.so.1 find object=libscf.so.1; required by /lib/libnsl.so.1 libscf.so.1 => /lib/libscf.so.1 find version=libscf.so.1 libscf.so.1 (SUNW_1.1) => /lib/libscf.so.1 find object=libc.so.1; required by /lib/libnsl.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.22.2) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 find object=libnsl.so.1; required by /lib/libsocket.so.1 find version=libnsl.so.1 libnsl.so.1 (SUNW_1.7) => /lib/libnsl.so.1 libnsl.so.1 (SUNWprivate_1.1) => /lib/libnsl.so.1 find object=libc.so.1; required by /lib/libsocket.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.19) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 find object=libc.so.1; required by /usr/sfw/lib/libgcc_s.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.1) => /lib/libc.so.1 find object=libc.so.1; required by /lib/libmp.so.2 find version=libc.so.1 libc.so.1 (SYSVABI_1.3) => /lib/libc.so.1 find object=libc.so.1; required by /lib/libmd.so.1 find version=libc.so.1 libc.so.1 (SUNW_0.9) => /lib/libc.so.1 find object=libdoor.so.1; required by /lib/libscf.so.1 libdoor.so.1 => /lib/libdoor.so.1 find version=libdoor.so.1 libdoor.so.1 (SUNWprivate_1.1) => /lib/libdoor.so.1 find object=libuutil.so.1; required by /lib/libscf.so.1 libuutil.so.1 => /lib/libuutil.so.1 find version=libuutil.so.1 libuutil.so.1 (SUNWprivate_1.1) => /lib/libuutil.so.1 find object=libc.so.1; required by /lib/libscf.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.21) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 find object=libgen.so.1; required by /lib/libscf.so.1 libgen.so.1 => /lib/libgen.so.1 find version=libgen.so.1 libgen.so.1 (SUNW_1.1) => /lib/libgen.so.1 find object=libc.so.1; required by /lib/libdoor.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.22.1) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 find object=libc.so.1; required by /lib/libuutil.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.19) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 find object=libc.so.1; required by /lib/libgen.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.1) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 object=/lib/libc.so.1; filter for /usr/lib/ld.so.1 object=/lib/libc.so.1; filter for libm.so.2 find object=libm.so.2; required by /lib/libc.so.1 libm.so.2 => /lib/libm.so.2 find object=libc.so.1; required by /lib/libm.so.2 find version=libc.so.1 libc.so.1 (SUNW_1.1) => /lib/libc.so.1 object=/lib/libm.so.2; filter for $ORIGIN/libm/$HWCAP find object=/lib/libm/sparcv9; required by /lib/libm.so.2 find object=/lib/libm/libm_hwcap1.so.2; required by /lib/libm.so.2 object=/lib/libc.so.1; filter for /platform/$PLATFORM/lib/libc_psr. +so.1 find object=/platform/SUNW,Sun-Blade-1000/lib/libc_psr.so.1; requir +ed by /lib/libc.so.1 /platform/SUNW,Sun-Blade-1000/lib/libc_psr.so.1 object=/usr/sfw/lib/libssl.so.0.9.7; filter for libssl_extra.so.0.9 +.7 find object=libssl_extra.so.0.9.7; required by /usr/sfw/lib/libssl. +so.0.9.7 libssl_extra.so.0.9.7 => /usr/sfw/lib/libssl_extra.so. +0.9.7 find object=libcrypto_extra.so.0.9.7; required by /usr/sfw/lib/libs +sl_extra.so.0.9.7 libcrypto_extra.so.0.9.7 => /usr/sfw/lib/libcrypto_extra. +so.0.9.7 find object=libcrypto.so.0.9.7; required by /usr/sfw/lib/libssl_ext +ra.so.0.9.7 find object=libssl.so.0.9.7; required by /usr/sfw/lib/libssl_extra. +so.0.9.7 find object=libc.so.1; required by /usr/sfw/lib/libssl_extra.so.0.9 +.7 find version=libc.so.1 libc.so.1 (SYSVABI_1.3) => /lib/libc.so.1 object=/usr/sfw/lib/libcrypto.so.0.9.7; filter for libcrypto_extra. +so.0.9.7 find object=libcrypto_extra.so.0.9.7; required by /usr/sfw/lib/libc +rypto.so.0.9.7 object=/usr/sfw/lib/libcrypto.so.0.9.7; filter for libcrypto_extra. +so.0.9.7 find object=libcrypto_extra.so.0.9.7; required by /usr/sfw/lib/libc +rypto.so.0.9.7 object=/lib/libnsl.so.1; filter for libc.so.1 find object=libc.so.1; required by /lib/libnsl.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.22.2) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 object=/lib/libmd.so.1; filter for /platform/$PLATFORM/lib/libmd_ps +r.so.1 find object=/platform/SUNW,Sun-Blade-1000/lib/libmd_psr.so.1; requi +red by /lib/libmd.so.1 /platform/SUNW,Sun-Blade-1000/lib/libmd_psr.so.1 find object=libc.so.1; required by /platform/SUNW,Sun-Blade-1000/li +b/libmd_psr.so.1 find version=libc.so.1 libc.so.1 (SUNW_0.9) => /lib/libc.so.1
        When I try to reply to bug-net-ssh2@rt.cpan.org with subject line rt.cpan.org #76149 Segmentation Fault - Dumping Core on Solaris but it is not appending to the bug report nor I am getting any auto reply email.

        BTW, I am attaching the core file in that email.

        Thanks,
        Ashok.