Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??

Just a wild guess... (anything else is hard without seeing the code :): your script might be trying to write to a closed socket (closed by the device). This generates a SIGPIPE signal, whose default handler action is to abort the program (assuming you're on Unix).

Consider this example

#!/usr/bin/perl use strict; use warnings; use IPC::Open3; # uncomment to handle SIGPIPE yourself # $SIG{PIPE} = sub { warn "Broken pipe\n" }; open3(my $wh, my $rh, undef, qw'echo foo'); # tiny delay, so the command _has_ closed its stdin in the meantime select undef,undef,undef, 0.2; print $wh "foo\n"; # expected to fail in this case close $wh; print "done.\n"; # not reached, except when handling SIGPIPE yourse +lf

When you run this as is, it quits without printing "done.", because it's being terminated before. When you setup your own SIGPIPE handler, OTOH, you'd get your (self-generated) "Broken pipe" warning message, followed by "done."

(Note that this sample snippet would not exit with $? being zero (so this simple theory doesn't quite fit your case), but there are other circumstances conceivable where it might...)

How to debug?  You could run your script under strace (a tool I tend to recommend at least twice a week here :) in order to figure out what your script is doing last... This would likely prove helpful anyway, even if my above theory is wrong.

E.g. in the above sample case, you'd see something like this at the end of the trace

$ strace ./ (...) select(0, NULL, NULL, NULL, {0, 200000}) = ? ERESTARTNOHAND (To be res +tarted) --- SIGCHLD (Child exited) @ 0 (0) --- select(0, NULL, NULL, NULL, {0, 200000}) = 0 (Timeout) write(8, "foo\n", 4) = -1 EPIPE (Broken pipe) --- SIGPIPE (Broken pipe) @ 0 (0) --- +++ killed by SIGPIPE +++

(notice the write(8, "foo\n",... line which returns with EPIPE)

In reply to Re: unexpected quit - no error message by almut
in thread unexpected quit - no error message by kp2a

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

  • 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, 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, 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:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others exploiting the Monastery: (2)
    As of 2018-04-22 01:55 GMT
    Find Nodes?
      Voting Booth?