Code Monkey home page Code Monkey logo

moarvm's Introduction

MoarVM

MoarVM (short for Metamodel On A Runtime Virtual Machine) is a runtime built for the 6model object system. It is primarily aimed at running NQP and Rakudo, but should be able to serve as a backend for any compilers built using the NQP compiler toolchain.

Get It

Either download it from the MoarVM site or clone it from GitHub:

git clone https://github.com/MoarVM/MoarVM.git

If you use the automatically generated release tarballs or zip files please note that they don't contain the third party libraries needed to successfully build MoarVM.

Build It

Build Status

Building and installing the VM itself takes just:

perl Configure.pl
make install

(Or nmake/gmake on Windows). Currently it is known to build on Windows with MSVC and gcc, and with gcc and clang on Linux & MacOS X. We're expanding this with time.

Type perl Configure.pl --help to see the configure-time options, as well as some descriptions of the make-time options/targets.

Building an NQP with MoarVM

After installing MoarVM, you can clone the NQP repository or grab a source tarball and use the Configure.pl script in it like so:

perl Configure.pl --backend=moar --prefix=where_your_moarvm_install_lives

Alternatively, the same Configure.pl script in NQP is able to clone, build and install a copy of MoarVM on its own if you supply the --gen-moar flag.

Please bear in mind that this will be the prefix to the /bin, /lib and other directories where the moar executable and other files are going to be installed, so you'll have to use /usr if you want moar to be copied to /usr/bin.

Building a Rakudo with MoarVM

When pointing the Configure.pl script in rakudo's repository at a --prefix that has an nqp-m installed in it, it will automatically detect and configure the MoarVM backend. Alternatively, --backend=moar,jvm can be used to force it to build the MoarVM and JVM backends, for example. Just like in the NQP Configure.pl script, you have the option to supply a --gen-moar flag that will do all the work for you, including creating an nqp-m.

Status

MoarVM is currently in development. It can run all of the NQP test suite, all of the Rakudo sanity tests, and passes more spectests than any other Rakudo backend.

Unlike the JVM or JS backend of NQP, the MoarVM repo is not integrated into the NQP source repo but instead can be pulled in by running Configure.pl --gen-moar configure script in the NQP repo.

Feature overview

Some key features provided by MoarVM include:

  • Meta-object programming, using the 6model design
  • Precise, generational, and parallel GC
  • Unicode 15 support (Unicode Character Database, encodings, normalization)
  • First-class code objects, lexical variables and closures
  • Exceptions
  • Continuations
  • Bounded serialization
  • Runtime loading of code
  • Big integers
  • A range of IO and process support, including asynchronous sockets, signals, timers, and processes
  • Native calling and native pointer manipulation
  • Threads, mutexes, condition variables, semaphores, and blocking queues
  • Bytecode specialization by type, and numerous optimizations (including resolution of method calls and multiple dispatch, dead code elimination, inlining, on stack replacement, scalar replacement, and partial escape analysis)
  • JIT compilation
  • Instrumentation-based profiling of call frames and allocations
  • Heap snapshotting
  • Remote Debugging with single stepping and variable/object introspection

Contributing

Contributions by pull request are accepted. Commit bits are given to those who contribute quality work. If you are interested in contributing, drop by the #moarvm channel on libera.chat.

See the LICENSE file in the root directory for information on the license of the source code in the MoarVM repository.

Troubleshooting

Linker can't find appropriate symbols on macOS

If MoarVM fails to build, and the error looks something like this:

ld: symbol(s) not found for architecture x86_64

you likely have an incompatible mix of build and bin utils.

While it is common to have toolchains installed from third party repositories in macOS, they aren't all compatible. In the event you run into this issue, please try these steps.

  1. Unlink your tools in homebrew: brew unlink binutils
  2. Destroy and re-clone MoarVM or rakudobrew
  3. Attempt the build again from scratch

If you want to use a GNU toolchain, and you get an error telling you to see this file, simply supply the --toolchain=gnu flag and this package will configure and build with a GNU toolchain.

Please note: If you use mixed Xcode and non-Xcode tools, you are likely to run into trouble. As such, this configuration is unsupported.

You need different code for gcc versus clang

Note both compilers define macro __GNUC__, so macro __clang__ needs to be tested first to disambiguate the two.

moarvm's People

Contributors

alexdaniel avatar altai-man avatar bdw avatar cbvi avatar coke avatar diakopter avatar fperrad avatar froggs avatar gerdr avatar hoelzro avatar japhb avatar jdv avatar jnthn avatar jstuder-gh avatar kaiepi avatar lizmat avatar masterduke17 avatar moritz avatar niner avatar nwc10 avatar patrickbkr avatar patzim avatar pmurias avatar samcv avatar timo avatar timtoady avatar ugexe avatar zhongniantao avatar zhuomingliang avatar zoffixznet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

moarvm's Issues

Make lib directory target configurable

Hello,

In the process of packaging MoarVM for Debian I need to change the target directory of the library to support Multiarch.

This result in changing @prefix@/lib to @prefix@/lib/<triplet>.

Packaging only require a --libdir option to Configure.pl:

override_dh_auto_configure:
    perl Configure.pl --prefix=/usr --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH)

Regards

Change `MVMString*` to `char*` where it makes sense

Some immutable things like MVMREPROps could be compile-time constants (as in C static variables) if they did not contain MVMString* members (which are also less convenient for debugging).

It would make sense to change those to const char* and look up the runtime strings in a hash that hangs off instance. They probably could even be hashed by their address instead of their character data, making lookup reasonably fast.

The REPR names for REPR Xxx could be added to the hash by the corresponding MVMXxx_initalize() or lazily on access.

The name of an MVMContainerSpec is another candidate, and there are probably others.

"make test" output is LTA

~/git/MoarVM master* )$ make test
Please build nqp-cc and run the tests in there

This does not make much sense to a first-time MoarVM user, like myself. How do I build nqp-cc ? How do I "run the tests in there" ?

Move MAST files under ```/usr/share```

Hello,

Actually the MAST files are installed under /usr/lib/MAST, which at least does not conform to debian policy.

As noted in a suggestion of Raku/nqp#154, installing them under /usr/share/nqp/lib/MAST could be preferable, maybe versioned in the future to support multiple MoarVM installations.

This will require a change in tools/build/Makefile-Moar.in of NQP.

Clang warnings

Latest clang compiler throws about 500 warnings during compilation process:

http://pastebin.com/6yQTkhyV

$ clang --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix

change build scripts to allow --with-apr=OPTIONS and --gen-apr[=OPTIONS]

jnthn +1 if somebody wants to implement --with-apr={system,bundled}
FROGGS jnthn: what should be the default?
pmichaud I don't like that formulation
pmichaud by default it should use the system apr
pmichaud but there may also want to be a --gen-apr, which means to generate one locally
pmichaud similar to how we do --gen-nqp and --gen-parrot
pmichaud iirc, --with-xyz is supposed to provide the location of xyz
pmichaud checking
pmichaud oh, the standard also allows keywords to be there
pmichaud I'd be okay with --with-apr=gen then, where "gen" means download an appropriate version of apr
jnthn pmichaud: You really want it out of the repo? :)
pmichaud out of the main repo, yes.
jnthn ok
pmichaud I'm thinking we should handle 3rdparty libs similar to how we currently handle parrot/nqp in nqp/rakudo
pmichaud i.e., if you have it, use it, otherwise fetch from a known location and build real quick
pmichaud but somehow I feel like --gen-apr is more consistent with --gen-parrot and --gen-nqp
FROGGS true
jnthn Works for me.
pmichaud also, --gen-apr might even allow for version specifiers, similar to what we do with the other --gen-*'s

many spectests fail, due to binding to hash key

This binding here makes a lot of tests segfault:
https://github.com/rakudo/rakudo/blob/nom/src/core/CompUnitRepo/Local/File.pm#L62

When I change it to assigned it works.

Also, do get an error message at all one has to do:

diff --git a/t/harness b/t/harness
index ed3715e..9c64de1 100644
--- a/t/harness
+++ b/t/harness
@@ -101,7 +101,7 @@ if (eval "require $tap_harness_class;") {
         verbosity   => 0+$Test::Harness::verbose,
         jobs        => $jobs || $ENV{TEST_JOBS} || 1,
         ignore_exit => 1,
-        merge       => 1,
+        merge       => 0,
         $archive ? ( archive => $archive ) : (),
         $extra_properties ? ( extra_properties => $extra_properties ) : (),
     );

Failing tests:

t/spec/S02-magicals/args.t                                  (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S02-magicals/env.rakudo.moar                         (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S02-magicals/pid.t                                   (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S02-magicals/progname.t                              (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S05-interpolation/regex-in-variable.rakudo.moar      (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S05-match/capturing-contexts.rakudo.moar             (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S05-substitution/subst.rakudo.moar                   (Wstat: 0 Tests: 141 Failed: 1)
  Failed test:  141
t/spec/S06-operator-overloading/methods.rakudo.moar         (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S06-other/main-usage.rakudo.moar                     (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S06-other/main.t                                     (Wstat: 0 Tests: 6 Failed: 1)
  Failed test:  2
t/spec/S10-packages/joined-namespaces.t                     (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S10-packages/use-with-class.t                        (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S11-modules/importing.t                              (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S11-modules/nested.t                                 (Wstat: 0 Tests: 6 Failed: 4)
  Failed tests:  1-4
t/spec/S11-modules/require.rakudo.moar                      (Wstat: 256 Tests: 7 Failed: 1)
  Failed test:  7
  Non-zero exit status: 1
  Parse errors: Bad plan.  You planned 13 tests but ran 7.
t/spec/S12-construction/BUILD.rakudo.moar                   (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S16-io/bare-say.rakudo.moar                          (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S16-io/say-and-ref.t                                 (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-promise/allof.t                                  (Wstat: 0 Tests: 10 Failed: 1)
  Failed test:  10
t/spec/S17-supply/batch.t                                   (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/categorize.t                              (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/classify.t                                (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/delay.rakudo.moar                         (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/do.t                                      (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/elems.t                                   (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/flat.t                                    (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/for.t                                     (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/grab.t                                    (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/grep.t                                    (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/last.rakudo.moar                          (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/interval.t                                (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/map.t                                     (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/max.t                                     (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/merge.t                                   (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/min.t                                     (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/minmax.t                                  (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/on.t                                      (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/reduce.t                                  (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/reverse.t                                 (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/rotor.t                                   (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/schedule_on.t                             (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/sort.t                                    (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/squish.t                                  (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/stable.rakudo.moar                        (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/uniq.t                                    (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/start.t                                   (Wstat: 0 Tests: 9 Failed: 1)
  Failed test:  9
t/spec/S17-supply/zip-latest.t                              (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S17-supply/zip.t                                     (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S19-command-line-options/03-dash-p.t                 (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S19-command-line/dash-e.t                            (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S19-command-line/help.t                              (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S26-documentation/10-doc-cli.rakudo.moar             (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S29-context/die.rakudo.moar                          (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S29-context/exit.t                                   (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S32-basics/warn.rakudo.moar                          (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S32-io/IO-Socket-Async.rakudo.moar                   (Wstat: 0 Tests: 6 Failed: 1)
  Failed test:  5
t/spec/S32-io/note.rakudo.moar                              (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S32-io/other.t                                       (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S32-list/roll.t                                      (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/S32-scalar/undef.rakudo.moar                         (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/integration/advent2009-day12.t                       (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/integration/advent2011-day07.t                       (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/integration/advent2011-day10.rakudo.moar             (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/integration/advent2011-day14.t                       (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/integration/advent2011-day23.rakudo.moar             (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/integration/advent2012-day06.t                       (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/integration/error-reporting.rakudo.moar              (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
t/spec/integration/weird-errors.t                           (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output

Saying null string segfaults

It probably shouldn't.

#!nqp
use MASTTesting;

plan(1);

mast_frame_output_is(-> $frame, @ins, $cu {
        my $r0 := local($frame, str);
        op(@ins, 'say', $r0);
    },
    "", "say null string doesn't segfault");

Spesh: failed to fix up handlers (170, -1, 192)

This microbenchmark from perl6-bench blows up with spesh:

~/p/bench (master) [1]> perl6-m -e 'for ^32 -> $i { for ^32 -> $j { $i + $j }; 1 }; 1'

Spesh: failed to fix up handlers (170, -1, 192)

Function call fails if module is defined after it

This works fine:

module foo {
    our sub talk() {
        say("hello");
    }
}; 
foo::talk();

But this:

foo::talk();
module foo {
    our sub talk() {
        say("hello");
    }
};

fails with:

Cannot locate an outer frame for the call
   in frame_name_0
   in frame_name_15

look into whether zeroing can be made optional, once we're bug-free-ish

<masak> this comment doesn't seem to agree with the code: 
         https://github.com/MoarVM/MoarVM/blob/master/src/gc/allocation.c#L46
<masak> I might be wrong, but I expected to see a line of code that zeroes the memory that is returned.
<arnsholt> masak: Yeah, I agree
* masak submits a moarvmissue

Segfault after repeated callframe access

This file (built with Rakudo = fd2b197, MoarVM = 0513b67) results in Moar trying to access a NULL string:

use v6;

sub proclaim($cond) {
    unless $cond { # for some reason, commenting this out fixes things?
        my $caller = callframe(2);
        say $caller.annotations.keys;
        say($caller.file);
    }
}

for (1 .. 20) {
    .say;
    proclaim(0);
}

Output:

1                                                    
file line
segfault.pl
2
file line
segfault.pl
3
file line
segfault.pl
4
file line
segfault.pl
5
file line
segfault.pl
6
file line
segfault.pl
7
file line
segfault.pl
8
file line
segfault.pl
9
file line
segfault.pl
10
file line
Failed to write to filehandle: NULL string given
  in method print at src/gen/m-CORE.setting:14088
  in sub say at src/gen/m-CORE.setting:13825
  in sub proclaim at segfault.pl:7
  in block  at segfault.pl:11

I did a little digging, and I noticed that a GC happens shortly before the crash.

gen2 overflow list compaction

We maintain a list of gen2 objects that are too big for the sized pools. This overflows list has any freed items NULL'd. But, we never compact it, so it lots of large objects are allocated then go free we'll eventually eat all memory. Not a hard fix, just needs doing.

Heap corruption detected: pointer 0x7fee3d952a90 to past fromspace

Apparently I managed to trigger a rare error.

https://github.com/ren1us/Research/tree/c6f0e900b8998c81f7f7b0c514168d9972dce1e8
(Commit c6f0e900b8)

I haven't been able to reproduce the crash.

Running: perl6 -Ilib t/Prune.t

I got the error during the second call to testRun (Prune.t). The first say statement (line 19) fired correctly, but the second one (line 28) did not, so the error was probably triggered somewhere in there. Note that this code will crash on the third call to pick_prune unless you add "is copy" to $pos. In a perfect world, it'd go on for another 1100 calls.

I honestly have no idea what I'm doing, but if I can provide any more context or whatever, I'm all yours.

Make Configure.pl detect when 3rdparty libs are too old

<FROGGS> looks like your 3rdparty libs were built ages ago
* masak realcleans and tries again
<masak> is it unreasonable to expect the Configure.pl process to stop-and-emit something like "looks like your 3rdparty 
         libs were built ages ago" ?
<masak> (worked now.) FROGGS++
<FROGGS> I guess we make it nicer when moarvm has more than ten users :o)
<masak> there is that.
* masak files a moarvmissue

segfault due to garbage object when compiling a TTIAR

The following snippet (with a nursery size of 2000):
perl6-m -e '1 1'

Fails in op(assign):

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7993523 in MVM_interp_run (tc=tc@entry=0x6035e0, initial_invoke=initial_invoke@entry=0x7ffff79ff1f2 <toplevel_initial_invoke>, invoke_data=<optimized out>)
    at src/core/interp.c:1249
warning: Source file is more recent than executable.
1249                    const MVMContainerSpec *spec = STABLE(cont)->container_spec;
(gdb) bt full
#0  0x00007ffff7993523 in MVM_interp_run (tc=tc@entry=0x6035e0, initial_invoke=initial_invoke@entry=0x7ffff79ff1f2 <toplevel_initial_invoke>, 
    invoke_data=<optimized out>) at src/core/interp.c:1249
        cont = 0x6044d8
        obj = 0x603a20
        spec = <optimized out>
        op = <optimized out>
        LABELS = {0x7ffff798e889 <MVM_interp_run+153>,...}
        cur_op = 0x7ffff5b8eeea "\n"
        bytecode_start = 0x7ffff5b8ee7a "\214"
        reg_base = 0x1e0b8d0
        cu = 0x2733a10
        cur_callsite = 0x67c130
(gdb) p *cont
$1 = {header = {owner = 0, flags = 0, size = 0, sc_forward_u = {forwarder = 0x4084d80000000000, sc = {sc_idx = 0, idx = 1082447872}, st = 0x4084d80000000000}}, 
  st = 0x28000000000001}

The Perl 6 level backtrace is:

   at <unknown>:1  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:postfix:<-->:4294967295)
 from src/gen/m-CORE.setting:7441  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:472)
 from src/gen/m-CORE.setting:7572  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::321)
 from src/gen/m-CORE.setting:7544  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:4294967295)
 from src/gen/m-CORE.setting:7572  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::321)
 from src/gen/m-CORE.setting:7544  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:4294967295)
 from src/gen/m-CORE.setting:7673  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::216)
 from src/gen/m-CORE.setting:7659  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:62)
 from src/gen/m-CORE.setting:7572  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::321)
 from src/gen/m-CORE.setting:7544  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:4294967295)
 from src/gen/m-CORE.setting:8084  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:gimme:204)
 from src/gen/m-CORE.setting:8056  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:eager:23)
 from src/gen/m-CORE.setting:2402  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:POSITIONS:166)
 from src/gen/m-CORE.setting:2487  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:postcircumfix:<[ ]>:113)
 from <unknown>:1  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:postcircumfix:<[ ]>:4294967295)
 from src/gen/m-CORE.setting:11732  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::495)
 from src/gen/m-CORE.setting:11716  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:gist:37)
 from src/gen/m-CORE.setting:1022  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:gist:42)
 from src/gen/m-CORE.setting:11536  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::51)
 from src/gen/m-CORE.setting:11531  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:print_exception:38)
 from src/gen/m-CORE.setting:11588  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:<anon>:40)
 from gen/moar/stage2/NQPHLL.nqp:1238  (/home/froggs/dev/nqp/install/languages/nqp/lib/NQPHLL.moarvm:command_eval:361)
 from src/Perl6/Compiler.nqp:17  (/home/froggs/dev/nqp/install/languages/nqp/lib/Perl6/Compiler.moarvm:command_eval:116)
 from gen/moar/stage2/NQPHLL.nqp:1179  (/home/froggs/dev/nqp/install/languages/nqp/lib/NQPHLL.moarvm:command_line:116)
 from src/gen/m-main.nqp:39  (/home/froggs/dev/nqp/install/languages/perl6/runtime/perl6.moarvm:MAIN:18)
 from src/gen/m-main.nqp:35  (/home/froggs/dev/nqp/install/languages/perl6/runtime/perl6.moarvm::197)
 from <unknown>:1  (/home/froggs/dev/nqp/install/languages/perl6/runtime/perl6.moarvm::8)
 from <unknown>:1  (/home/froggs/dev/nqp/install/languages/perl6/runtime/perl6.moarvm::9)

make: *** [gen/moar/stage1/nqpmo.moarvm] Segmentation fault

nqp build log:

[    0s] Memory limit set to 21902144KB
[    0s] Using BUILD_ROOT=/var/tmp/build-root/openSUSE_13.1-x86_64
[    0s] Using BUILD_ARCH=x86_64:i686:i586:i486:i386
[    0s] 
[    0s] 
[    0s] champion started "build nqp.spec" at Mon Mar 10 11:40:03 UTC 2014.
[    0s] 
[    0s] 
[    0s] processing specfile /home/daxim/osc/home:ldieckow:branches:devel:languages:parrot/nqp/nqp.spec ...
[    0s] running changelog2spec --target rpm --file /home/daxim/osc/home:ldieckow:branches:devel:languages:parrot/nqp/nqp.spec
[    0s] init_buildsystem --configdir /usr/lib/build/configs --cachedir /var/cache/build --rpmlist /tmp/rpmlist.N_XtYZ /home/daxim/osc/home:ldieckow:branches:devel:languages:parrot/nqp/nqp.spec ...
[    1s] reordering...cycle: libcrack2 -> cracklib
[    1s]   breaking dependency libcrack2 -> cracklib
[    1s] cycle: gio-branding-upstream -> libgio-2_0-0
[    1s]   breaking dependency libgio-2_0-0 -> gio-branding-upstream
[    1s] cycle: libudev-mini1 -> udev-mini
[    1s]   breaking dependency udev-mini -> libudev-mini1
[    1s] cycle: libgtk-2_0-0 -> gtk2-tools
[    1s]   breaking dependency libgtk-2_0-0 -> gtk2-tools
[    1s] cycle: libpango-1_0-0 -> pango-tools
[    1s]   breaking dependency pango-tools -> libpango-1_0-0
[    1s] cycle: java-1_7_0-openjdk-devel -> java-1_7_0-openjdk
[    1s]   breaking dependency java-1_7_0-openjdk -> java-1_7_0-openjdk-devel
[    1s] done
[    1s] deleting dyncall-devel
[    1s] deleting libuv-devel
[    1s] deleting linenoise-devel
[    1s] [1/217] [2/217] [3/217] cumulate hicolor-icon-theme-0.12-21.1.2
[    1s] [4/217] cumulate libX11-data-1.6.2-2.1.2
[    1s] [5/217] cumulate libicu51_2-data-51.2-6.1.2
[    1s] [6/217] [7/217] [8/217] cumulate Mesa-libglapi0-9.2.2-61.6.1
[    1s] [9/217] [10/217] cumulate libXau6-1.0.8-2.2.1
[    1s] [11/217] cumulate libasound2-1.0.27.2-3.2.1
[    1s] [12/217] [13/217] [14/217] [15/217] [16/217] [17/217] cumulate libcom_err2-1.42.8-2.1.2
[    2s] [18/217] cumulate libdbus-1-3-1.7.4-4.4.1
[    2s] [19/217] cumulate libdrm2-2.4.46-3.2.2
[    2s] [20/217] [21/217] [22/217] cumulate libffi4-4.8.1_20130909-3.2.1
[    2s] [23/217] [24/217] [25/217] cumulate libgif6-5.0.5-2.1.2
[    2s] [26/217] [27/217] [28/217] cumulate libgraphite2-3-1.2.0-6.1.2
[    2s] [29/217] [30/217] cumulate libjbig2-2.0-10.1.2
[    2s] [31/217] cumulate libjpeg8-8.0.2-24.1.3
[    2s] [32/217] cumulate libjson0-0.10-3.1.2
[    2s] [33/217] cumulate libkeyutils1-1.5.5-6.1.3
[    2s] [34/217] cumulate liblcms2-2-2.5-2.1.2
[    2s] [35/217] [36/217] [37/217] [38/217] cumulate libogg0-1.3.0-8.1.2
[    2s] [39/217] cumulate libpciaccess0-0.13.2-2.1.2
[    2s] [40/217] [41/217] cumulate libpixman-1-0-0.30.2-2.2.1
[    2s] [42/217] [43/217] [44/217] [45/217] [46/217] cumulate libspeex1-1.1.999_1.2rc1-21.1.2
[    2s] [47/217] [48/217] [49/217] [50/217] cumulate libwrap0-7.6-881.1.2
[    2s] [51/217] [52/217] [53/217] [54/217] [55/217] [56/217] cumulate libX11-xcb1-1.6.2-2.1.2
[    2s] [57/217] [58/217] [59/217] [60/217] [61/217] [62/217] [63/217] cumulate libdrm_nouveau2-2.4.46-3.2.2
[    2s] [64/217] cumulate libdrm_radeon1-2.4.46-3.2.2
[    2s] [65/217] [66/217] [67/217] [68/217] cumulate libjasper1-1.900.1-160.1.2
[    2s] [69/217] [70/217] [71/217] cumulate libpng16-16-1.6.6-1.1
[    2s] [72/217] [73/217] [74/217] [75/217] cumulate libvorbis0-1.3.3-6.1.4
[    2s] [76/217] cumulate libwayland-client0-1.2.1-1.1
[    2s] [77/217] cumulate libwayland-server0-1.2.1-1.1
[    2s] [78/217] cumulate libxcb1-1.9.1-3.1.2
[    2s] [79/217] cumulate libdrm_intel1-2.4.46-3.2.2
[    2s] [80/217] cumulate libkmod2-14-2.1.2
[    2s] [81/217] [82/217] cumulate libxml2-2-2.9.1-2.1.2
[    2s] [83/217] cumulate moarvm-2014.02-1.1
[    2s] [84/217] [85/217] cumulate moarvm-devel-2014.02-1.1
[    2s] [86/217] [87/217] [88/217] cumulate libgthread-2_0-0-2.38.1-1.1
[    2s] [89/217] cumulate libvorbisenc2-1.3.3-6.1.4
[    2s] [90/217] cumulate libxcb-dri2-0-1.9.1-3.1.2
[    2s] [91/217] cumulate libxcb-glx0-1.9.1-3.1.2
[    2s] [92/217] cumulate libxcb-render0-1.9.1-3.1.2
[    2s] [93/217] cumulate libxcb-shm0-1.9.1-3.1.2
[    2s] [94/217] cumulate libxcb-xfixes0-1.9.1-3.1.2
[    2s] [95/217] cumulate libFLAC8-1.3.0-2.1.2
[    2s] [96/217] cumulate libX11-6-1.6.2-2.1.2
[    2s] [97/217] [98/217] [99/217] [100/217] cumulate libfreetype6-2.5.0.1-2.1.2
[    2s] [101/217] cumulate libgobject-2_0-0-2.38.1-1.1
[    3s] [102/217] [103/217] [104/217] [105/217] [106/217] cumulate libLLVM-3.3-6.4.1
[    3s] [107/217] cumulate libgmpxx4-5.1.2-2.1.2
[    3s] [108/217] [109/217] cumulate libncurses6-5.9-33.1.2
[    3s] [110/217] [111/217] cumulate libtiff5-4.0.3-8.1.2
[    3s] [112/217] cumulate libXcomposite1-0.4.4-6.1.2
[    3s] [113/217] cumulate libXdamage1-1.1.4-6.1.2
[    3s] [114/217] cumulate libXext6-1.3.2-2.1.2
[    3s] [115/217] cumulate libXfixes3-5.0.1-2.1.2
[    3s] [116/217] cumulate libXrender1-0.9.8-2.1.2
[    3s] [117/217] [118/217] cumulate libatk-1_0-0-2.10.0-1.1
[    3s] [119/217] cumulate lcms2-2.5-2.1.2
[    3s] [120/217] cumulate libharfbuzz0-0.9.21-1.3
[    3s] [121/217] cumulate libsndfile1-1.0.25-17.1.2
[    3s] [122/217] [123/217] [124/217] [125/217] cumulate perl-IPC-Run3-0.046-2.1.2
[    3s] [126/217] cumulate perl-Probe-Perl-0.02-2.1.2
[    3s] [127/217] [128/217] cumulate libXi6-1.7.2-2.1.2
[    3s] [129/217] cumulate libXinerama1-1.1.3-2.1.2
[    3s] [130/217] cumulate libXtst6-1.2.2-2.1.2
[    3s] [131/217] cumulate libXxf86vm1-1.1.3-2.1.2
[    3s] [132/217] cumulate libXcursor1-1.1.14-2.1.2
[    3s] [133/217] cumulate libXrandr2-1.4.2-2.1.2
[    3s] [134/217] cumulate libpulse0-4.0.git.270.g9490a-1.1
[    3s] [135/217] [136/217] [137/217] [138/217] [139/217] [140/217] [141/217] cumulate fontconfig-2.11.0-1.1
[    3s] [142/217] cumulate ncurses-devel-5.9-33.1.2
[    3s] [143/217] cumulate perl-Test-Script-1.07-22.1.2
[    3s] [144/217] cumulate gdk-pixbuf-query-loaders-2.30.0-1.1
[    3s] [145/217] [146/217] [147/217] cumulate readline-devel-6.2-68.1.5
[    3s] [148/217] [149/217] [150/217] [151/217] [152/217] cumulate perl-File-Which-1.09-20.1.2
[    3s] [153/217] [154/217] [155/217] [156/217] [157/217] [158/217] cumulate gdbm-devel-1.10-7.1.2
[    3s] [159/217] [160/217] cumulate gmp-devel-5.1.2-2.1.2
[    3s] [161/217] [162/217] [163/217] [164/217] cumulate libXft2-2.3.1-7.1.2
[    3s] [165/217] [166/217] [167/217] [168/217] cumulate timezone-java-2013h-1.1
[    3s] [169/217] [170/217] cumulate timezone-2013h-1.1
[    3s] [171/217] [172/217] [173/217] [174/217] cumulate shared-mime-info-1.1-2.1.3
[    3s] [175/217] [176/217] cumulate krb5-mini-1.11.3-3.1.2
[    3s] [177/217] [178/217] [179/217] [180/217] cumulate libicu51_2-51.2-6.1.2
[    3s] [181/217] [182/217] cumulate cups-libs-1.5.4-12.1.3
[    3s] [183/217] [184/217] [185/217] cumulate libicu-devel-51.2-6.1.2
[    3s] [186/217] cumulate libparrot6_0_0-6.0.0-75.1
[    3s] [187/217] [188/217] [189/217] cumulate parrot-6.0.0-75.1
[    3s] [190/217] cumulate parrot-devel-6.0.0-75.1
[    4s] [191/217] [192/217] cumulate libgio-2_0-0-2.38.1-1.1
[    4s] [193/217] cumulate gio-branding-upstream-2.38.1-1.1
[    4s] [194/217] [195/217] [196/217] cumulate libgdk_pixbuf-2_0-0-2.30.0-1.1
[    4s] [197/217] [198/217] cumulate shadow-4.1.5.1-8.1.2
[    4s] [199/217] [200/217] [201/217] cumulate udev-mini-208-6.1
[    4s] [202/217] [203/217] [204/217] cumulate libudev-mini1-208-6.1
[    4s] [205/217] [206/217] cumulate libgbm1-9.2.2-61.6.1
[    4s] [207/217] cumulate Mesa-libEGL1-9.2.2-61.6.1
[    4s] [208/217] cumulate Mesa-9.2.2-61.6.1
[    4s] [209/217] cumulate Mesa-libGL1-9.2.2-61.6.1
[    4s] [210/217] cumulate libcairo2-1.12.16-3.1.3
[    4s] [211/217] cumulate pango-tools-1.36.0-1.1
[    4s] [212/217] cumulate libpango-1_0-0-1.36.0-1.1
[    4s] [213/217] cumulate libgtk-2_0-0-2.24.22-2.1
[    4s] [214/217] cumulate gtk2-tools-2.24.22-2.1
[    4s] [215/217] cumulate java-1_7_0-openjdk-1.7.0.6-24.2.1
[    4s] [216/217] cumulate java-1_7_0-openjdk-devel-1.7.0.6-24.2.1
[    4s] [217/217] now installing cumulated packages
[    4s] Preparing...                          ########################################
[    4s] Updating / installing...
[    4s] libdrm2-2.4.46-3.2.2                  ########################################
[    4s] libjpeg8-8.0.2-24.1.3                 ########################################
[    4s] libpng16-16-1.6.6-1.1                 ########################################
[    5s] libfreetype6-2.5.0.1-2.1.2            ########################################
[    5s] fontconfig-2.11.0-1.1                 ########################################
[    5s] libffi4-4.8.1_20130909-3.2.1          ########################################
[    5s] libgobject-2_0-0-2.38.1-1.1           ########################################
[    5s] libwayland-client0-1.2.1-1.1          ########################################
[    5s] libwayland-server0-1.2.1-1.1          ########################################
[    5s] libLLVM-3.3-6.4.1                     ########################################
[    5s] libogg0-1.3.0-8.1.2                   ########################################
[    5s] liblcms2-2-2.5-2.1.2                  ########################################
[    5s] Mesa-libglapi0-9.2.2-61.6.1           ########################################
[    5s] libX11-data-1.6.2-2.1.2               ########################################
[    6s] libX11-xcb1-1.6.2-2.1.2               ########################################
[    6s] libvorbis0-1.3.3-6.1.4                ########################################
[    6s] libvorbisenc2-1.3.3-6.1.4             ########################################
[    6s] libFLAC8-1.3.0-2.1.2                  ########################################
[    6s] libatk-1_0-0-2.10.0-1.1               ########################################
[    6s] gdk-pixbuf-query-loaders-2.30.0-1.1   ########################################
[    6s] libjasper1-1.900.1-160.1.2            ########################################
[    7s] libdrm_nouveau2-2.4.46-3.2.2          ########################################
[    7s] libdrm_radeon1-2.4.46-3.2.2           ########################################
[    7s] shadow-4.1.5.1-8.1.2                  ########################################
[    8s] Warning: running kernel does not support fscaps
[    8s] Warning: running kernel does not support fscaps
[    8s] Warning: running kernel does not support fscaps
[    8s] Warning: running kernel does not support fscaps
[    8s] Warning: running kernel does not support fscaps
[    8s] Warning: running kernel does not support fscaps
[    8s] Warning: running kernel does not support fscaps
[    8s] timezone-2013h-1.1                    ########################################
[    8s] timezone-java-2013h-1.1               ########################################
[    8s] gdbm-devel-1.10-7.1.2                 ########################################
[    9s] perl-Probe-Perl-0.02-2.1.2            ########################################
[    9s] perl-IPC-Run3-0.046-2.1.2             ########################################
[    9s] perl-Test-Script-1.07-22.1.2          ########################################
[    9s] perl-File-Which-1.09-20.1.2           ########################################
[    9s] libncurses6-5.9-33.1.2                ########################################
[    9s] ncurses-devel-5.9-33.1.2              ########################################
[   10s] readline-devel-6.2-68.1.5             ########################################
[   10s] libgmpxx4-5.1.2-2.1.2                 ########################################
[   10s] gmp-devel-5.1.2-2.1.2                 ########################################
[   10s] libgthread-2_0-0-2.38.1-1.1           ########################################
[   11s] moarvm-2014.02-1.1                    ########################################
[   11s] libxml2-2-2.9.1-2.1.2                 ########################################
[   11s] shared-mime-info-1.1-2.1.3            ########################################
[   12s] gio-branding-upstream-2.38.1-1.1      ########################################
[   12s] libgio-2_0-0-2.38.1-1.1               ########################################
[   12s] libkmod2-14-2.1.2                     ########################################
[   12s] libudev-mini1-208-6.1                 ########################################
[   13s] udev-mini-208-6.1                     ########################################
[   13s] libwrap0-7.6-881.1.2                  ########################################
[   13s] libspeex1-1.1.999_1.2rc1-21.1.2       ########################################
[   13s] libsndfile1-1.0.25-17.1.2             ########################################
[   13s] libpixman-1-0-0.30.2-2.2.1            ########################################
[   13s] libpciaccess0-0.13.2-2.1.2            ########################################
[   13s] libdrm_intel1-2.4.46-3.2.2            ########################################
[   13s] libkeyutils1-1.5.5-6.1.3              ########################################
[   13s] libjson0-0.10-3.1.2                   ########################################
[   13s] libjbig2-2.0-10.1.2                   ########################################
[   14s] libtiff5-4.0.3-8.1.2                  ########################################
[   14s] lcms2-2.5-2.1.2                       ########################################
[   14s] libgraphite2-3-1.2.0-6.1.2            ########################################
[   14s] libharfbuzz0-0.9.21-1.3               ########################################
[   14s] libgif6-5.0.5-2.1.2                   ########################################
[   14s] libdbus-1-3-1.7.4-4.4.1               ########################################
[   15s] libcom_err2-1.42.8-2.1.2              ########################################
[   15s] krb5-mini-1.11.3-3.1.2                ########################################
[   16s] Updating /etc/sysconfig/kadmind...
[   16s] Updating /etc/sysconfig/krb5kdc...
[   16s] cups-libs-1.5.4-12.1.3                ########################################
[   17s] libasound2-1.0.27.2-3.2.1             ########################################
[   17s] libXau6-1.0.8-2.2.1                   ########################################
[   17s] libxcb1-1.9.1-3.1.2                   ########################################
[   17s] libX11-6-1.6.2-2.1.2                  ########################################
[   17s] libXext6-1.3.2-2.1.2                  ########################################
[   17s] libXrender1-0.9.8-2.1.2               ########################################
[   17s] libXfixes3-5.0.1-2.1.2                ########################################
[   18s] libgdk_pixbuf-2_0-0-2.30.0-1.1        ########################################
[   18s] libxcb-dri2-0-1.9.1-3.1.2             ########################################
[   18s] libgbm1-9.2.2-61.6.1                  ########################################
[   18s] libXft2-2.3.1-7.1.2                   ########################################
[   18s] libXi6-1.7.2-2.1.2                    ########################################
[   18s] libXdamage1-1.1.4-6.1.2               ########################################
[   19s] libXcursor1-1.1.14-2.1.2              ########################################
[   19s] libXrandr2-1.4.2-2.1.2                ########################################
[   19s] libXinerama1-1.1.3-2.1.2              ########################################
[   19s] libXtst6-1.2.2-2.1.2                  ########################################
[   19s] libXxf86vm1-1.1.3-2.1.2               ########################################
[   19s] libXcomposite1-0.4.4-6.1.2            ########################################
[   19s] libxcb-glx0-1.9.1-3.1.2               ########################################
[   20s] libxcb-render0-1.9.1-3.1.2            ########################################
[   20s] libxcb-shm0-1.9.1-3.1.2               ########################################
[   20s] libxcb-xfixes0-1.9.1-3.1.2            ########################################
[   21s] Mesa-libEGL1-9.2.2-61.6.1             ########################################
[   22s] Mesa-9.2.2-61.6.1                     ########################################
[   22s] Mesa-libGL1-9.2.2-61.6.1              ########################################
[   22s] libcairo2-1.12.16-3.1.3               ########################################
[   22s] pango-tools-1.36.0-1.1                ########################################
[   22s] /usr/bin/pango-querymodules-64: error while loading shared libraries: libpango-1.0.so.0: cannot open shared object file: No such file or directory
[   22s] warning: %post(pango-tools-1.36.0-1.1.x86_64) scriptlet failed, exit status 127
[   22s] libpango-1_0-0-1.36.0-1.1             ########################################
[   22s] libpulse0-4.0.git.270.g9490a-1.1      ########################################
[   23s] libicu51_2-data-51.2-6.1.2            ########################################
[   23s] libicu51_2-51.2-6.1.2                 ########################################
[   23s] libparrot6_0_0-6.0.0-75.1             ########################################
[   24s] parrot-6.0.0-75.1                     ########################################
[   25s] libicu-devel-51.2-6.1.2               ########################################
[   25s] hicolor-icon-theme-0.12-21.1.2        ########################################
[   25s] gtk2-tools-2.24.22-2.1                ########################################
[   25s] update-alternatives: using /usr/bin/gtk-update-icon-cache-2.0 to provide /usr/bin/gtk-update-icon-cache (gtk-update-icon-cache) in auto mode
[   27s] libgtk-2_0-0-2.24.22-2.1              ########################################
[   31s] java-1_7_0-openjdk-1.7.0.6-24.2.1     ########################################
[   31s] update-alternatives: using /usr/lib64/jvm/jre-1.7.0-openjdk/bin/java to provide /usr/bin/java (java) in auto mode
[   32s] update-alternatives: using /usr/lib64/jvm/jre-1.7.0-openjdk to provide /usr/lib64/jvm/jre-openjdk (jre_openjdk) in auto mode
[   32s] update-alternatives: using /usr/lib64/jvm/jre-1.7.0-openjdk to provide /usr/lib64/jvm/jre-1.7.0 (jre_1.7.0) in auto mode
[   34s] java-1_7_0-openjdk-devel-1.7.0.6-24.2.########################################
[   35s] update-alternatives: using /usr/lib64/jvm/java-1.7.0-openjdk/bin/javac to provide /usr/bin/javac (javac) in auto mode
[   35s] update-alternatives: using /usr/lib64/jvm/java-1.7.0-openjdk to provide /usr/lib64/jvm/java-openjdk (java_sdk_openjdk) in auto mode
[   35s] update-alternatives: using /usr/lib64/jvm/java-1.7.0-openjdk to provide /usr/lib64/jvm/java-1.7.0 (java_sdk_1.7.0) in auto mode
[   35s] parrot-devel-6.0.0-75.1               ########################################
[   36s] moarvm-devel-2014.02-1.1              ########################################
[   36s] /var/tmp/rpm-tmp.4gHmC8: line 8: /usr/sbin/update-ca-certificates: No such file or directory
[   36s] removing nis flags from /var/tmp/build-root/openSUSE_13.1-x86_64/etc/nsswitch.conf...
[   36s] now finalizing build dir...
[   37s] -----------------------------------------------------------------
[   37s] I have the following modifications for nqp.spec:
[   37s] -----------------------------------------------------------------
[   37s] ----- building nqp.spec (user abuild)
[   37s] -----------------------------------------------------------------
[   37s] -----------------------------------------------------------------
[   37s] + exec rpmbuild -ba --define '_srcdefattr (-,root,root)' --nosignature /home/abuild/rpmbuild/SOURCES/nqp.spec
[   37s] Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.3YVIv0
[   37s] + umask 022
[   37s] + cd /home/abuild/rpmbuild/BUILD
[   37s] + cd /home/abuild/rpmbuild/BUILD
[   37s] + rm -rf nqp-2014.02
[   37s] + /usr/bin/gzip -dc /home/abuild/rpmbuild/SOURCES/nqp-2014.02.tar.gz
[   37s] + /bin/tar -xf -
[   37s] + STATUS=0
[   37s] + '[' 0 -ne 0 ']'
[   37s] + cd nqp-2014.02
[   37s] + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
[   37s] + echo 'Patch #1 (arm-use-fpic.diff):'
[   37s] Patch #1 (arm-use-fpic.diff):
[   37s] + /usr/bin/cat /home/abuild/rpmbuild/SOURCES/arm-use-fpic.diff
[   37s] + /usr/bin/patch -p0 --fuzz=0
[   37s] patching file 3rdparty/dyncall/buildsys/gmake/tool/gcc.gmake
[   37s] Hunk #1 succeeded at 71 (offset 10 lines).
[   37s] + exit 0
[   37s] Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.nqv5qh
[   37s] + umask 022
[   37s] + cd /home/abuild/rpmbuild/BUILD
[   37s] + /usr/bin/rm -rf /home/abuild/rpmbuild/BUILDROOT/nqp-2014.02-0.x86_64
[   37s] ++ dirname /home/abuild/rpmbuild/BUILDROOT/nqp-2014.02-0.x86_64
[   37s] + /usr/bin/mkdir -p /home/abuild/rpmbuild/BUILDROOT
[   37s] + /usr/bin/mkdir /home/abuild/rpmbuild/BUILDROOT/nqp-2014.02-0.x86_64
[   37s] + cd nqp-2014.02
[   37s] + perl -i '-lpes|\$prefix/bin/moar\$exe|/usr/bin/moar|' tools/lib/NQP/Configure.pm
[   37s] + perl -i '-lpes|\@prefix@|/usr|g;' tools/build/Makefile-Moar.in
[   37s] + perl Configure.pl --backends=parrot,jvm,moar --prefix=/usr
[   38s] Verifying installation ...
[   38s] Using /usr/bin/parrot (version 0).
[   38s] * configure package dyncall
[   38s] guess operating system linux
[   38s] guess arch x64
[   38s] guess tool gcc
[   38s] guess assembler as
[   38s] 
[   38s] Creating gen/parrot/nqp_launcher ...
[   38s] Found /usr/bin/moar version 2014.02, which is new enough.
[   38s] Using java version "1.7.0_45"
[   38s] 
[   38s] Cleaning up ...
[   38s] You can now use 'make' to build NQP.
[   38s] After that, 'make test' will run some tests and
[   38s] 'make install' will install NQP.
[   38s] + /usr/bin/make NQP_LANG_DIR=/usr/lib/nqp
[   39s] /usr/bin/perl -MExtUtils::Command -e mkpath bin
[   39s] javac -source 1.7 -cp 3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar -g -d bin src/vm/jvm/runtime/org/perl6/nqp/io/*.java src/vm/jvm/runtime/org/perl6/nqp/jast2bc/*.java src/vm/jvm/runtime/org/perl6/nqp/runtime/*.java src/vm/jvm/runtime/org/perl6/nqp/sixmodel/*.java src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/*.java src/vm/jvm/runtime/org/perl6/nqp/tools/*.java 
[   49s] /usr/bin/perl tools/build/gen-jvm-properties.pl . 3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar > jvmconfig.properties
[   49s] /usr/bin/perl tools/build/gen-jvm-properties.pl /usr 3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar > bin/jvmconfig.properties
[   49s] jar cf0 nqp-runtime.jar -C bin/ .
[   49s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage1
[   49s] /usr/bin/perl tools/build/gen-cat.pl jvm src/how/Archetypes.nqp src/how/RoleToRoleApplier.nqp src/how/NQPConcreteRoleHOW.nqp src/how/RoleToClassApplier.nqp src/how/NQPCurriedRoleHOW.nqp src/how/NQPParametricRoleHOW.nqp src/how/NQPClassHOW.nqp src/how/NQPNativeHOW.nqp src/how/NQPAttribute.nqp src/how/NQPModuleHOW.nqp src/how/EXPORTHOW.nqp  > gen/jvm/stage1/nqpmo.nqp
[   49s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --setting=NULL --no-regex-lib --target=jar \
[   49s]     --output=gen/jvm/stage1/nqpmo.jar gen/jvm/stage1/nqpmo.nqp
[   70s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --setting=NULL --no-regex-lib --target=jar \
[   70s]     --output=gen/jvm/stage1/ModuleLoader.jar src/vm/jvm/ModuleLoader.nqp
[   80s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage1
[   80s] /usr/bin/perl tools/build/gen-cat.pl jvm src/core/NativeTypes.nqp src/core/NQPRoutine.nqp src/core/NQPMu.nqp src/core/NQPCapture.nqp src/core/IO.nqp src/core/Regex.nqp src/core/Hash.nqp src/core/testing.nqp src/core/YOUAREHERE.nqp  > gen/jvm/stage1/NQPCORE.setting
[   80s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage1 --setting=NULL --no-regex-lib --target=jar \
[   80s]     --output=gen/jvm/stage1/NQPCORE.setting.jar gen/jvm/stage1/NQPCORE.setting
[   96s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage1
[   96s] /usr/bin/perl tools/build/gen-cat.pl jvm src/QAST/CompileTimeValue.nqp src/QAST/SpecialArg.nqp src/QAST/Node.nqp src/QAST/Regex.nqp src/QAST/IVal.nqp src/QAST/NVal.nqp src/QAST/SVal.nqp src/QAST/BVal.nqp src/QAST/WVal.nqp src/QAST/Want.nqp src/QAST/Var.nqp src/QAST/VarWithFallback.nqp src/QAST/ParamTypeCheck.nqp src/QAST/Op.nqp src/QAST/VM.nqp src/QAST/Stmts.nqp src/QAST/Stmt.nqp src/QAST/Block.nqp src/QAST/Unquote.nqp src/QAST/CompUnit.nqp src/QAST/InlinePlaceholder.nqp  > gen/jvm/stage1/QASTNode.nqp
[   96s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage1 --setting-path=gen/jvm/stage1 \
[   96s]          --setting=NQPCORE --no-regex-lib --target=jar \
[   96s]     --output=gen/jvm/stage1/QASTNode.jar gen/jvm/stage1/QASTNode.nqp
[  113s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage1
[  113s] /usr/bin/perl tools/build/gen-cat.pl jvm src/QRegex/NFA.nqp src/QRegex/Cursor.nqp  > gen/jvm/stage1/QRegex.nqp
[  113s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage1 --setting-path=gen/jvm/stage1 \
[  113s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  113s]     --output=gen/jvm/stage1/QRegex.jar gen/jvm/stage1/QRegex.nqp
[  136s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage1
[  136s] /usr/bin/perl tools/build/gen-cat.pl jvm src/vm/jvm/HLL/Backend.nqp src/HLL/Grammar.nqp src/HLL/Actions.nqp src/HLL/Compiler.nqp src/HLL/CommandLine.nqp src/HLL/World.nqp src/HLL/sprintf.nqp  > gen/jvm/stage1/NQPHLL.nqp
[  136s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage1 --setting-path=gen/jvm/stage1 \
[  136s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  136s]     --output=gen/jvm/stage1/NQPHLL.jar gen/jvm/stage1/NQPHLL.nqp
[  166s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage1
[  166s] /usr/bin/perl tools/build/gen-cat.pl jvm src/vm/jvm/QAST/JASTNodes.nqp  > gen/jvm/stage1/JASTNodes.nqp
[  166s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage1 --setting-path=gen/jvm/stage1 \
[  166s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  166s]     --output=gen/jvm/stage1/JASTNodes.jar gen/jvm/stage1/JASTNodes.nqp
[  183s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage1
[  183s] /usr/bin/perl tools/build/gen-cat.pl jvm src/vm/jvm/QAST/Compiler.nqp > gen/jvm/stage1/QAST.nqp
[  183s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage1 --setting-path=gen/jvm/stage1 \
[  183s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  183s]     --output=gen/jvm/stage1/QAST.jar gen/jvm/stage1/QAST.nqp
[  244s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage1
[  244s] /usr/bin/perl tools/build/gen-cat.pl jvm src/QRegex/P6Regex/Grammar.nqp src/QRegex/P6Regex/Actions.nqp src/QRegex/P6Regex/Compiler.nqp src/QRegex/P6Regex/Optimizer.nqp  > gen/jvm/stage1/NQPP6QRegex.nqp
[  244s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage1 --setting-path=gen/jvm/stage1 \
[  244s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  244s]     --output=gen/jvm/stage1/NQPP6QRegex.jar gen/jvm/stage1/NQPP6QRegex.nqp
[  272s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage1
[  272s] /usr/bin/perl tools/build/gen-version.pl > gen/jvm/stage1/nqp-config.nqp
[  272s] /usr/bin/perl tools/build/gen-cat.pl jvm src/vm/jvm/NQP/Ops.nqp src/NQP/World.nqp src/NQP/Grammar.nqp src/NQP/Optimizer.nqp src/NQP/Actions.nqp src/NQP/Compiler.nqp  gen/jvm/stage1/nqp-config.nqp > gen/jvm/stage1/NQP.nqp
[  272s] java -cp src/vm/jvm/stage0 -Xbootclasspath/a:src/vm/jvm/stage0:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:src/vm/jvm/stage0/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage1 --setting-path=gen/jvm/stage1 \
[  272s]          --setting=NQPCORE --target=jar --no-regex-lib --javaclass=nqp \
[  272s]     --output=gen/jvm/stage1/nqp.jar gen/jvm/stage1/NQP.nqp
[  317s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2
[  317s] /usr/bin/perl tools/build/gen-cat.pl jvm src/how/Archetypes.nqp src/how/RoleToRoleApplier.nqp src/how/NQPConcreteRoleHOW.nqp src/how/RoleToClassApplier.nqp src/how/NQPCurriedRoleHOW.nqp src/how/NQPParametricRoleHOW.nqp src/how/NQPClassHOW.nqp src/how/NQPNativeHOW.nqp src/how/NQPAttribute.nqp src/how/NQPModuleHOW.nqp src/how/EXPORTHOW.nqp  > gen/jvm/stage2/nqpmo.nqp
[  317s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --setting=NULL --no-regex-lib --target=jar \
[  317s]     --output=gen/jvm/stage2/nqpmo.jar gen/jvm/stage2/nqpmo.nqp
[  333s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --setting=NULL --no-regex-lib --target=jar \
[  333s]     --output=gen/jvm/stage2/ModuleLoader.jar src/vm/jvm/ModuleLoader.nqp
[  342s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2
[  342s] /usr/bin/perl tools/build/gen-cat.pl jvm src/core/NativeTypes.nqp src/core/NQPRoutine.nqp src/core/NQPMu.nqp src/core/NQPCapture.nqp src/core/IO.nqp src/core/Regex.nqp src/core/Hash.nqp src/core/testing.nqp src/core/YOUAREHERE.nqp  > gen/jvm/stage2/NQPCORE.setting
[  342s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting=NULL --no-regex-lib --target=jar \
[  342s]     --output=gen/jvm/stage2/NQPCORE.setting.jar gen/jvm/stage2/NQPCORE.setting
[  358s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2
[  358s] /usr/bin/perl tools/build/gen-cat.pl jvm src/QAST/CompileTimeValue.nqp src/QAST/SpecialArg.nqp src/QAST/Node.nqp src/QAST/Regex.nqp src/QAST/IVal.nqp src/QAST/NVal.nqp src/QAST/SVal.nqp src/QAST/BVal.nqp src/QAST/WVal.nqp src/QAST/Want.nqp src/QAST/Var.nqp src/QAST/VarWithFallback.nqp src/QAST/ParamTypeCheck.nqp src/QAST/Op.nqp src/QAST/VM.nqp src/QAST/Stmts.nqp src/QAST/Stmt.nqp src/QAST/Block.nqp src/QAST/Unquote.nqp src/QAST/CompUnit.nqp src/QAST/InlinePlaceholder.nqp  > gen/jvm/stage2/QASTNode.nqp
[  358s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting-path=gen/jvm/stage2 \
[  358s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  358s]     --output=gen/jvm/stage2/QASTNode.jar gen/jvm/stage2/QASTNode.nqp
[  375s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2
[  376s] /usr/bin/perl tools/build/gen-cat.pl jvm src/QRegex/NFA.nqp src/QRegex/Cursor.nqp  > gen/jvm/stage2/QRegex.nqp
[  376s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting-path=gen/jvm/stage2 \
[  376s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  376s]     --output=gen/jvm/stage2/QRegex.jar gen/jvm/stage2/QRegex.nqp
[  404s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2/gen
[  404s] /usr/bin/perl tools/build/gen-cat.pl jvm src/vm/jvm/HLL/Backend.nqp src/HLL/Grammar.nqp src/HLL/Actions.nqp src/HLL/Compiler.nqp src/HLL/CommandLine.nqp src/HLL/World.nqp src/HLL/sprintf.nqp  > gen/jvm/stage2/NQPHLL.nqp
[  404s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting-path=gen/jvm/stage2 \
[  404s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  404s]     --output=gen/jvm/stage2/NQPHLL.jar gen/jvm/stage2/NQPHLL.nqp
[  434s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2
[  434s] /usr/bin/perl tools/build/gen-cat.pl jvm src/vm/jvm/QAST/JASTNodes.nqp  > gen/jvm/stage2/JASTNodes.nqp
[  434s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting-path=gen/jvm/stage2 \
[  434s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  434s]     --output=gen/jvm/stage2/JASTNodes.jar gen/jvm/stage2/JASTNodes.nqp
[  450s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2
[  450s] /usr/bin/perl tools/build/gen-cat.pl jvm src/vm/jvm/QAST/Compiler.nqp > gen/jvm/stage2/QAST.nqp
[  450s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting-path=gen/jvm/stage2 \
[  450s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  450s]     --output=gen/jvm/stage2/QAST.jar gen/jvm/stage2/QAST.nqp
[  521s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2
[  521s] /usr/bin/perl tools/build/gen-cat.pl jvm src/QRegex/P6Regex/Grammar.nqp src/QRegex/P6Regex/Actions.nqp src/QRegex/P6Regex/Compiler.nqp src/QRegex/P6Regex/Optimizer.nqp  > gen/jvm/stage2/NQPP6QRegex.nqp
[  521s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting-path=gen/jvm/stage2 \
[  521s]          --setting=NQPCORE --no-regex-lib --target=jar \
[  521s]     --output=gen/jvm/stage2/NQPP6QRegex.jar gen/jvm/stage2/NQPP6QRegex.nqp
[  552s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2
[  552s] /usr/bin/perl tools/build/gen-version.pl > gen/jvm/stage2/nqp-config.nqp
[  552s] /usr/bin/perl tools/build/gen-cat.pl jvm src/vm/jvm/NQP/Ops.nqp src/NQP/World.nqp src/NQP/Grammar.nqp src/NQP/Optimizer.nqp src/NQP/Actions.nqp src/NQP/Compiler.nqp  gen/jvm/stage2/nqp-config.nqp > gen/jvm/stage2/NQP.nqp
[  552s] java -cp gen/jvm/stage1 -Xbootclasspath/a:gen/jvm/stage1:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar:3rdparty/asm/asm-tree-4.1.jar:3rdparty/jline/jline-1.0.jar:3rdparty/jna/jna.jar:gen/jvm/stage1/nqp.jar nqp --bootstrap --module-path=gen/jvm/stage2 --setting-path=gen/jvm/stage2 \
[  552s]          --setting=NQPCORE --target=jar --no-regex-lib --javaclass=nqp \
[  552s]     --output=gen/jvm/stage2/nqp.jar gen/jvm/stage2/NQP.nqp
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/nqpmo.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/ModuleLoader.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/NQPCORE.setting.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/QASTNode.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/QRegex.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/NQPHLL.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/JASTNodes.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/QAST.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/NQPP6QRegex.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp gen/jvm/stage2/nqp.jar .
[  597s] /usr/bin/perl -MExtUtils::Command -e cp src/vm/jvm/runners/nqp-j .
[  597s] /usr/bin/perl -MExtUtils::Command -e chmod 755 nqp-j
[  597s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/jvm/stage2
[  597s] /usr/bin/perl tools/build/gen-cat.pl jvm src/QRegex/P5Regex/Grammar.nqp src/QRegex/P5Regex/Actions.nqp src/QRegex/P5Regex/Compiler.nqp  > gen/jvm/stage2/NQPP5QRegex.nqp
[  597s] ./nqp-j --target=jar --output=NQPP5QRegex.jar \
[  597s]     gen/jvm/stage2/NQPP5QRegex.nqp
[  618s] /usr/bin/perl -MExtUtils::Command -e mkpath gen/moar/stage1/gen
[  618s] /usr/bin/perl tools/build/gen-cat.pl moar src/how/Archetypes.nqp src/how/RoleToRoleApplier.nqp src/how/NQPConcreteRoleHOW.nqp src/how/RoleToClassApplier.nqp src/how/NQPCurriedRoleHOW.nqp src/how/NQPParametricRoleHOW.nqp src/how/NQPClassHOW.nqp src/how/NQPNativeHOW.nqp src/how/NQPAttribute.nqp src/how/NQPModuleHOW.nqp src/how/EXPORTHOW.nqp  > gen/moar/stage1/nqpmo.nqp
[  618s] /usr/bin/moar --libpath=src/vm/moar/stage0 src/vm/moar/stage0/nqp.moarvm --bootstrap --setting=NULL --no-regex-lib --target=mbc \
[  618s]     --output=gen/moar/stage1/nqpmo.moarvm gen/moar/stage1/nqpmo.nqp
[  618s] make: *** [gen/moar/stage1/nqpmo.moarvm] Segmentation fault
[  618s] error: Bad exit status from /var/tmp/rpm-tmp.nqv5qh (%build)
[  618s] 
[  618s] 
[  618s] RPM build errors:
[  618s]     Bad exit status from /var/tmp/rpm-tmp.nqv5qh (%build)

FROGGS requested moarvm details:

build log https://build.opensuse.org/package/live_build_log/home:ldieckow:branches:devel:languages:parrot/moarvm/openSUSE_13.1/x86_64
spec file https://build.opensuse.org/package/view_file/home:ldieckow:branches:devel:languages:parrot/moarvm/moarvm.spec?expand=1
packages http://software.opensuse.org/download.html?project=home%3Aldieckow%3Abranches%3Adevel%3Alanguages%3Aparrot&package=moarvm

extend hash to traverse trees

note this also has a dependency on fixing the tree strings so they don't need flattening after every creation op too :)

22:17 < diakopter> oh, another todo :)
22:17 < diakopter> extend the hash algorithm to be smart enough to traverse tree strings instead of requiring all strings to be flattened before used as
hash keys
22:18 < diakopter> the machinery to make the traversal modular enough should already mostly be there
22:18 < diakopter> should I add it as an issue?
22:18 < not_gerd> does it make sense to cache the hash value?
22:19 < diakopter> yes
22:19 < not_gerd> having it around is also useful for eq
22:19 < not_gerd> do we already do it?
22:19 < diakopter> don't think so
22:19 < diakopter> though I might've put a slot in for it

Consistent naming for REPRs

The REPR name occurs in various places, among those the prefix of C structures and functions, file names, the MVM_REPR_ID_* constant and the actual user-exposed name member of the MVMREPROps structure.

Some names have a VM prefix for vm-specific but multi-backend types and some purely MoarVM-specific types have a MVM prefix.

For readability, both C prefixes MVMVM and MVMMVM get shortened to MVM. However, we also lost the distinction between VM and MVM REPRs where we need not do so, in particular the file names and REPR-ID constants.

For consistency, these should match their authorative, user-exposed names - eg MVMString should be kept as-is, but MVMArray.c, MVMArray.h and MVM_REPR_ID_MVMArray should be renamed to VMArray*.

moar segfault calling uv_fs_read

Attempting to build nqp.

Software versions:

libuv 0.11.28
moarvm 9a4fda83f68c204bf9d1aa9ccd0c6e0c6fd3cec2
nqp 92be0f859997c6565cb895d3ab167a8c06ac80d0

Software configuration:

libuv:
    ./configure --disable-static --prefix=$HOME/p6/libuv
    make CFLAGS=-g

moarvm:
    perl Configure.pl --debug --instrument --prefix=$HOME/p6/moar --has-libuv --has-libatomic_ops --has-libtommath --use-readline \
    --cc "$(which cc) -I $HOME/p6/libuv/include -L $HOME/p6/libuv/lib64 -Wl,-rpath,$HOME/p6/libuv/lib64"

nqp:
    patch -p0 < ../with-moar.diff
    perl Configure.pl --prefix=$HOME/p6/nqp --backends=moar --with-moar=$HOME/p6/moar/bin/moar
    make MOAR=$HOME/p6/moar/bin/moar

../with-moar.diff:
    diff --git a/Configure.pl b/Configure.pl
    index 97b7cb5..4a3c106 100644
    --- a/Configure.pl
    +++ b/Configure.pl
    @@ -29,7 +29,7 @@ MAIN: {
                    'with-parrot=s', 'gen-parrot:s',
                    'make-install!', 'makefile-timing!',
                    'backends=s', 'gen-moar:s', 'moar-option=s@',
    -               'git-protocol=s',
    +               'with-moar=s', 'git-protocol=s',
                    'parrot-config=s', 'parrot-option=s@');

        # Print help if it's requested
    diff --git a/tools/lib/NQP/Configure.pm b/tools/lib/NQP/Configure.pm
    index 1393087..9e137cd 100644
    --- a/tools/lib/NQP/Configure.pm
    +++ b/tools/lib/NQP/Configure.pm
    @@ -428,7 +428,7 @@ sub gen_moar {
        my $startdir   = cwd();
        my $git_protocol = $options{'git-protocol'} || 'https';

    -    my $moar_exe   = "$prefix/bin/moar$exe";
    +    my $moar_exe   = $options{'with-moar'} || "$prefix/bin/moar$exe";
        my $moar_have  = qx{ $moar_exe --version };
        if ($moar_have) {
            $moar_have = $moar_have =~ /version (\S+)/ ? $1 : undef;

To reproduce:

nqp$ make MOAR=$HOME/p6/moar/bin/moar
/home/daxim/local/share/perlbrew/perls/perl-5.20.0/bin/perl -MExtUtils::Command -e mkpath gen/moar/stage1/gen
/home/daxim/local/share/perlbrew/perls/perl-5.20.0/bin/perl tools/build/gen-cat.pl moar src/how/Archetypes.nqp src/how/RoleToRoleApplier.nqp src/how/NQPConcreteRoleHOW.nqp src/how/RoleToClassApplier.nqp src/how/NQPCurriedRoleHOW.nqp src/how/NQPParametricRoleHOW.nqp src/how/NQPClassHOW.nqp src/how/NQPNativeHOW.nqp src/how/NQPAttribute.nqp src/how/NQPModuleHOW.nqp src/how/EXPORTHOW.nqp  > gen/moar/stage1/nqpmo.nqp
/home/daxim/p6/moar/bin/moar --libpath=src/vm/moar/stage0 src/vm/moar/stage0/nqp.moarvm --bootstrap --setting=NULL --no-regex-lib --target=mbc \
    --output=gen/moar/stage1/nqpmo.moarvm gen/moar/stage1/nqpmo.nqp
make: *** [gen/moar/stage1/nqpmo.moarvm] Speicherzugriffsfehler

Backtrace:

nqp$ gdb /home/daxim/p6/moar/bin/moar
GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
..
Reading symbols from /home/daxim/p6/moar/bin/moar...done.
(gdb) r --libpath=src/vm/moar/stage0 src/vm/moar/stage0/nqp.moarvm --bootstrap --setting=NULL --no-regex-lib --target=mbc \
    --output=gen/moar/stage1/nqpmo.moarvm gen/moar/stage1/nqpmo.nqp
Starting program: /home/daxim/p6/moar/bin/moar --libpath=src/vm/moar/stage0 src/vm/moar/stage0/nqp.moarvm --bootstrap --setting=NULL --no-regex-lib --target=mbc     --output=gen/moar/stage1/nqpmo.moarvm gen/moar/stage1/nqpmo.nqp
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
__memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:40
40      ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Datei oder Verzeichnis nicht gefunden.
(gdb) bt full
#0  __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:40
No locals.
#1  0x00007ffff72d5e91 in uv_fs_read (loop=0x7ffff74e8b20 <default_loop_struct>, req=req@entry=0x7fffffffd180, file=<optimized out>, bufs=bufs@entry=0xcfa9f0, nbufs=nbufs@entry=47214, 
    off=off@entry=-1, cb=cb@entry=0x0) at src/unix/fs.c:1053
No locals.
#2  0x00007ffff79d74ee in read_to_buffer (tc=tc@entry=0x604030, data=data@entry=0xcc9f30, bytes=47214) at src/io/syncfile.c:97
        buf = 0xcfa9f0 ""
        req = {data = 0x7ffff7f9e690, type = UV_FS, active_queue = {0x7ffff74e8b40 <default_loop_struct+32>, 0x7ffff74e8b40 <default_loop_struct+32>}, fs_type = UV_FS_READ, 
        loop = 0x7ffff74e8b20 <default_loop_struct>, cb = 0x0, result = 0, ptr = 0x0, path = 0x0, statbuf = {st_dev = 4, st_mode = 140737353758000, st_nlink = 162, 
            st_uid = 140737340328722, st_gid = 140737488343584, st_rdev = 140737488343568, st_ino = 140737488343888, st_size = 140737346416601, st_blksize = 4294967295, st_blocks = 0, 
            st_flags = 140737340284496, st_gen = 140737353758000, st_atim = {tv_sec = 140733193388156, tv_nsec = 2160255167}, st_mtim = {tv_sec = 4, tv_nsec = 96}, st_ctim = {tv_sec = 1, 
            tv_nsec = 140733193388081}, st_birthtim = {tv_sec = 64769, tv_nsec = 11814943}}, new_path = 0x0, file = 14, flags = 1000, mode = 100, nbufs = 47214, bufs = 0x7ffff5431010, 
        off = 47214, uid = 4096, gid = 0, atime = 4.7430302000759668e-322, mtime = 6.955250976690351e-315, work_req = {work = 0x2dd0778d, done = 0x53e8b2e9, loop = 0x37fe1ca7, wq = {
            0x53e8b2e9, 0x37fe1ca7}}, bufsml = {{base = 0x0, len = 0}, {base = 0x0, len = 13410096}, {base = 0x7fffffffd350 "\240\324\377\377\377\177", len = 140737488344192}, {
            base = 0xcc9f30 "\016", len = 13410048}}}
        read = <optimized out>
#3  0x00007ffff79d7690 in slurp (tc=0x604030, h=<optimized out>) at src/io/syncfile.c:140
        data = 0xcc9f30
        req = {data = 0x7fffffffd4a0, type = UV_FS, active_queue = {0x7ffff74e8b40 <default_loop_struct+32>, 0x7ffff74e8b40 <default_loop_struct+32>}, fs_type = UV_FS_FSTAT, 
        loop = 0x7ffff74e8b20 <default_loop_struct>, cb = 0x0, result = 0, ptr = 0x7fffffffd3a0, path = 0x0, statbuf = {st_dev = 64769, st_mode = 33188, st_nlink = 1, st_uid = 1000, 
            st_gid = 100, st_rdev = 0, st_ino = 11814943, st_size = 47214, st_blksize = 4096, st_blocks = 96, st_flags = 0, st_gen = 0, st_atim = {tv_sec = 1407758470, 
            tv_nsec = 768636813}, st_mtim = {tv_sec = 1407759081, tv_nsec = 939400359}, st_ctim = {tv_sec = 1407759081, tv_nsec = 939400359}, st_birthtim = {tv_sec = 1407759081, 
            tv_nsec = 939400359}}, new_path = 0x0, file = 14, flags = 32767, mode = 1, nbufs = 0, bufs = 0x0, off = 140737488344368, uid = 4153002352, gid = 32767, 
        atime = 3.116510758614249e-317, mtime = 6.9533490645511836e-310, work_req = {work = 0x0, done = 0x7ffff5948568, loop = 0x7fffffffd4e0, wq = {0x7ffff75d3534 <mcount+52>, 0x0}}, 
        bufsml = {{base = 0xa <Address 0xa out of bounds>, len = 0}, {base = 0xcc9f00 "\001", len = 6307888}, {base = 0xcc9f00 "\001", len = 4}, {
            base = 0x7ffff79bca24 <MVM_tc_set_ex_release_mutex+10> "H\203\177x", len = 140737488344320}}}
#4  0x00007ffff79d6314 in MVM_io_slurp (tc=tc@entry=0x604030, oshandle=<optimized out>) at src/io/io.c:142
        mutex = 0xcc9f00
        result = <optimized out>
        handle = 0x7ffff594bfd8
#5  0x00007ffff79b7ab9 in MVM_interp_run (tc=tc@entry=0x604030, initial_invoke=initial_invoke@entry=0x7ffff7a20894 <toplevel_initial_invoke>, invoke_data=<optimized out>)
    at src/core/interp.c:3325
        op = <optimized out>
        LABELS = {0x7ffff79abfa2 <MVM_interp_run+128>, 0x7ffff79acb00 <MVM_interp_run+3038>, 0x7ffff79acb02 <MVM_interp_run+3040>, 0x7ffff79acb02 <MVM_interp_run+3040>, 
        0x7ffff79acb1a <MVM_interp_run+3064>, 0x7ffff79acb50 <MVM_interp_run+3118>, 0x7ffff79acb68 <MVM_interp_run+3142>, 0x7ffff79acba0 <MVM_interp_run+3198>, 
        0x7ffff79ac45a <MVM_interp_run+1336>, 0x7ffff79ac408 <MVM_interp_run+1254>, 0x7ffff79ac40a <MVM_interp_run+1256>, 0x7ffff79ac40c <MVM_interp_run+1258>, 
        0x7ffff79ac412 <MVM_interp_run+1264>, 0x7ffff79ac414 <MVM_interp_run+1266>, 0x7ffff79ac416 <MVM_interp_run+1268>, 0x7ffff79ac422 <MVM_interp_run+1280>, 
        0x7ffff79ac424 <MVM_interp_run+1282>, 0x7ffff79ac426 <MVM_interp_run+1284>, 0x7ffff79ac432 <MVM_interp_run+1296>, 0x7ffff79ac434 <MVM_interp_run+1298>, 
        0x7ffff79ac436 <MVM_interp_run+1300>, 0x7ffff79ac442 <MVM_interp_run+1312>, 0x7ffff79ac442 <MVM_interp_run+1312>, 0x7ffff79abfc1 <MVM_interp_run+159>, 
        0x7ffff79ac004 <MVM_interp_run+226>, 0x7ffff79ac063 <MVM_interp_run+321>, 0x7ffff79ac0c2 <MVM_interp_run+416>, 0x7ffff79ac127 <MVM_interp_run+517>, 
        0x7ffff79ac18c <MVM_interp_run+618>, 0x7ffff79ac1f3 <MVM_interp_run+721>, 0x7ffff79ac25a <MVM_interp_run+824>, 0x7ffff79ac2c8 <MVM_interp_run+934>, 
        0x7ffff79ac336 <MVM_interp_run+1044>, 0x7ffff79ac39f <MVM_interp_run+1149>, 0x7ffff79ae778 <MVM_interp_run+10326>, 0x7ffff79ac49c <MVM_interp_run+1402>, 
        0x7ffff79ac577 <MVM_interp_run+1621>, 0x7ffff79ac5ff <MVM_interp_run+1757>, 0x7ffff79ac65f <MVM_interp_run+1853>, 0x7ffff79ac6c1 <MVM_interp_run+1951>, 
        0x7ffff79ac721 <MVM_interp_run+2047>, 0x7ffff79ac791 <MVM_interp_run+2159>, 0x7ffff79ac7f2 <MVM_interp_run+2256>, 0x7ffff79ac855 <MVM_interp_run+2355>, 
        0x7ffff79ac8b6 <MVM_interp_run+2452>, 0x7ffff79ac948 <MVM_interp_run+2598>, 0x7ffff79ac948 <MVM_interp_run+2598>, 0x7ffff79ae875 <MVM_interp_run+10579>, 
        0x7ffff79ae8ce <MVM_interp_run+10668>, 0x7ffff79aed45 <MVM_interp_run+11811>, 0x7ffff79afeb6 <MVM_interp_run+16276>, 0x7ffff79ac960 <MVM_interp_run+2622>, 
        0x7ffff79ac9b6 <MVM_interp_run+2708>, 0x7ffff79aca0d <MVM_interp_run+2795>, 0x7ffff79aca63 <MVM_interp_run+2881>, 0x7ffff79acab9 <MVM_interp_run+2967>, 
        0x7ffff79ad76d <MVM_interp_run+6219>, 0x7ffff79ad7bd <MVM_interp_run+6299>, 0x7ffff79ad80d <MVM_interp_run+6379>, 0x7ffff79ad85d <MVM_interp_run+6459>, 
        0x7ffff79ad8ad <MVM_interp_run+6539>, 0x7ffff79ad8fd <MVM_interp_run+6619>, 0x7ffff79aec33 <MVM_interp_run+11537>, 0x7ffff79acbe9 <MVM_interp_run+3271>, 
---Type <return> to continue, or q <return> to quit---
        0x7ffff79acc33 <MVM_interp_run+3345>, 0x7ffff79acc7d <MVM_interp_run+3419>, 0x7ffff79accc8 <MVM_interp_run+3494>, 0x7ffff79acd6f <MVM_interp_run+3661>, 
        0x7ffff79acdbe <MVM_interp_run+3740>, 0x7ffff79ace0a <MVM_interp_run+3816>, 0x7ffff79ace59 <MVM_interp_run+3895>, 0x7ffff79ace9e <MVM_interp_run+3964>, 
        0x7ffff79aceed <MVM_interp_run+4043>, 0x7ffff79acf28 <MVM_interp_run+4102>, 0x7ffff79acf63 <MVM_interp_run+4161>, 0x7ffff79acf9e <MVM_interp_run+4220>, 
        0x7ffff79ae45c <MVM_interp_run+9530>, 0x7ffff79ae4a6 <MVM_interp_run+9604>, 0x7ffff79ae4f0 <MVM_interp_run+9678>, 0x7ffff79ae53a <MVM_interp_run+9752>, 
        0x7ffff79ae57f <MVM_interp_run+9821>, 0x7ffff79ae5cc <MVM_interp_run+9898>, 0x7ffff79ae619 <MVM_interp_run+9975>, 0x7ffff79aecfc <MVM_interp_run+11738>, 
        0x7ffff79b1b39 <MVM_interp_run+23575>, 0x7ffff79b1bb6 <MVM_interp_run+23700>, 0x7ffff79ad94d <MVM_interp_run+6699>, 0x7ffff79ad9aa <MVM_interp_run+6792>, 
        0x7ffff79ada07 <MVM_interp_run+6885>, 0x7ffff79ada59 <MVM_interp_run+6967>, 0x7ffff79adaab <MVM_interp_run+7049>, 0x7ffff79adafd <MVM_interp_run+7131>, 
        0x7ffff79aec95 <MVM_interp_run+11635>, 0x7ffff79ad4ec <MVM_interp_run+5578>, 0x7ffff79ad539 <MVM_interp_run+5655>, 0x7ffff79ad586 <MVM_interp_run+5732>, 
        0x7ffff79ad5d3 <MVM_interp_run+5809>, 0x7ffff79ad620 <MVM_interp_run+5886>, 0x7ffff79ad6c3 <MVM_interp_run+6049>, 0x7ffff79ad713 <MVM_interp_run+6129>, 
        0x7ffff79ae68c <MVM_interp_run+10090>, 0x7ffff79aff45 <MVM_interp_run+16419>, 0x7ffff79affa6 <MVM_interp_run+16516>, 0x7ffff79b16d7 <MVM_interp_run+22453>, 
        0x7ffff79b1724 <MVM_interp_run+22530>, 0x7ffff79b1770 <MVM_interp_run+22606>, 0x7ffff79b17bd <MVM_interp_run+22683>, 0x7ffff79b1809 <MVM_interp_run+22759>, 
        0x7ffff79b1856 <MVM_interp_run+22836>, 0x7ffff79b18a3 <MVM_interp_run+22913>, 0x7ffff79b18f8 <MVM_interp_run+22998>, 0x7ffff79b1951 <MVM_interp_run+23087>, 
        0x7ffff79b19a5 <MVM_interp_run+23171>, 0x7ffff79b19f1 <MVM_interp_run+23247>, 0x7ffff79b1a3d <MVM_interp_run+23323>, 0x7ffff79b1a8a <MVM_interp_run+23400>, 
        0x7ffff79b1ae2 <MVM_interp_run+23488>, 0x7ffff79b2aed <MVM_interp_run+27595>, 0x7ffff79b2b39 <MVM_interp_run+27671>, 0x7ffff79ae3d3 <MVM_interp_run+9393>, 
        0x7ffff79ae418 <MVM_interp_run+9462>, 0x7ffff79ae924 <MVM_interp_run+10754>, 0x7ffff79ae975 <MVM_interp_run+10835>, 0x7ffff79ae9c7 <MVM_interp_run+10917>, 
        0x7ffff79aea18 <MVM_interp_run+10998>, 0x7ffff79aea6a <MVM_interp_run+11080>, 0x7ffff79aeab7 <MVM_interp_run+11157>, 0x7ffff79ad023 <MVM_interp_run+4353>, 
        0x7ffff79ad08e <MVM_interp_run+4460>, 0x7ffff79ad0df <MVM_interp_run+4541>, 0x7ffff79ad132 <MVM_interp_run+4624>, 0x7ffff79ad183 <MVM_interp_run+4705>, 
        0x7ffff79adb4f <MVM_interp_run+7213>, 0x7ffff79adb90 <MVM_interp_run+7278>, 0x7ffff79adbd3 <MVM_interp_run+7345>, 0x7ffff79ad1d4 <MVM_interp_run+4786>, 
        0x7ffff79ad26c <MVM_interp_run+4938>, 0x7ffff79ad30c <MVM_interp_run+5098>, 0x7ffff79ad3ac <MVM_interp_run+5258>, 0x7ffff79ad44c <MVM_interp_run+5418>, 
        0x7ffff79adc27 <MVM_interp_run+7429>, 0x7ffff79adc7b <MVM_interp_run+7513>, 0x7ffff79adcdf <MVM_interp_run+7613>, 0x7ffff79add43 <MVM_interp_run+7713>, 
        0x7ffff79adda7 <MVM_interp_run+7813>, 0x7ffff79ade0b <MVM_interp_run+7913>, 0x7ffff79ade87 <MVM_interp_run+8037>, 0x7ffff79adf03 <MVM_interp_run+8161>, 
        0x7ffff79adf7f <MVM_interp_run+8285>, 0x7ffff79adffb <MVM_interp_run+8409>, 0x7ffff79ae06a <MVM_interp_run+8520>, 0x7ffff79ae0d9 <MVM_interp_run+8631>, 
        0x7ffff79ae148 <MVM_interp_run+8742>, 0x7ffff79ae1b7 <MVM_interp_run+8853>, 0x7ffff79ae23e <MVM_interp_run+8988>, 0x7ffff79ae2c5 <MVM_interp_run+9123>, 
        0x7ffff79ae34c <MVM_interp_run+9258>, 0x7ffff79aeb04 <MVM_interp_run+11234>, 0x7ffff79aeb63 <MVM_interp_run+11329>, 0x7ffff79acfd9 <MVM_interp_run+4279>, 
        0x7ffff79ae7fa <MVM_interp_run+10456>, 0x7ffff79ae6e1 <MVM_interp_run+10175>, 0x7ffff79ae727 <MVM_interp_run+10245>, 0x7ffff79af14b <MVM_interp_run+12841>, 
        0x7ffff79af1a3 <MVM_interp_run+12929>, 0x7ffff79af23a <MVM_interp_run+13080>, 0x7ffff79af2d1 <MVM_interp_run+13231>, 0x7ffff79af345 <MVM_interp_run+13347>, 
        0x7ffff79af3ba <MVM_interp_run+13464>, 0x7ffff79af42f <MVM_interp_run+13581>, 0x7ffff79af4a4 <MVM_interp_run+13698>, 0x7ffff79af4f6 <MVM_interp_run+13780>, 
        0x7ffff79af548 <MVM_interp_run+13862>, 0x7ffff79af59a <MVM_interp_run+13944>, 0x7ffff79af5e8 <MVM_interp_run+14022>, 0x7ffff79af636 <MVM_interp_run+14100>, 
        0x7ffff79af684 <MVM_interp_run+14178>, 0x7ffff79b8a9a <MVM_interp_run+52088>, 0x7ffff79b8ae1 <MVM_interp_run+52159>, 0x7ffff79af723 <MVM_interp_run+14337>, 
        0x7ffff79af770 <MVM_interp_run+14414>, 0x7ffff79af7bc <MVM_interp_run+14490>, 0x7ffff79b0163 <MVM_interp_run+16961>, 0x7ffff79af831 <MVM_interp_run+14607>, 
        0x7ffff79af881 <MVM_interp_run+14687>, 0x7ffff79af970 <MVM_interp_run+14926>, 0x7ffff79af9e9 <MVM_interp_run+15047>, 0x7ffff79afa7a <MVM_interp_run+15192>, 
        0x7ffff79afb0b <MVM_interp_run+15337>, 0x7ffff79afb9c <MVM_interp_run+15482>, 0x7ffff79afc2d <MVM_interp_run+15627>, 0x7ffff79b9156 <MVM_interp_run+53812>, 
        0x7ffff79b91e2 <MVM_interp_run+53952>, 0x7ffff79afd2a <MVM_interp_run+15880>, 0x7ffff79afe04 <MVM_interp_run+16098>, 0x7ffff79afe5d <MVM_interp_run+16187>, 
        0x7ffff79b538b <MVM_interp_run+37993>, 0x7ffff79b5031 <MVM_interp_run+37135>, 0x7ffff79b0687 <MVM_interp_run+18277>, 0x7ffff79b06e0 <MVM_interp_run+18366>...}
        cur_op = 0x7ffff7e6d655 "\n"
        bytecode_start = 0x7ffff7e6d533 "\237"
        reg_base = 0x9025b0
        cu = 0x7ffff58f8c90
        cur_callsite = 0x6bc880
#6  0x00007ffff7a2100a in MVM_vm_run_file (instance=instance@entry=0x603a40, filename=<optimized out>) at src/moar.c:190
        start_frame = <optimized out>
        tc = 0x604030
        cu = 0x7ffff58ed010
#7  0x0000000000400fb4 in main (argc=9, argv=0x7fffffffd978) at src/main.c:163
        instance = 0x603a40
        input_file = <optimized out>
        executable_name = 0x0
        lib_path = {0x7fffffffde38 "src/vm/moar/stage0", 0x0, 0x7ffff74f91a8 "2(", 0x7ffff7fa3000 "", 0x7ffff7ffe148 "", 0x400a15 <_init+21> "H\203\304", <incomplete sequence \303>, 
        0x1 <Address 0x1 out of bounds>, 0x40103d <__libc_csu_init+77> "H\203\303\001H9\353u\352H\203\304\b[]A\\A]A^A_\303ff.\017\037\204"}
---Type <return> to continue, or q <return> to quit---
        dump = 0
        full_cleanup = 0
        argi = <optimized out>
        lib_path_i = 1

[inline] segfault in palindrome code, probably caused by split

my @palindromes := 0, 1, gather for 1 .. * -> $n {
my $p = $n.base(3);
for $p ~ '1' ~ $p.flip -> $r {
my $s = :3($r);
next if $s %% 2 or $s.msb % 2;
my $s2 = $s.base(2);
next unless $s2 eq $s2.flip;
take $s;
}
}

printf "%d, %s, %s\n", $_, .base(2), .base(3) for @palindromes

When I use MVM_SPESH_INLINE_DISABLE=1 it does not crash but infiniloops. Interestingly it succeded on TimToady's box using MVM_SPESH_INLINE_DISABLE=1.

Note that the following backtrace identical to #115.

perl6-m gistfile1.txt 
0, 0, 0
1, 1, 1
6643, 1100111110011, 100010001
1422773, 101011011010110110101, 2200021200022
5415589, 10100101010001010100101, 101012010210101
   at <unknown>:1  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:postfix:<-->:4294967295)
 from src/gen/m-CORE.setting:7441  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:472)
 from src/gen/m-CORE.setting:7572  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::321)
 from src/gen/m-CORE.setting:7544  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:62)
 from src/gen/m-CORE.setting:7711  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::595)
 from src/gen/m-CORE.setting:7659  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:62)
 from src/gen/m-CORE.setting:7572  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::321)
 from src/gen/m-CORE.setting:7544  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:4294967295)
 from src/gen/m-CORE.setting:8084  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:gimme:204)
 from src/gen/m-CORE.setting:8546  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:sink:36)
 from gistfile1.txt:1  (<ephemeral file>::40)
 from src/gen/m-CORE.setting:7879  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::18)
 from src/gen/m-CORE.setting:7883  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::4294967295)
 from src/gen/m-CORE.setting:7909  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::61)
 from src/gen/m-CORE.setting:7903  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:48)
 from src/gen/m-CORE.setting:7572  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::321)
 from src/gen/m-CORE.setting:7544  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:4294967295)
 from src/gen/m-CORE.setting:7572  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::321)
 from src/gen/m-CORE.setting:7544  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:62)
 from src/gen/m-CORE.setting:7711  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::597)
 from src/gen/m-CORE.setting:7659  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:62)
 from src/gen/m-CORE.setting:7572  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm::321)
 from src/gen/m-CORE.setting:7544  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:reify:4294967295)
 from src/gen/m-CORE.setting:8084  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:gimme:204)
 from src/gen/m-CORE.setting:8546  (/home/froggs/dev/nqp/install/languages/perl6/runtime/CORE.setting.moarvm:sink:36)
 from gistfile1.txt:12  (<ephemeral file>::92)
 from gistfile1.txt:1  (<ephemeral file>::10)
 from gen/moar/stage2/NQPHLL.nqp:1108  (/home/froggs/dev/nqp/install/languages/nqp/lib/NQPHLL.moarvm:eval:174)
 from gen/moar/stage2/NQPHLL.nqp:1300  (/home/froggs/dev/nqp/install/languages/nqp/lib/NQPHLL.moarvm:evalfiles:90)
 from gen/moar/stage2/NQPHLL.nqp:1204  (/home/froggs/dev/nqp/install/languages/nqp/lib/NQPHLL.moarvm:command_eval:212)
 from src/Perl6/Compiler.nqp:17  (/home/froggs/dev/nqp/install/languages/nqp/lib/Perl6/Compiler.moarvm:command_eval:116)
 from gen/moar/stage2/NQPHLL.nqp:1179  (/home/froggs/dev/nqp/install/languages/nqp/lib/NQPHLL.moarvm:command_line:116)
 from src/gen/m-main.nqp:39  (/home/froggs/dev/nqp/install/languages/perl6/runtime/perl6.moarvm:MAIN:18)
 from src/gen/m-main.nqp:35  (/home/froggs/dev/nqp/install/languages/perl6/runtime/perl6.moarvm::197)
 from <unknown>:1  (/home/froggs/dev/nqp/install/languages/perl6/runtime/perl6.moarvm::8)
 from <unknown>:1  (/home/froggs/dev/nqp/install/languages/perl6/runtime/perl6.moarvm::9)
Speicherzugriffsfehler (Speicherabzug geschrieben)

[Windows] Configure fails when path in --prefix doesn't exist

Configure.pl dies on line 70 with the error "No such file or directory". Seems that abs_path requires the path to already exist, at least on windows.

C:\Users\dagurval>perl -e "use Cwd qw(abs_path); abs_path(qq(C:/doesnotexist))"
C:/doesnotexist: No such file or directory at -e line 1.

I'm using this workaround:

if (defined $args{prefix}) {
    mkdir $args{prefix} or warn "mkdir $args{prefix}: $!";
}

Unicode: Case folding special cases

The spectests have caught some cases where moar's case folding isn't sufficient.

In particular, in https://rt.perl.org/Ticket/Display.html?id=121377 I discuss some case folding rules for the German ß

'ß'.uc;   # should be 'SS'
'ß'.tclc  # should be 'Ssß'

Also, S32-str/lc.t has this test:

is 'ΣΣΣ'.lc, 'σσς', 'lower-casing of greek Sigma respects word-final special case';

which raudo-jvm and rakudo-parrot get right, but moar fails (it produces σσσ).

Cannot build libapr on ubuntu

I got this error on my ubuntu machine.

gcc -o moarvm -L3rdparty/apr/.libs  -g  src/core/args.o (snip...)
3rdparty/apr/.libs/libapr-1.a(rand.o): In function `apr_os_uuid_get':
/home/tokuhirom/dev/MoarVM/3rdparty/apr/misc/unix/rand.c:75: undefined reference to `uuid_generate'
collect2: ld returned 1 exit status
make: *** [moarvm] Error 1

I added -luuid to $LLIBS then work.

Heap corruption detected: pointer 0x1040073a8 to past fromspace

The issue occurred when running the code below. The number of lines of input required to make it break varies, but required at least 540 in my testing.

my @groups;

while lines().rotor(3, 0) -> @lines {
    push @groups, +@lines;
}

@groups.perl.say;

Please let me know if I can provide any more information.

TODO: Need some kind of safe mode

For the IRC evalbot, but also for other applications, it would be nice to have some kind of safe mode that disallows file and socket IO, and things like spawn/shell.

I'm fine with it being a configure-time option, a command line option, environment variable or anything really.

compiler warning

src/main.c:138:17: warning: implicit declaration of function 'MVM_jit_support'
      is invalid in C99 [-Wimplicit-function-declaration]
            if (MVM_jit_support()) {

t/moar/threads.t hangs with --optimize on

Hello, do "perl Configure.pl --optimize" for MoarVM and run the tests, threads.t hangs there forever

woosley@maddog:~/code/MoarVM/nqp-cc/home/woosley/code/MoarVM/nqp-cc/install/bin/nqp t/moar/threads.t 
1..6
ok 1 - Can create a thread and it runs in parallel
ok 2 - Thread can access outer lexicals
ok 3 - Can join a thread
ok 4 - Can start and join multiple threads
^C

it is not happening without --optimize

woosley@maddog:~/code/MoarVM/nqp-cc/home/woosley/code/MoarVM/nqp-cc/install/bin/nqp t/moar/threads.t 
1..6
ok 1 - Can create a thread and it runs in parallel
ok 2 - Thread can access outer lexicals
ok 3 - Can join a thread
ok 4 - Can start and join multiple threads
ok 5 - Multiple allocating threads work (threads + GC interaction)
ok 6 - Multiple allocating threads work (large heap usage)

moar in realloc(): error: bogus pointer (double free?)

gist: https://gist.github.com/carbin/ebb5c4eb0aedfaf5839c

#3 0x0000198ca4040621 in realloc (ptr=0x198cad537dc0, size=128)
at /usr/src/lib/libc/stdlib/malloc.c:1271
r = (void *) 0x0
saved_errno = 0
#4 0x0000198ca620bd7c in set_size_internal (tc=0x198cae71f400,
body=0x198ca4b82450, n=9, repr_data=0x198caf42ccc0)
at src/6model/reprs/MVMArray.c:325
elems = 1
---Type <return> to continue, or q <return> to quit---
start = 0
ssize = 16
slots = (void *) 0x198cad537dc0
#5 0x0000198ca620cd9c in unshift (tc=0x198cae71f400, st=0x198cadcea1c0,
root=0x198ca4b82438, data=0x198ca4b82450, value=
{o = 0x198ca4b814c8, s = 0x198ca4b814c8, i8 = -56 '', ui8 = 200 '', i16 = 5320, ui16 = 5320, i32 = -1531439928, ui32 = 2763527368, i64 = 28091849643208, ui64 = 28091849643208, n32 = -7.98324847e-17, n64 = 1.3879217836846752e-310},
kind=8) at src/6model/reprs/MVMArray.c:599
n = 8
elems = 1
i = 28092012819456
repr_data = (MVMArrayREPRData *) 0x198caf42ccc0
body = (MVMArrayBody *) 0x198ca4b82450

Shift operations are under-specified

First of all, MoarVM lacks a distinction between logical and arithmetic shifts. As the i64 member of the MVMRegister type is used, we end up with arithmetic shifts, and ops for logical shifting are missing.

Second, shifts by invalid bit counts (negative values or values greater than the integer type's width) result in undefined behaviour, making such programs non-conforming C (in fact, clang returns bogus numbers if it detects an invalid shift in a constant expression).

I see two ways to go from here:

  • choose the Java route and mandate two's complement/x86 behaviour; we get this by forcing the 2nd operand within the range of well-defined values (in case of 64-bit integers via i & 63 or i % 64)
  • choose the Parrot route, which sanitizes the semantics: negative bit counts shift in the opposite direction, and shifting by a value greater than the type's width returns 0 as all bits have been moved out of range

The former is more low-level, the latter makes more sense.

A third issue is the handling of negative values. This is implementation-defined in C. In practice, we'll probably end up with two's complement behaviour, ie

shr $a, $b = floor($a / 2**$b)

Arguments could be made that sign-magnitude behaviour

shr $a, $b = trunc($a / 2**$b) = $a div 2**$b

might be preferable, as it is more consistent with the rest of integer arithmetics.

NQP build failure on big-endian platforms

Got this build failure on OpenBSD/powerpc, looks like it is endian-related:

perl -MExtUtils::Command -e mkpath gen/moar/stage1/gen
perl tools/build/gen-cat.pl moar src/how/Archetypes.nqp src/how/RoleToRoleApplie
r.nqp  src/how/NQPConcreteRoleHOW.nqp src/how/RoleToClassApplier.nqp  src/how/NQ
PCurriedRoleHOW.nqp src/how/NQPParametricRoleHOW.nqp  src/how/NQPClassHOW.nqp sr
c/how/NQPNativeHOW.nqp  src/how/NQPAttribute.nqp src/how/NQPModuleHOW.nqp  src/h
ow/EXPORTHOW.nqp   > gen/moar/stage1/nqpmo.nqp
/home/pascal/src/MoarVM/install/bin/moar --libpath=src/vm/moar/stage0 src/vm/moa
r/stage0/nqp.moarvm --bootstrap --setting=NULL --no-regex-lib --target=mbc  --ou
tput=gen/moar/stage1/nqpmo.moarvm gen/moar/stage1/nqpmo.nqp
Unhandled exception: Bytecode validation error at offset 0, instruction 0:
invalid extension opcode 40704 - should be less than 1024
*** Error 1 in /home/pascal/src/nqp (Makefile:199 'gen/moar/stage1/nqpmo.moarvm'
)

Flattening hashes into argument list behaves incorrectly

sub a(:$x) { say $x }; a(|{x =>'first'}, |{x => 'last'}) outputs first on MoarVM rather than last. It works correctly on the other backends. sub a(:$x) { say $x }; a(x =>'first', x => 'last') works as expected and prints last.

I found this when attempting to do sub a(:$a, :$b) { say $a + $b }; &a.assuming(:a(5))(:a(2), :b(2))

This was discussed on IRC briefly from http://irclog.perlgeek.de/perl6/2014-08-25#i_9240510 onwards. There're a few other issues, but they're not MoarVM specific.

Digest::PSHA1 fails its test with inlining enabled

panda install Digest::PSHA1
==> Fetching Digest::PSHA1
==> Building Digest::PSHA1
Compiling lib/Digest/PSHA1.pm to mbc
==> Testing Digest::PSHA1
t/01-basic.t .. 1/2 Internal error: zeroed target thread ID in work pass
t/01-basic.t .. Dubious, test returned 17 (wstat 4352, 0x1100)
Failed 1/2 subtests 

Test Summary Report
-------------------
t/01-basic.t (Wstat: 4352 Tests: 1 Failed: 0)
  Non-zero exit status: 17
  Parse errors: Bad plan.  You planned 2 tests but ran 1.
Files=1, Tests=1,  4 wallclock secs
Result: FAIL
test stage failed for Digest::PSHA1: Tests failed
MVM_SPESH_INLINE_DISABLE=1 panda install Digest::PSHA1
==> Fetching Digest::PSHA1
==> Building Digest::PSHA1
Compiling lib/Digest/PSHA1.pm to mbc
==> Testing Digest::PSHA1
t/01-basic.t .. ok   
All tests successful.
Files=1, Tests=2,  5 wallclock secs
Result: PASS

Golfed moarvm precompilation issue

I believe this may be caused on the MoarVM level. If not, I can recreate this ticket for nqp or rakudo.

Reproduction available here: https://gist.github.com/retupmoca/9953591

Typed arrays seem to be causing an issue when in multiple use'd modules at the same time. Real-code examples of this include Net::DNS and Compress::Zlib::Raw (the latter will not currently run on windows machines).

libmoar.so should be versioned

The ‘moar’ binary directly links to libmoar.so, meaning it should be versioned. Unfortunately, shared library versioning is vastly different between operating systems. For instance, OpenBSD uses a .so.X.Y scheme, FreeBSD has a .so.X scheme, and most Linux distributions use some kind of .so -> .so.X[.Y] symlink scheme. These differences should probably be handled by setup.pm; in any case, it would also be nice to allow packagers to easily override the library version.

import dyncall (a la nqp on parrot)

  1. import dyncall from nqp-parrot to MoarVM/3rdparty/
  2. integrate it with the build system
  3. port the 6model representations
  4. port the relevant nqp:: ops
  5. test, I guess.

Add "how to link to Moar" option to configure hash

Rakduo currently uses a @moarimplib@ hack for Windows and OS X to specify how to link to Moar's shared library. This should probably be figured out by Moar's configure and passed as part of the config hash instead.

Strange-ish lexical behaviour, please review

I was working on implementing JIT getlex / bindlex and I noticed some strange-ish behaviour in getlex. Specifically, to determine if a NULL has to be vivified into an object / vmnull, getlex checks for an entry in the 'lexical type' array.

This lexical_type array either comes from the spesh candidate (if present) or from the static frame. The frame is then passed - along with the index - to MVM_frame_vivify_lexical.
But MVM_frame_vivify never looks at spesh_cand->lexical_types. So that's a bit strange.

Furthermore, MVM_frame_vivify_lexical seems to be happy to accept an index greater than what will fit into the lexical_types array of the static frame, and if it doesn't fit, will look at the static frames' lexical type arrays of inlined spesh static frames. But getlex never bothers to check if the index is within the bounds of the lexical_types array.

So in short, the use of lexical_types in OP(getlex) and in MVM_frame_vivify_lexical (and possibly elsewhere) doesn't seem consistent, and possibly buggy.

What I'd like to do is move the decision between the two types of lexical types up to frame invocation level, that is to say, add a field 'effective_lexical_types' to MVMFrame. Furthermore, I'd also like to 'merge' the lexical type arrays of inlines, which i /think/ shouldn't be a problem, because apparantly indices are already moved about during inlining, as they obviously should.

Change bytecode stream type to MVMuint16

Currently,cur_op type is MVMuint8 (see src/core/interp.c MVM_interp_run), changed it to MVMuint16, so #define NEXT_OP (cur_op += 2, *(MVMuint16 *)(cur_op - 2)) can be changed to #define NEXT_OP *(cur_op++).

This work also contains changing part of MVMuint8 type to MVMuint16 in MVMThreadContext struct, and MVMStaticFrameBody, MVMCompUnitBody etc.

--clang should be a more generic --cc=clang

Since configure defaults to clang on OS X, it would be nice to have a way to go back to gcc. And rather than proliferating --compiler flags, they should be arguments to a general flag.

Speculationg: In theory this could allow users to specify completely unknown compilers, if they could also specify cflags, ldflags, etc.

pow_I needs fixing

In 091a236 I made it work-ish, but it still needs some work to handle the Num fallback. See other backends for more info; probably Parrot is best one to see as it also uses libtommath.

cache immutable created runtime things

22:19 < diakopter> another todo:
22:20 < diakopter> all the string literals in the moarvm source where we construct MVMStrings from C literal strings (without format)... should be cached in a struct that hangs off MVMInstance
22:20 < diakopter> (and all rooted)
22:21 < diakopter> (and their constructor calls obviously set to lookup in the cache)
22:21 < diakopter> parrot has a convenience function for this
22:22 < diakopter> there are already a few strings cached on Instance like that ->Str , ->Num, ->Empty I think
22:22 < diakopter> but it needs generalized
22:22 < diakopter> further generalized would be to find any unchanging/immutable things created by runtime code and make those cached too
22:24 < diakopter> could even make the .h that stores their slots generated if you use a macro sneakily

Roles break lexical scoping

Two examples:

role R { method m() {} }
class C does R {}
C.new.m;

fails with

Cannot locate an outer frame for the call

and

role R { say(42) }
class C does R {}

fails with

No lexical found with name '&say'

The failure of the first example can be tracked to an intermediate frame that breaks the fallback mechanism of MVM_frame_invoke() - see https://gist.github.com/gerdr/babe2cbd5d85c9170dec for details.

perl6 native call libgsl segmentation fault

~/testing_ground/perl6$ uname -a
Linux main 3.11.0-23-generic #40-Ubuntu SMP Wed Jun 4 21:05:23 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

emilper@main:~/bin/nqp$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)

cloned moarvm, nqp and rakudo this evening

MoarVM:
perl Configure.pl --prefix=/home/emilper/safedelete/ --debug=3 --optimize=0

NQP:
perl Configure.pl --backends=moar --prefix=/home/emilper/safedelete/

Rakudo:
perl Configure.pl --prefix=/home/emilper/safedelete/ --backends=moar

## native_call.p6 code

use NativeCall;

sub cblas_dasum(Int $i, Num $j, Int $x) returns Num is native('libgslcblas') {*}

sub ceil(Num $x) returns Num is native('libm') {*}

sub gsl_rng_default()
returns OpaquePointer
is native('libgsl') {*}

sub gsl_rng_alloc(OpaquePointer $type )
returns OpaquePointer
is native('libgsl') {*}

sub gsl_rng_uniform(OpaquePointer $rng_handler)
returns Num
is native('libgsl') {*}

my Num $double = 3e0;
my Int $int1 = 1;
my Int $int2 = 2;
my Num $x = cblas_dasum($int1,$double,$int2);
say 'cblas_dasum ran, returned', $x;
say ceil(3e0);
say 'after ceil';
my OpaquePointer $rng_type = gsl_rng_default();
say 'gsl_rng_default ran';
my OpaquePointer $rng_handle = gsl_rng_alloc($rng_type);
say 'gsl_rng_alloc ran';
say gsl_rng_uniform($rng_handle);
say 'gsl_rng_uniform ran';

end of native_call.p6 code

emilper@main:~/testing_ground/perl6$ perl6 --target=mbc --output=native_call.moarvm native_call.p6

emilper@main:/testing_ground/perl6$ which moar
/home/emilper/safedelete/bin/moar
emilper@main:
/testing_ground/perl6$ gdb /home/emilper/safedelete/bin/moar

GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/emilper/safedelete/bin/moar...done.
(gdb) run --libpath=/home/emilper/safedelete/languages/nqp/lib/ --libpath=/home/emilper/safedelete/languages/perl6/runtime --libpath=/home/emilper/safedelete/languages/nqp/lib/ /home/emilper/testing_ground/perl6/native_call.moarvm
Starting program: /home/emilper/safedelete/bin/moar --libpath=/home/emilper/safedelete/languages/nqp/lib/ --libpath=/home/emilper/safedelete/languages/perl6/runtime --libpath=/home/emilper/safedelete/languages/nqp/lib/ /home/emilper/testing_ground/perl6/native_call.moarvm
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff79b4b5e in deserialize_stable (tc=0x6035e0, reader=0x1853470, i=0, st=0x17dadb0) at src/6model/serialization.c:1939
1939 cc->set_container_spec(tc, st);
(gdb) bt full
#0 0x00007ffff79b4b5e in deserialize_stable (tc=0x6035e0, reader=0x1853470, i=0, st=0x17dadb0) at src/6model/serialization.c:1939

    cc = 0x0
    st_table_row = 0x7ffff505053a "\001"

#1 0x00007ffff79b56f4 in MVM_serialization_deserialize (tc=0x6035e0, sc=0x7ffff6366ab0, string_heap=0x7ffff6366be8, codes_static=0x7ffff6366c20, repo_conflicts=0x7ffff6366bb0, data=0x0) at src/6model/serialization.c:2137

    scodes = 84
    i = 9
    reader = 0x1853470

#2 0x00007ffff79257ee in MVM_interp_run (tc=0x6035e0, initial_invoke=0x7ffff79e50c6 <toplevel_initial_invoke>, invoke_data=0x683b78) at src/core/interp.c:3538

    sc = 0x7ffff6366ab0
    conf = 0x7ffff6366bb0
    blob = 0x0
    sh = 0x7ffff6366be8
    cr = 0x7ffff6366c20
    op = 405
    LABELS = {0x7ffff7909c68 <MVM_interp_run+210>, 0x7ffff790b2ac <MVM_interp_run+5910>, 0x7ffff790b2ae <MVM_interp_run+5912>, 0x7ffff790b2ae <MVM_interp_run+5912>, 0x7ffff790b2c9 <MVM_interp_run+5939>, 
      0x7ffff790b352 <MVM_interp_run+6076>, 0x7ffff790b36d <MVM_interp_run+6103>, 0x7ffff790b405 <MVM_interp_run+6255>, 0x7ffff790a61b <MVM_interp_run+2693>, 0x7ffff790a5e8 <MVM_interp_run+2642>, 0x7ffff790a5ea <MVM_interp_run+2644>, 
      0x7ffff790a5ec <MVM_interp_run+2646>, 0x7ffff790a5ee <MVM_interp_run+2648>, 0x7ffff790a5f0 <MVM_interp_run+2650>, 0x7ffff790a5f2 <MVM_interp_run+2652>, 0x7ffff790a5f4 <MVM_interp_run+2654>, 0x7ffff790a5f6 <MVM_interp_run+2656>, 
      0x7ffff790a5f8 <MVM_interp_run+2658>, 0x7ffff790a5fa <MVM_interp_run+2660>, 0x7ffff790a5fc <MVM_interp_run+2662>, 0x7ffff790a5fe <MVM_interp_run+2664>, 0x7ffff790a600 <MVM_interp_run+2666>, 0x7ffff790a600 <MVM_interp_run+2666>, 
      0x7ffff7909caa <MVM_interp_run+276>, 0x7ffff7909d26 <MVM_interp_run+400>, 0x7ffff7909de0 <MVM_interp_run+586>, 0x7ffff7909e9a <MVM_interp_run+772>, 0x7ffff7909f64 <MVM_interp_run+974>, 0x7ffff790a02e <MVM_interp_run+1176>, 
      0x7ffff790a16c <MVM_interp_run+1494>, 0x7ffff790a2aa <MVM_interp_run+1812>, 0x7ffff790a384 <MVM_interp_run+2030>, 0x7ffff790a45e <MVM_interp_run+2248>, 0x7ffff790a523 <MVM_interp_run+2445>, 
      0x7ffff790ef46 <MVM_interp_run+21424>, 0x7ffff790a6b1 <MVM_interp_run+2843>, 0x7ffff790a8a4 <MVM_interp_run+3342>, 0x7ffff790a9b6 <MVM_interp_run+3616>, 0x7ffff790aa69 <MVM_interp_run+3795>, 
      0x7ffff790ab1c <MVM_interp_run+3974>, 0x7ffff790abcf <MVM_interp_run+4153>, 0x7ffff790aca0 <MVM_interp_run+4362>, 0x7ffff790ad52 <MVM_interp_run+4540>, 0x7ffff790ae07 <MVM_interp_run+4721>, 0x7ffff790aeb9 <MVM_interp_run+4899>, 
      0x7ffff790afcc <MVM_interp_run+5174>, 0x7ffff790afcc <MVM_interp_run+5174>, 0x7ffff790f175 <MVM_interp_run+21983>, 0x7ffff790f22d <MVM_interp_run+22167>, 0x7ffff790fbb6 <MVM_interp_run+24608>, 
      0x7ffff7912c2a <MVM_interp_run+37012>, 0x7ffff790afe7 <MVM_interp_run+5201>, 0x7ffff790b079 <MVM_interp_run+5347>, 0x7ffff790b117 <MVM_interp_run+5505>, 0x7ffff790b1a9 <MVM_interp_run+5651>, 
      0x7ffff790b23b <MVM_interp_run+5797>, 0x7ffff790cda4 <MVM_interp_run+12814>, 0x7ffff790ce65 <MVM_interp_run+13007>, 0x7ffff790cf26 <MVM_interp_run+13200>, 0x7ffff790cfe7 <MVM_interp_run+13393>, 
      0x7ffff790d0a8 <MVM_interp_run+13586>, 0x7ffff790d169 <MVM_interp_run+13779>, 0x7ffff790f92b <MVM_interp_run+23957>, 0x7ffff790b49d <MVM_interp_run+6407>, 0x7ffff790b558 <MVM_interp_run+6594>, 
      0x7ffff790b616 <MVM_interp_run+6784>, 0x7ffff790b6d2 <MVM_interp_run+6972>, 0x7ffff790b85a <MVM_interp_run+7364>, 0x7ffff790b91b <MVM_interp_run+7557>, 0x7ffff790b9dc <MVM_interp_run+7750>, 0x7ffff790baa0 <MVM_interp_run+7946>, 
      0x7ffff790bb39 <MVM_interp_run+8099>, 0x7ffff790bc00 <MVM_interp_run+8298>, 0x7ffff790bc7b <MVM_interp_run+8421>, 0x7ffff790bcf6 <MVM_interp_run+8544>, 0x7ffff790bd71 <MVM_interp_run+8667>, 
      0x7ffff790e7a5 <MVM_interp_run+19471>, 0x7ffff790e860 <MVM_interp_run+19658>, 0x7ffff790e91b <MVM_interp_run+19845>, 0x7ffff790e9d6 <MVM_interp_run+20032>, 0x7ffff790ea6f <MVM_interp_run+20185>, 
      0x7ffff790eb2f <MVM_interp_run+20377>, 0x7ffff790ebef <MVM_interp_run+20569>, 0x7ffff790fb17 <MVM_interp_run+24449>, 0x7ffff7917075 <MVM_interp_run+54495>, 0x7ffff791718f <MVM_interp_run+54777>, 
      0x7ffff790d22a <MVM_interp_run+13972>, 0x7ffff790d2fa <MVM_interp_run+14180>, 0x7ffff790d3ca <MVM_interp_run+14388>, 0x7ffff790d48e <MVM_interp_run+14584>, 0x7ffff790d552 <MVM_interp_run+14780>, 
      0x7ffff790d616 <MVM_interp_run+14976>, 0x7ffff790fa1f <MVM_interp_run+24201>, 0x7ffff790c812 <MVM_interp_run+11388>, 0x7ffff790c8d1 <MVM_interp_run+11579>, 0x7ffff790c990 <MVM_interp_run+11770>, 
      0x7ffff790ca4f <MVM_interp_run+11961>, 0x7ffff790cb0e <MVM_interp_run+12152>, 0x7ffff790cc32 <MVM_interp_run+12444>, 0x7ffff790ccd6 <MVM_interp_run+12608>, 0x7ffff790ed2c <MVM_interp_run+20886>, 
      0x7ffff7912d62 <MVM_interp_run+37324>, 0x7ffff7912e50 <MVM_interp_run+37562>, 0x7ffff7916616 <MVM_interp_run+51840>, 0x7ffff79166d0 <MVM_interp_run+52026>, 0x7ffff791678a <MVM_interp_run+52212>, 
      0x7ffff7916844 <MVM_interp_run+52398>, 0x7ffff79168fe <MVM_interp_run+52584>, 0x7ffff79169b8 <MVM_interp_run+52770>, 0x7ffff7916a72 <MVM_interp_run+52956>, 0x7ffff7916b5d <MVM_interp_run+53191>, 
      0x7ffff7916c19 <MVM_interp_run+53379>, 0x7ffff7916cd1 <MVM_interp_run+53563>, 0x7ffff7916d8b <MVM_interp_run+53749>, 0x7ffff7916e45 <MVM_interp_run+53935>, 0x7ffff7916eff <MVM_interp_run+54121>, 
      0x7ffff7916fbb <MVM_interp_run+54309>, 0x7ffff791960b <MVM_interp_run+64117>, 0x7ffff79196c5 <MVM_interp_run+64303>, 0x7ffff790e66d <MVM_interp_run+19159>, 0x7ffff790e709 <MVM_interp_run+19315>, 
      0x7ffff790f2e1 <MVM_interp_run+22347>, 0x7ffff790f38a <MVM_interp_run+22516>, 0x7ffff790f43f <MVM_interp_run+22697>, 0x7ffff790f4e8 <MVM_interp_run+22866>, 0x7ffff790f5a0 <MVM_interp_run+23050>, 
      0x7ffff790f661 <MVM_interp_run+23243>, 0x7ffff790be86 <MVM_interp_run+8944>, 0x7ffff790bf4d <MVM_interp_run+9143>, 0x7ffff790bfeb <MVM_interp_run+9301>, 0x7ffff790c089 <MVM_interp_run+9459>, 
      0x7ffff790c127 <MVM_interp_run+9617>, 0x7ffff790d6da <MVM_interp_run+15172>, 0x7ffff790d76b <MVM_interp_run+15317>, 0x7ffff790d80b <MVM_interp_run+15477>, 0x7ffff790c1c5 <MVM_interp_run+9775>, 
      0x7ffff790c2f2 <MVM_interp_run+10076>, 0x7ffff790c43a <MVM_interp_run+10404>, 0x7ffff790c582 <MVM_interp_run+10732>, 0x7ffff790c6ca <MVM_interp_run+11060>, 0x7ffff790d8ab <MVM_interp_run+15637>, 
      0x7ffff790d93d <MVM_interp_run+15783>, 0x7ffff790d9e6 <MVM_interp_run+15952>, 0x7ffff790da8f <MVM_interp_run+16121>, 0x7ffff790db38 <MVM_interp_run+16290>, 0x7ffff790dbe1 <MVM_interp_run+16459>, 
      0x7ffff790dccb <MVM_interp_run+16693>, 0x7ffff790ddb5 <MVM_interp_run+16927>, 0x7ffff790de9f <MVM_interp_run+17161>, 0x7ffff790df89 <MVM_interp_run+17395>, 0x7ffff790e045 <MVM_interp_run+17583>, 
      0x7ffff790e101 <MVM_interp_run+17771>, 0x7ffff790e1bd <MVM_interp_run+17959>, 0x7ffff790e279 <MVM_interp_run+18147>, 0x7ffff790e376 <MVM_interp_run+18400>, 0x7ffff790e473 <MVM_interp_run+18653>, 
      0x7ffff790e570 <MVM_interp_run+18906>, 0x7ffff790f722 <MVM_interp_run+23436>, 0x7ffff790f7c9 <MVM_interp_run+23603>, 0x7ffff790bdec <MVM_interp_run+8790>, 0x7ffff790f075 <MVM_interp_run+21727>, 
      0x7ffff790ee17 <MVM_interp_run+21121>, 0x7ffff790ee9d <MVM_interp_run+21255>, 0x7ffff7910fa5 <MVM_interp_run+29711>, 0x7ffff791103f <MVM_interp_run+29865>, 0x7ffff7911168 <MVM_interp_run+30162>, 
      0x7ffff7911291 <MVM_interp_run+30459>, 0x7ffff791138c <MVM_interp_run+30710>, 0x7ffff7911482 <MVM_interp_run+30956>, 0x7ffff7911578 <MVM_interp_run+31202>, 0x7ffff7911673 <MVM_interp_run+31453>, 
      0x7ffff7911736 <MVM_interp_run+31648>, 0x7ffff79117f9 <MVM_interp_run+31843>, 0x7ffff79118bc <MVM_interp_run+32038>, 0x7ffff791196f <MVM_interp_run+32217>, 0x7ffff7911a22 <MVM_interp_run+32396>, 
      0x7ffff7911ad5 <MVM_interp_run+32575>, 0x7ffff7925f4b <MVM_interp_run+115637>, 0x7ffff7925fc6 <MVM_interp_run+115760>, 0x7ffff7911c06 <MVM_interp_run+32880>, 0x7ffff7911c94 <MVM_interp_run+33022>, 
      0x7ffff7911d27 <MVM_interp_run+33169>, 0x7ffff7913259 <MVM_interp_run+38595>, 0x7ffff7911e1d <MVM_interp_run+33415>, 0x7ffff7911eaf <MVM_interp_run+33561>, 0x7ffff7912055 <MVM_interp_run+33983>, 
      0x7ffff7912165 <MVM_interp_run+34255>, 0x7ffff79122a7 <MVM_interp_run+34577>, 0x7ffff79123e9 <MVM_interp_run+34899>, 0x7ffff791252b <MVM_interp_run+35221>, 0x7ffff791266d <MVM_interp_run+35543>, 
      0x7ffff7926da0 <MVM_interp_run+119306>, 0x7ffff7926ede <MVM_interp_run+119624>, 0x7ffff79128b4 <MVM_interp_run+36126>, 0x7ffff7912a75 <MVM_interp_run+36575>, 0x7ffff7912b5f <MVM_interp_run+36809>, 
      0x7ffff791f003 <MVM_interp_run+87149>, 0x7ffff791e9a4 <MVM_interp_run+85518>, 0x7ffff7913d8a <MVM_interp_run+41460>, 0x7ffff7913e55 <MVM_interp_run+41663>...}
    cur_op = 0x7ffff507266e "\016"
    bytecode_start = 0x7ffff50714e2 "\237"
    reg_base = 0x7ffff500e010
    cu = 0x7ffff6357890
    cur_callsite = 0x698810

---Type to continue, or q to quit---
#3 0x00007ffff79e51ae in MVM_vm_run_file (instance=0x603010, filename=0x7fffffffe13e "/home/emilper/testing_ground/perl6/native_call.moarvm") at src/moar.c:158

    str = 0x7ffff62f67c8
    start_frame = 0x7ffff7ffe1c8
    tc = 0x6035e0
    cu = 0x7ffff62f66e8

#4 0x0000000000400ef7 in main (argc=5, argv=0x7fffffffdcc8) at src/main.c:163

    instance = 0x603010
    input_file = 0x7fffffffe13e "/home/emilper/testing_ground/perl6/native_call.moarvm"
    executable_name = 0x0
    lib_path = {0x7fffffffe0a1 "/home/emilper/safedelete/languages/nqp/lib/", 0x7fffffffe0d7 "/home/emilper/safedelete/languages/perl6/runtime", 0x7fffffffe112 "/home/emilper/safedelete/languages/nqp/lib/", 0x0, 
      0x400f20 <__libc_csu_init> "AWA\211\377AVI\211\366AUI\211\325ATL\215%h\016 ", 0x4009f0 <_start> "1\355I\211\321^H\211\342H\203\344\360PTI\307\300\220\017@", 0x7fffffffdcc0 "\005", 0x0}
    dump = 0
    full_cleanup = 0
    argi = 3
    lib_path_i = 3
    flag = -2

(gdb)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.