[OpenBSD] staticperl dying unexpectedly with Coro/jit...

nomad at null.net nomad at null.net
Thu Oct 20 22:18:03 CEST 2016


I'm having difficulting getting staticperl and Coro (I think) to work
together on 64-bit OpenBSD 6.0 (running under Virtualbox).

Regardless of which order I pass my various "--use $Module" options to
staticperl (and therefore I presume the SP-mkbundle script) the last
output I always see with a bunch of --verbose flags is:

    + found potential dependency Coro/State.pm
    + found potential dependency Coro/jit-amd64-unix.pl
    tracing module PerlIO::scalar

The exit code reported by bash is 141. /usr/include/sysexit.h has:

    #define EX__BASE        64      /* base value for error messages */

And 141-64 = 77:

    #define EX_NOPERM       77      /* permission denied */

[I'm not entirely sure I've got that reasoning right though]

I think I have narrowed down the program exit to the syswrite call in
the trace_module function:

    sub trace_module {
       print "tracing module $_[0]\n"
          if $VERBOSE >= 2;

       syswrite $TRACER_W, "use $_[0]\n";
       trace_parse;
    }

Debug statements I add before the syswrite call work, but I never see
the matching statement after. I'm assuming that the tracer child is
bugging out ... but then I would have also expected to see EPIPE so all
I'm left with is speculation.

Likewise, the child process seems to die on an eval:

    eval $eval; # <<<< never returns
    warn "ERROR: $@ (while loading '$mod')\n"
        if $@;

I just thought of stripping away all of my extra arguments - 
I can actually reliably reproduce the error with the following:
    
    $ staticperl/bin/SP-mkbundle -v -v -v -v -v --use Coro::State
    tracing module Coro::State
    + found potential dependency Coro/State.pm
    + found potential dependency common/sense.pm
    + found potential dependency Carp.pm
    + found potential dependency strict.pm
    + found potential dependency warnings.pm
    + found potential dependency Exporter.pm
    + found potential dependency XSLoader.pm
    + found potential dependency Coro/jit-amd64-unix.pl
    tracing module PerlIO::scalar

If I just use Coro::jit-amd64-unix.pl then the command succeeds.

Versions:

    $ staticperl --version
    staticperl version 1.44

    $ staticperl perl -v
    This is perl 5, version 20, subversion 3 (v5.20.3) built for OpenBSD.amd64-openbsd

    staticperl perl -MCoro -E 'warn Coro->VERSION'
    Abort trap (core dumped) # but it is version 6.511

Any ideas on how I can debug this further?

-- 
Mark Lawrence



More information about the anyevent mailing list