02:47
_ilbot joined
04:17
flussence joined
07:46
camelia joined
08:19
camelia joined
12:01
tgt joined
|
|||
nwc10 | What would this be telling me? | 13:15 | |
(gdb) p item | |||
$1 = (MVMCollectable *) 0x4000300400001 | |||
jnthn | That the pointer is bogus, given the 1 at the end... | 13:25 | |
Just out of knowing alignment, I think we can safely say that's not a valid pointer. | 13:26 | ||
13:46
FROGGS joined
14:07
jnap joined
14:10
jnap joined
|
|||
nwc10 | Oh, I though the 0x40030040001 pattern might have been a tell-tale about why | 15:17 | |
anyway, you too can probably have this SEGV if you do this: | |||
paste.scsys.co.uk/285027 | 15:18 | ||
basically I made MoarVM run a nursery collection on every allocation | |||
that's a SEGV in ..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 | |||
so, presumably (at least) one thing is not rooted | 15:19 | ||
it is, of course, bloody slow | |||
but probbly the fix for that is to redo how often full GC runs happen | |||
15:21
ggoebel115 joined
|
|||
jnthn | Ooh | 15:21 | |
nwc10 | if you naively always do a nursery run, then it goes SEGV because tc->thread_obj is NULL | 15:23 | |
if you just check for that, it goes SEGV fairly early. Not *sure* if that is a bug, or an assumption about how far bootstrap needs to be before the GC can run at all | |||
hence the hack in that patch to wait until the first real nursery run before going all agressive | |||
jnthn | Yeah, it's an assumption that we have space in the nursery to bootstrap | ||
nwc10 | but really, I think that it would be better to assert or panic if the GC tries to run too early | ||
15:24
jnap joined
|
|||
jnthn | Well, there's a better answer | 15:24 | |
There's a way to make the GC do directly gen2 allocation | |||
nwc10 | anyway, with the hack, it takes bloody ages but it does crash way earlier than the Rakudo setting | ||
jnthn | So we can maybe use that to make sure the bootstrap all allocates directly in gen2 and we start with a really empty nursery. | ||
nwc10 | I suspect that "Bloody ages" could be reduced if I tracked how much is allocated, and avoided second stage GC until ten-times a full nursery had run. Given that the ten times is assuming that it's 10 full nurserys | 15:25 | |
does nearly all the bootstrap survive? The loading process doesn't make temporary objects? | 15:26 | ||
anyway, it's a tuning detail | |||
jnthn | No temporaries really | ||
nwc10 | the hack shows up (at least) one bug | ||
jnthn | It's tuning, but likely wroth it... | ||
Yeah. Nice hack. :) If you don't find the actual bug, I can certainly use that to help reproduce/find it. | 15:27 | ||
nwc10 | I don't know if I know enough to find the bug | ||
anyway, need tea, and the shops shut soonish | |||
and don't open tomorrow | |||
jnthn | ok :) | 15:28 | |
In the meantime, I may have a patch that gives some amount of pain relief with setting compile time. | |||
dalek | arVM: cecf572 | jnthn++ | src/core/ (3 files): Can clean up ->caller more quickly in many cases. This greatly alleviates the missing closure handling optimizations in the GC so far; CORE.setting compiles in 73% of the time it previously did with this. |
15:36 | |
timotimo | oh sweet! | 15:37 | |
dalek | arVM: d1a0aec | jnthn++ | src/moar.c: Bootstrap object system directly into gen2. nwc10++ for analysis that led to this. |
15:44 | |
nwc10 | jnthn: do food shops open on Sundays in Slovakia? | 15:47 | |
jnthn | nwc10: I'm fairly sure the big tesco I lived near in the center opened for some hours on a Sunday | 15:50 | |
nwc10 | ah OK. Was curious. | 15:51 | |
jnthn | Maybe just until 4pm or so... | ||
nwc10 | However, I'm not missing Tesco | ||
jnthn | Forget exactly...it was 4 years ago :) | ||
timotimo | jnthn: did you measure what benefit the last commit gave? | 15:55 | |
jnthn | timotimo: I'm not sure they'll be measurable... | 16:00 | |
timotimo: make test in NQP ended up coming in at 23s on the run rather than 24s before but that's likely noise | |||
Um, though the run I just did now came in at 22s. What. :) | 16:01 | ||
Reliably get 22s now. Used to get 25s reliably. I am pretty sure most of that came from the big win in cecf572 rather than the small one in d1a0aec | 16:02 | ||
timotimo | :) | 16:17 | |
fair enough | 16:18 | ||
well, when trying to build rakudo, i get the pointer to old fromspace thingie :\ | 16:41 | ||
jnthn | Yeah, I didn't hunt that one down jus tyet. | 16:42 | |
FROGGS | timotimo: can you check your Moar Makefile for the -On flag? | ||
timotimo | sure | 16:43 | |
-O1 -g2 | 16:44 | ||
er | |||
-O1 -g3 | |||
FROGGS | damn | ||
seems only my box does build using -O1 | 16:45 | ||
jnthn | oh holy crap | ||
NO WONDER stage mast is slow | |||
I just went to fix a bug I thought was probably the multi-dispatch cache's fault (not knowing about containers) | |||
...and discovered there's no multi-dispatch cache in place at all. | 16:46 | ||
That means we've been putting up with longer compiles of everything. | 16:47 | ||
jnthn deals with this now, since it'll make working on everything else faster... | 16:49 | ||
FROGGS | \o/ | 16:51 | |
NO CRAP! HOLY WONDER! | |||
17:08
grondilu joined
|
|||
TimToady | (dumping core faster)++ ;) | 17:13 | |
tadzik | haha | 17:15 | |
timotimo | :D | 17:16 | |
moritz | hipsters were yesterday, today we have (core) dumpsters! | 17:19 | |
timotimo | i dumped core before i compiled Cool. | ||
TimToady | Dumpster Dance! | 17:20 | |
moritz | now my rakudo/moar-support also segfaults during setting compilation | 17:37 | |
after stage mbc | |||
jnthn | moritz: Does it actually write out the CORE.setting.moarvm? | 17:38 | |
dalek | arVM: ba44826 | jnthn++ | src/6model/containers. (2 files): Allow containers to indicate non-invoking fetch. Will use it in implementing the multi-dispatch cache; will also need it for various other optimization related things in the future. |
17:39 | |
arVM: 484a088 | jnthn++ | / (6 files): Stub in multi-cache storage, layout, etc. |
|||
moritz | jnthn: 11MB of it written, yes | 17:40 | |
jnthn | OK, so it's an exit crash... | ||
moritz | succeeded in gdb | 17:48 | |
jnthn | tssk | 17:49 | |
FROGGS: I guess that known file handle issue remains unfixed, though? | |||
timotimo | does the multi-method cache improve the run speed of nqp-moar as well? | 17:51 | |
jnthn | Sure, given it's NQP run-speed that determines how long phase mast takes, given that's all NQP code. | 17:55 | |
timotimo | ah, of course, that one does do multi-dispatch | ||
you even said so above | 17:56 | ||
jnthn | And the dispatcher is written in NQP, which is fine if you only hit that slower path occasionally. | ||
18:08
_ilbot joined
|
|||
FROGGS[mobile] | jnthn: yes, because I did not really understood the suggested fix | 18:57 | |
:o( | 18:58 | ||
19:03
lizmat joined
|
|||
jnthn | multi cache seems to be a win | 21:26 | |
timotimo | what a surprise! :) | 21:33 | |
jnthn | NQP test suite here is down to 19s now, from 22s after earlier work. | 21:35 | |
timotimo | oh nice :) | 21:36 | |
there, fudged it | 21:37 | ||
dalek | arVM: 8e20077 | jnthn++ | src/ (4 files): Give each type a unique ID for use in caching. |
21:39 | |
arVM: fd7c070 | jnthn++ | src/ (6 files): Finish up multi-dispatch cache implementation. |
|||
jnthn | Hm, with --jobs=12 I can get the NQP test suite down to 7s now... | 21:41 | |
:) | |||
Good win for CORE.setting compilation too | 21:46 | ||
FROGGS | hehe, that sounds nice :o) | ||
jnthn++ | |||
jnthn | Here's the key numbers as things stood before my work today: | 21:47 | |
Stage parse : 141.805 | |||
Stage optimize : 20.628 | |||
Stage mast : 179.440 | |||
Here's how those are now | |||
Stage parse : 81.131 | |||
Stage optimize : 9.668 | |||
Stage mast : 56.230 | |||
148s per build vs 343s before. | 21:48 | ||
nwc10 | so you've more than halved the time. Not bad. | ||
Not at all bad. | 21:49 | ||
beer? | |||
jnthn | ;) | ||
nwc10 | How does it compare to the JVM numbers for those stages on the same machine? | 21:50 | |
jnthn | I'm recalling them off the top of my head here, but I think parse is around 43s, optimize is around 4s, and jast is around 26s | 21:51 | |
nwc10 | OK, so only twice as fast. | ||
jnthn | Yeah, JVM is currently about twice as fast. | ||
But Moar doesn't have any clever optimization stuff in it yet. | 21:52 | ||
timotimo | ooooooh yeah | 21:54 | |
and the parrot times? | |||
parrot takes 100s for stage parse on my machine | 21:55 | ||
jnthn | timotimo: Don't recall those | ||
I seem to remember Parrot was more than that for parse. | 21:56 | ||
timotimo | that's great! :) | 21:57 | |
though there's parts missing from the core setting for moar, no? | |||
jnthn | Not much. | ||
It's missing...concurrency stuff, so it's not a quite fair comparison with JVM. | |||
timotimo | very nice :) | ||
now all that's left to do is for it to not explode during building :D | |||
jnthn | I think sockets are the only thing left out and that's not that much code. | ||
Yeah...I didn't really have the concentration to make GC bug hunting a worthwhile thing today. | |||
timotimo | didn't we remove some dynamic var stuff from the setting, too? | ||
probably doesn't account fo rmuch | |||
well, i'm happy :) | |||
finding the lack of caching was a good catch | |||
jnthn | Yeah, I didn't realize we'd not got that implemented already :) | 21:58 | |
timotimo | so, what do you feel like doing next? | ||
or rather, when's the next tuitful day? | |||
jnthn | Well, I may have some time tomorrow, but gotta go to Goteborg | 21:59 | |
Will be teaching my final class of the year Mon/Tue | |||
Then got Wed/Thu free for Perl 6 things, but should also do some Christmas shopping and prep for trip to UK to see family. | 22:00 | ||
timotimo | that still sounds good :) | ||
do you have anything that you can delegate to me perhaps? something not too complicated? :P | 22:01 | ||
(you know my (lack of) capability) | |||
jnthn | timotimo: Well, I'm seeing if I can get sanity tests to run at all, which may help point out things we need to work on. | 22:12 | |
dalek | arVM: 3545bd2 | jnthn++ | src/core/frame.c: Avoid premature collection of contvar clones. |
22:25 | |
22:29
colomon joined
|
|||
dalek | arVM: 5ea206f | jnthn++ | src/core/frame.c: Don't spew state var warning. Tests will show up their not-done-yet well enough. |
22:36 | |
jnthn | timotimo: OK, so...hmm | ||
timotimo: If you run a bunch of the tests in t/00-parrot and t/01-sanity, they pass. Not all, but many. | 22:37 | ||
timotimo: But prove --exec=perl6-m t/00-parrot t/01-sanity always reports "No plan found in TAP output" :( | |||
timotimo: Feel free to look into that, also to look into any of the test failures | 22:38 | ||
FROGGS: You may also have some ideas on the prove issue...could be something specific to a certain kind of handle? | 22:41 | ||
timotimo | i can look, but right now i've had a few drinks :) | ||
jnthn | np, doesn't have to be now :) | 22:43 | |
timotimo | i'm running an unoptimized moar now, i get until trying to build Test.pm | 22:44 | |
i just got the last version related commit and will try rebuilding | |||
i couldn't run any of the sanity tests yet | |||
jnthn | yeah, you can't "make test" but you can perl6-m t/00-parrot/01-... | 22:46 | |
timotimo | yes, i was trying that | 22:47 | |
i got an error that seemed like it should have been a warning | |||
use of blah in numeric context mumble mumble | |||
i'll try again in a minute | |||
FROGGS compiles | |||
jnthn | Yeah | 22:48 | |
Warnigns somehow end up as errors | |||
Not sure why | |||
timotimo | ah, good. now i can run the sanity tests | 22:49 | |
i also can't make m-test because m-install doesn't run to completion :) | |||
t/01-sanity/01-tap.t .. ok | 22:51 | ||
All tests successful. | 22:52 | ||
i can do that with prove -e './perl6-m' t/01-sanity/01-tap.t' | |||
but it sometimes fails | |||
jnthn | Hm, odd... | ||
It always fails here | |||
timotimo | tried it with -v? | 22:53 | |
jnthn | t\00-parrot\02-op-math.t .. | ||
Ƀ┐ | |||
No subtests run | |||
... | |||
FROGGS | when we run under prove, then stdout/stderr is piped rather than a tty, right? | 23:05 | |
prove perl6-m t/01-sanity/01-tap.t | 23:06 | ||
perl6-m ............... > Failed to seek in filehandle: 9 | |||
ohh, -e missing | |||
ahh, all subtests pass, but nonzero exit status | 23:07 | ||
104s stage parse.... I like it :o) | 23:17 | ||
parrot needs at least 10s more here | |||
I think that this could cause problems: gist.github.com/FROGGS/422a82ea138d3fe14833 | 23:39 | ||
dunno how to fix it though | 23:40 | ||
dalek | arVM: 3940115 | jnthn++ | src/core/frame.c: Avoid looking at uninitialized memory. FROGGS++ for reporting. |
23:43 | |
FROGGS | umm, that was quick | ||
ohh, the error message has changed! | 23:44 | ||
before, it just said: Unhandled exception: Cannot invoke this object | 23:45 | ||
now: Unhandled exception: Cannot invoke this object (REPR: Uninstantiable, cs = 0) | |||
and valgrind is clean | |||
jnthn | Oops, didn't mean to commit that extra debugging info in the patch... | 23:48 | |
Ah well, does no harm. | |||
FROGGS | correct :o) |