github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
01:24
evalable6 left,
linkable6 left
01:26
linkable6 joined
01:27
evalable6 joined
01:34
lucasb left
03:09
raku-bridge left,
raku-bridge joined
04:33
evalable6 left,
coverable6 left,
linkable6 left,
tellable6 left,
unicodable6 left,
bloatable6 left,
quotable6 left,
squashable6 left,
bisectable6 left,
shareable6 left,
notable6 left,
committable6 left,
releasable6 left,
nativecallable6 left,
greppable6 left,
sourceable6 left,
benchable6 left,
statisfiable6 left
04:34
bloatable6 joined,
releasable6 joined,
linkable6 joined
04:35
tellable6 joined,
notable6 joined,
statisfiable6 joined,
shareable6 joined,
evalable6 joined,
coverable6 joined,
quotable6 joined
04:36
committable6 joined,
sourceable6 joined,
nativecallable6 joined,
bisectable6 joined,
greppable6 joined,
benchable6 joined
04:37
unicodable6 joined,
squashable6 joined
09:35
sena_kun joined
|
|||
nwc10 wonders - if rr is the debugging tool of choice for pirates, what do ninjas use? | 09:42 | ||
moritz | constant vigilance | 09:43 | |
moon-child | I wonder, is r2 the sequel to rr? | 09:44 | |
moritz | shouldn't the sequel to rr be called rt? | 09:47 | |
moon-child | m: say 'rr'.succ | 09:48 | |
camelia | rs | ||
moon-child | it's confirmed: time to rewrite it in rust™ | 09:49 | |
10:59
patrickb joined
12:10
Altai-man joined
12:12
sena_kun left
13:12
patrickb left
14:43
domidumont joined
|
|||
nine | Looks like I'm now trapped in a perpetual loop of fix one case, break another :( | 15:04 | |
15:27
MasterDuke left
15:29
MasterDuke joined
16:10
zakharyas joined
16:12
sena_kun joined
16:13
Altai-man left
16:45
MasterDuke left
|
|||
nwc10 | Anyone can anser, but I suspect... | 18:00 | |
nine: If I have a testcase, where I | |||
1) delete .precomp | 18:01 | ||
2) run it - behaviour A | |||
3) run it again - behaviour B | |||
what does this tell me? | |||
oh, sigh, stranger | |||
I think it's just sometimes A, sometimes B | 18:02 | ||
I guess I need to remember how to turn off address space layout randomisation | |||
this one is strange | |||
yes, it is. smoetimes A, sometimes B | 18:04 | ||
basically, run t/spec/S09-multidim/assign.t with MVM_SPESH_BLOCKING=1 MVM_SPESH_NODELAY=1 | |||
(fortunately it doesn't seem to be the JIT - fun still happens with MVM_JIT_DISABLE=1 too) | 18:05 | ||
lizmat | is behaviour A "test pass" and B "some tests fail" ? | 18:28 | |
nwc10 | one particular test fails in the bad case | 18:29 | |
this test fails, because the exception is not thrown: | 18:30 | ||
dies-ok { my @a[2;2] = <a b>, <c d e> }, 'Cannot assign to many items at first dimension'; | |||
lizmat | RAKU_TEST_DIE_ON_FAIL=1 rt 'dies-ok { my @a[2;2] = <a b>, <c d e> } for ^10000 | 18:35 | |
looks like being a golf for it | |||
it fails after 315 to about ~800 attempts | 18:36 | ||
for me at least | |||
s/rt/raku -MTest -e/ | |||
after it failed once, it does not recover it seems | 18:37 | ||
taking the `my @a[2;2]` out of the loop, does not fix it | 18:38 | ||
it just appears to increase the number of iterations to make it fail | |||
making the array a native shaped array, does not appear to change the failure or the failure rate | 18:39 | ||
nwc10 | from sitting inside gdb, the failure (to fail) seems to be because the value that is being assigned to @a is 2 lists of 2 elements (not a list of 2, and a list of 3) | 18:41 | |
but I can't figure out why the wrong thing is there | |||
"sometimes" | |||
lizmat | different golf: | 18:42 | |
my @a[2;2]; die unless dies-ok { @a = <a b>, <c d e f> } for ^10000; LEAVE dd @a | |||
or perhaps: | 18:43 | ||
my @a[2;2]; die @a.raku unless dies-ok { @a = <a b>, <c d e f> } for ^10000 | |||
nine | sounds like spesh? | ||
nwc10 | well, I can only make it fail with MVM_SPESH_BLOCKING=1 MVM_SPESH_NODELAY=1 | 18:44 | |
nine | what does it do with MVM_SPESH_DISABLE=1? | ||
nwc10 | which most definately is spesh | ||
it has never failed for me without MVM_SPESH_BLOCKING=1 MVM_SPESH_NODELAY=1 so MVM_SPESH_DISABLE=1 isn't going to chagne that | |||
nine | tools/jit-bisect.pl has a --spesh mode | ||
lizmat | doesn't die with MVM_SPESH_DISABLE=1 for me | ||
nwc10 | nine: it's not a reliable fail. How does one bisect that? | 18:45 | |
*this* is my problem. If I can get a reliable testcase. or even one that happens often enough that I can cut it down, I'd be happier | |||
lizmat: what is rt? | |||
lizmat | rt is an alias I have for raku -MTest -e | 18:46 | |
nwc10 | nine: I already hash hash randomisation disabled. | ||
aha | |||
lizmat | dies after ~ 20 iterations for me with MVM_SPESH_BLOCKING=1 | ||
actually, looks like it *always* breaks at the 22nd iteration that way | 18:47 | ||
nine | sounds quite reproducible then :) | ||
lizmat | with MVM_SPESH_NODELAY=1 it taks about 4500 iterations before it breaks | 18:48 | |
*takes | |||
nwc10 | OK. Thanks | ||
right. That now seems to be something that relibly fails | |||
what happened was | |||
I decided that I was annoyed that various spectests always fail with MVM_SPESH_BLOCKING=1 MVM_SPESH_NODELAY=1 | 18:49 | ||
so decided to fix it | |||
github.com/MoarVM/MoarVM/pull/1386 fixes two | 18:50 | ||
github.com/MoarVM/MoarVM/issues/1387 because I can't fix that one | 18:51 | ||
oh, and github.com/MoarVM/MoarVM/pull/1384 beacuse the spectests fail on every 32 bit platform. | 18:52 | ||
it's spesh but not the JIT. fails with MVM_JIT_DISABLE=1 | 18:54 | ||
sweet, yes, totally portable fail. <-- that window | 18:55 | ||
has a ppc32 build, and it fails there. | 18:56 | ||
no nasty grubby assembler here. | |||
lizmat | fwiw, I can't get it to fail on 1dim shaped array | 18:57 | |
3dim array fails in a way similar to the 2dim shaped array | |||
nwc10 | nine: it might have a spesh mode, but it seems to have no documentation | 19:00 | |
lizmat | my guess is something is awry with nqp::atposnd | 19:07 | |
in fact: the code in src/core.c/Array/Shaped is using the nqp op to throw the exception *after* it figured it has too many vakues | 19:08 | ||
*values | |||
hmmm.. maybe the problem is, is that it doesn't get there... | 19:10 | ||
hmmm.. indeed: | 19:13 | ||
use nqp; my int @i = 1,2; my int @a[2;2]; dies-ok { nqp::atposnd(@a,@i) } for ^10000 | |||
doesn't fail for me at all | |||
nwc10 | confirm that it doesn't get there - breakpoint set with gdb isn't reached, the exception is not thrown, the test then fails | 19:16 | |
lizmat | so either $pulled has become IterationEnd when it shouldn't have, or an index is not updated, or the iterator has become lazy all of a sudden | 19:21 | |
19:23
Altai-man joined
19:25
sena_kun left
19:34
domidumont left
|
|||
nwc10 | OK, I have it running... | 19:35 | |
SPESH Broken frame: 3942. | 19:40 | ||
SPESH Acquiring log: spesh-3942.txt | |||
well, it says someting abuot Spesh of 'meta_methods' (cuid: 125, file: gen/moar/Metamodel.nqp:1041) | |||
but I don't know how the rest of that file works. | |||
Geth_ | MoarVM: 9fbcdb4de6 | (Nicholas Clark)++ | src/6model/reprs/P6opaque.c P6opaque's `spesh` must handle P6bigint values inline, as some are too big. P6opaque's `spesh` will attempt to take a concrete P6bigint known value and convert it to a `MVM_OP_const_i64`. This doesn't work if big integer's value is to large than an MVMint64. Previously the code was not considering this corner case. It was calling ... (12 more lines) |
19:42 | |
MoarVM: d607387c34 | (Jonathan Worthington)++ (committed using GitHub Web editor) | src/6model/reprs/P6opaque.c Merge pull request #1386 from MoarVM/P6opaque-spesh-must-inline-bigint-value-lookup P6opaque's `spesh` must handle P6bigint values inline, as some are too big |
|||
nwc10 | good *, jnthn | ||
jnthn | o/ | ||
nwc10 | \o | ||
jnthn | Just had a spare moment waiting for dinner to be delivered and figured I'd knock at least one PR off the review queue :) | ||
nwc10 | OK, I really don't know how to figure out what spesh-3942.txt is telling me. | 19:44 | |
ha, found the file. It's in rakduo. | 19:45 | ||
And the culprit method is just this: | |||
# Get the meta-methods in order of declaration. | |||
method meta_methods($obj) { | |||
@!meta_methods | |||
} | |||
Geth_ | MoarVM/master: 9 commits pushed by (Nicholas Clark)++, (Jonathan Worthington)++
|
19:46 | |
19:50
MasterDuke joined
19:53
raku-bridge left,
raku-bridge joined,
raku-bridge left,
raku-bridge joined
|
|||
Geth_ | MoarVM/master: 4 commits pushed by (Nicholas Clark)++, (Jonathan Worthington)++ | 19:56 | |
nwc10 | as best I could tell that was the only static variable | ||
jnthn | nwc10: Dinner is arriving, so will be away for a bit. I left a comment in the reivew of that PR about something that could also probably be simplified thanks to your work. | 19:57 | |
I should probably have filed an issue, but later (well, I just need to remember...) :) | |||
nwc10 | OK, mail arrived | ||
jnthn | bbl o/ | ||
nwc10 | enjoy food | 19:58 | |
20:07
patrickb joined
20:11
sena_kun joined
20:13
Altai-man left
20:22
tib left,
camelia left
20:25
tib joined,
camelia joined
|
|||
vrurg | Can somebody help me with parameter binding a bit? I'm working on making this gist work: gist.github.com/vrurg/caeac11d7a2c...a2df96c30. Basically, everything works, the subset gets instantiated correctly, as introspection shows. But when method foo is called I get 'inconsistent bind error' and it looks like moar internally still typechecks against uninstantiated subset. | 20:32 | |
Can I do something about it or is it moar specifics? | 20:34 | ||
20:56
travis-ci joined
|
|||
travis-ci | MoarVM build passed. Jonathan Worthington 'Merge pull request #1374 from MoarVM/eliminate-static-race-condition | 20:56 | |
travis-ci.org/MoarVM/MoarVM/builds/745269145 github.com/MoarVM/MoarVM/compare/9...a1af7724f1 | |||
20:56
travis-ci left
|
|||
jnthn | vrurg: Probably you need to tweak the way signatures are lowered (lower_signature or some such in Actions) | 21:09 | |
21:09
sena_kun left
|
|||
jnthn | You'll need to teach it to not enforce the type check if the value is undefined (e.g. fix up the code-gen for that) | 21:10 | |
vrurg | jnthn: done already. I don't see it invoked though after all. | ||
jnthn | Try dumping the bytecode to make sure it looks right | ||
(e.g. it's doing a isconcrete and then not doing the istype or whatever) | 21:11 | ||
Oh, or maybe it's about the constraint type checks, which are emitted separately from the nominal ones | |||
Nominal ones happen before the symbol is bound, constraint ones after | |||
I guess it's the latter | |||
But again, can be worth checking it only does them conditionally | 21:12 | ||
21:12
patrickb left
|
|||
vrurg | Somehow I forgot to check the AST. But at least you re-assured me that binding wouldn't bypass what lower_signature prdouces. So, it's now clear where to look at. | 21:15 | |
jnthn: BTW, glad to see you again! | |||
jnthn | No, other than unboxing for native types, the VM doesn't enforce any parameter type checks | 21:16 | |
So it'll all be in lower_signature | |||
vrurg | Oh, my... At least it was so nice of me to inject debug printing into a generic branch of a condition and expect it to fire for a nominal one... | ||
jnthn: Some of your help might be needed, if you have a spare minute. In the big rework of coercions I touched handling of generics in lower_signature. But to work at runtime the code needs to have access to the signature object. The only way I found is through ctxcode/getcodeobject which breaks inlining. If you have any idea how to help this situation I'd highly appreciate it. | 21:19 | ||
22:10
zakharyas left
23:07
leont joined
23:49
leont left
|