On Wed Aug 31 04:31:25 2016, nicholas wrote:
> "my" machine has almost as many cores. I can get it to bomb at times.
> (ASAN makes no comment)
>
Yeah, I'm guessing it's a slightly higher level data race due to mis-code-gen
rather than any kind of memory corruption.
> > Any chance you could:
> >
> > 1) Run it with `--ll-exception`
> > 2) Stick a CATCH block in the sub that does `.backtrace.full.say` or
> > similar, to see if we get any more details output there
>
> You mean like this?
>
> sub what-is {
> CATCH { .backtrace.full.say }
> return $^num.is-prime ?? "$num is prime" !! "$num is not prime";
> }
> my @results;
> for 3¹²³⁴⁵ … 3¹²³⁴⁵+127 -> $n {
> @results.push: start what-is $n;
> }
> print await @results;
>
Yes, that's what I meant.
> I got this:
>
> Cannot invoke this object (REPR: Null; VMNull)
> in block <unit> at 129120.pl line 9
>
>
> Line 9 is `print await @results;`
>
>
> What do I need to do better, to get actual useful details?
>
Well, that's information in and that it means the exception is not happening
inside of the sub `what-is`. Unfortunately, the only thing between the two is
the stuff in CORE.setting implementing promises and scheduling, which means
it's probably a very occasional race somewhere in there. Probably instrumenting
the bit of MoarVM that spits out that error to dump a backtrace before throwing
is the easiest next thing to do.
I'll see if I can recreate it locally outside of my VM.
/jnthn