timotimo fantastick 00:04
!
00:15 travis-ci joined
travis-ci MoarVM build failed. Samantha McVey 'Don't re_nfg when last_a or first_b are synthetics in concat 00:15
travis-ci.org/MoarVM/MoarVM/builds/255873308 github.com/MoarVM/MoarVM/compare/4...2cc0d9f25d
00:15 travis-ci left
Geth_ MoarVM: 04555a1f98 | (Samantha McVey)++ | src/strings/ops.c
Rename variable in concatenation to be more descriptive
00:22
timotimo did you see the failure? 00:29
t/moar/08-indexic.t .................... ok
Iteration past end of grapheme iterator
samcv i wasn't getting a failure before. ugh 00:30
does stresstest run all the normal ones or just the stress ones?
timotimo i think it runs all of 'em
samcv hmm 00:31
i get it if i do my $var = "\c[COMBINING ACUTE ACCENT]" x 2; my $var2 = 'a' ~ $var 00:32
but i don't get it if i collapse the strand first 00:33
timotimo, i should be fixing it now, going to run spectest before pushing this though. 00:40
the problem is only with repititions that have synthetics with non-starters in them. i think.
ah that was the nqp test you cited. it passes now for me 00:41
00:42 travis-ci joined
travis-ci MoarVM build failed. Samantha McVey 'Rename variable in concatenation to be more descriptive' 00:42
travis-ci.org/MoarVM/MoarVM/builds/255879218 github.com/MoarVM/MoarVM/compare/0...555a1f988a
00:42 travis-ci left
samcv timotimo, i forgot that repetition strings would not be normalized 00:49
Geth_ MoarVM: f5517e3f26 | (Samantha McVey)++ | src/strings/ops.c
Don't take the no re_nfg shortcut if a repetition contains a synthetic

Later we can somehow check if it contains a starter, but for now reject repetition which may not be in nfg form.
00:50
01:12 travis-ci joined
travis-ci MoarVM build passed. Samantha McVey 'Don't take the no re_nfg shortcut if a repetition contains a synthetic 01:12
travis-ci.org/MoarVM/MoarVM/builds/255883757 github.com/MoarVM/MoarVM/compare/0...517e3f2684
01:12 travis-ci left 01:37 AlexDaniel joined 01:48 ilbot3 joined 06:16 domidumont joined 06:18 brrt joined
samcv turns out there's also an issue with repeats if they aren't synthetic so will push that in a bit. and add a test to roast 06:21
06:21 lizmat joined 06:23 domidumont joined
brrt good * #moarvm 06:24
samcv hey brrt 06:25
brrt hey samcv
i haven't debugged why moarvm fails on win64 just yet
samcv just win64 not win32? 06:27
brrt, so repeats ended up messing things up. as they are not guarenteed to be normalized either. they're literarlly just repeated. well. each repeated string is maybe normalized. but the normalization can change when you flatten it 06:33
plus they don't act like normal strands i can get a substring the same way
brrt (normal strands?) 06:40
06:40 TimToady joined
samcv m: ('a' ~ "\c[COMBINING ACUTE ACCENT]" x 2).ords.say 06:45
camelia (225)
samcv what
bisectable6, ('a' ~ "\c[COMBINING ACUTE ACCENT]" x 2).ords.say
bisectable6 samcv, Bisecting by output (old=2015.12 new=1d94164) because on both starting points the exit code is 0
samcv, bisect log: gist.github.com/f1068124dcc2312f5f...e66c293062
samcv, (2017-07-20) github.com/rakudo/rakudo/commit/b8...a13ede808c
samcv argh
wait so it was wrong before? 06:47
old output is 225 769
oh normalization silly me
ok that's fine then
ok that means i fixed the issue 06:48
06:52 lizmat joined 07:03 lizmat joined 07:14 brrt joined 07:33 lizmat joined 07:59 domidumont joined 08:12 zakharyas joined 08:20 lizmat joined 08:23 zakharyas joined 08:28 Geth_ joined
jnthn morning o/ 09:00
Zoffix \o 09:01
samcv morning jnthn 09:03
jnthn Grr, this morning was one of those that my machine decided to do it's "hang completely after coming out of suspend" trick :/ 09:04
jnthn tries to remember exactly what he was debugging yesterday 09:05
jnthn also wonders if there's a console that can restore tabs with their history like a browser can :P 09:06
geekosaur I think konsole can be configured that way? 09:10
also at least one gtk/vte-flavored terminal
(OS X's Terminal can do it, but that's no help on linux or windows. then again, the linuxy terminals are also no help on windows.) 09:11
jnthn I just use whatever's the default think on ubuntu, which seems to be gnome terminal, which doesn't seem to have such a feature
Will take a look at konsole; thanks :) 09:12
jnthn recreates the bizzare spesh bug from yesterday and sets about trying to debug it 09:13
nine konsole doesn't have any browser like crash recovery. The only thing it does is save your current tabs and their current working directory. But only on an orderly shutdown. 09:16
geekosaur hm, maybe not. seems most people do it with screen/tmux/(apparently preferred) byobu
which won't help with a system crash unless you have (a) logging enabled (b) arrange for it to fsync() every so often 09:17
jnthn I use screen for keeping a session alive on a remote machine for doing irssi
nine I'd still very much like the idea of "crash always software" to catch on 09:18
geekosaur I did find someone requesting the OS X Terminal behavior for one of the "Terminator"s (there's at least 3...)
nine Oh, it's actually crash-only software 09:20
Geth_ MoarVM/spesh-worker: e26684982c | (Jonathan Worthington)++ | src/spesh/inline.c
Fix double-decrement of unused args in inlining.

We decremented usages, then deleted the instruction, but deleting the instruction also decrements the usage count. This led to instructions being wrongly eliminated. This was certainly a bug before the changes involving moving spesh to a thread and so forth; it's not clear how it managed to hide.
10:14
jnthn That took some finding
Spectest looking decidedly better for it though 10:23
brrt jnthn++
Geth_ MoarVM/spesh-worker: 96336c800b | (Jonathan Worthington)++ | src/spesh/stats.c
Disregard incomplete type tuples.

These pollute the statistics somewhat, but were also a source of duplicate log guard panics. With this, the NQP `make` completes with MVM_SPESH_BLOCKING=1 MVM_SPESH_NODELAY=1.
10:37
MoarVM/spesh-worker: f6c3d2076c | (Jonathan Worthington)++ | src/spesh/stats.c
No type-spesh for callsites with no object args.
10:48
jnthn ah, think I found the (hopefully only) remaining source of bother with dupe guards 10:57
But lunch first 11:00
11:09 brrt joined 11:27 brrt joined 11:48 lizmat joined 11:52 lizmat_ joined 12:05 brrt joined
jnthn nom nom pub lunch 12:23
Geth_ MoarVM/spesh-worker: b69cb1ec98 | (Jonathan Worthington)++ | src/spesh/stats.c
Disregard logged types for non-object args.

These are logged due to auto-boxing, but result in confusion if they make it into a type tuple. With this, NQP also tests cleanly with MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1, and Rakudo build makes it to CORE.setting then explodes with a different mode.
12:36
jnthn CORE.setting manages to SEGV when run with those two flags, intersetingly enough 12:38
hmm, seems we try to MVM_free something allocated with the FSA 12:42
12:45 lizmat joined
Geth_ MoarVM/spesh-worker: 48d05a2980 | (Jonathan Worthington)++ | src/core/ext.c
Initialize ->logged of op info for extops.

Fixes conditional jump on uninitialized value warnings from valgrind.
12:51
MoarVM/spesh-worker: 38afa1e23b | (Jonathan Worthington)++ | src/6model/reprs/MVMStaticFrame.c
Release spesh candidate array using the FSA.

This change was missed when switching it over to use the FSA (for the sake of the safepoint mechanism).
12:57
jnthn valgrind++ for those two :)
OK, so now we make it (with the spesh blocking and no-delay options) through the Rakudo build too 12:59
And one failure in make test
13:01 lizmat joined 13:03 lizmat_ joined, brrt joined 13:05 lucasb joined
Geth_ MoarVM/spesh-worker: e21cf78ceb | (Jonathan Worthington)++ | src/spesh/dump.c
More detailed dump of spesh slots.
13:55
jnthn Odd, a spesh slot is becoming NULL, despite at some point something non-NULL apparently having been placed in it 13:56
timotimo there's code in the optimizer that throws out unused spesh slots 14:02
i.e. nulls them
jnthn: i bet that's to blame
(and by extension, me)
jnthn I just found that :/ 14:03
That...ain't safe if you re-use
timotimo i thought i had something that made it safe? :o
jnthn Nope 14:04
Though it seems it relied on us not using try_reuse elsewhere
It looks like I added try_reuse when we have static lexicals
Since the same thing being called in two places isn't all that unusual 14:05
And we got away with this before
Yeah, removing that line fixes it 14:06
timotimo dang 14:08
timotimo-- for not making stuff sufficiently robust 14:09
jnthn We could try to track re-use
But I don't know that it's worth it
In that the cases where this happens are when we resolve a code object
And then find the coderef inside of it
But the latter points to the former
So we aren't keeping it alive artificially
Geth_ MoarVM/spesh-worker: 37c42b8bb0 | (Jonathan Worthington)++ | src/spesh/optimize.c
Don't NULL out spesh slots; they may be re-used.

The attempt to NULL also likely doesn't help anything much in reality either, since I can't think of a situation where it would reduce the lifetime of an object (typically the latter slot has a code ref, and the first its enclosing code object, but the latter points to the former, keeping it alive even if we NULL the slot).
14:14
jnthn The main thing left to do at this point is to put the OSR back 14:15
Geth_ MoarVM/even-moar-jit: ce5080a1a2 | (Bart Wiegmans)++ | 2 files
Add type checks for templates

Many, many, many errors I've made by inserting a VOID-yielding node in a template where a REG was required or the other way arround. And that then doesn't show up until the template is tiled and you get a segmentation fault or a panic. So let's try to avoid that and add node type checks, which will find such problems at (pre)compilation time.
timotimo ^- this ought to make exprjit a bit friendlier to any collaborators in the future, too 14:17
brrt++
jnthn brrt++
Yeah, looks like a good thing to have :) 14:18
timotimo types are useful, we should put them in perl6, too 14:19
14:20 AlexDaniel joined
jnthn Hm, only thing I see up now is that the Metamodel::Primitives type seems to have gone missing :S 14:21
Other than that, spectset is looking about alright
Didn't try spectest with blocking + nodelay yet
Hm, OSR installation is a bit more fun now :) 14:37
Or rather, doing it cheap is. 14:41
14:45 brrt joined 15:14 brrt joined
brrt ohai 15:14
yeah, funny thing about that; that was only possible after i started simplifying the expr operator semantics to have only single types
jnthn :) 15:16
Got detection of when to try and install OSR'd frames now
brrt also, strawberry perl++
since it comes with gcc
jnthn Now I "just" need to figure out why trying to jump into them doesn't work out
brrt (i maybe need to allocate more cores to this vm) 15:17
jnthn hah 15:24
We weren't kicking out the osrpoint instruction
So it OSR'd and then tried to do it again but of course the index was invalid 15:25
This also meant that since osrpoint showed up in all the specialized code, we never JIT-compiled anything with a loop in it :P
And kept on writing logs in optimized code 15:26
yay, that knocks a bit more of CORE.setting builds 15:27
Ouch 15:29
Suddenly spectset argh
ooh, even Rakudo make test has issues
15:41 lizmat joined 15:42 AlexDaniel joined
jnthn It seems that sometimes, tc->cur_frame->caller->args is junk by the time we OSR 15:53
Hm, it has a nulled cur_args_callsite also 15:54
Guess we should use the latter anyway. Still wonder how this situation arises. 16:00
Geth_ MoarVM/spesh-worker: 29f571264d | (Jonathan Worthington)++ | src/spesh/optimize.c
Kick out osrpoint instructions in optimize.
16:08
MoarVM/spesh-worker: 6aea727f0e | (Jonathan Worthington)++ | 2 files
First attempt at re-instating OSR.

Works for a simple case, but turns out to be fairly explosive in general.
MoarVM/spesh-worker: c150233a33 | (Jonathan Worthington)++ | src/spesh/osr.c
Retain args buffer on OSR frame growth.

So it will not contain junk, which may cause problems later on.
jnthn It's still quite explosive, alas
timotimo glad to see that even perl6 startup has more than 100% cpu usage now :) 16:10
Zoffix Is that good? 16:11
timotimo yup
well, not 100% necessarily
in theory we now do work we used to do on the main thread off in another thread while the original thread keeps doing stuff
Zoffix Ah 16:12
jnthn Yeah, the main thread is free to get on with the program while another one optimizes
timotimo of course there's always a little overhead when you move stuff over to another thread because inter-thread communication and synchronization
but jnthn designed it in a way that makes overhead pretty slim
Zoffix cool. jnthn++
jnthn And if it gets it done before the opt is ready, well, good for it.
Zoffix BTW, Moar is still using ZofGeth 16:13
New URL: geth.niner.name:8888/?chan=#perl6-dev
jnthn Odd, with OSR on we manage to get through all of the NQP and Rakudo build...
But explode in various bits of make test
I wonder if it's 'cus we have guarded stuff and it ain't true at the point we OSR 16:14
timotimo we don't go through any kind of guard tree when we enter an osr'd candidate? 16:15
jnthn Zoffix: Web hook updated, didn't know about that
timotimo: For arguments, yes, but I was thinking about deopt points
Don't think I'll debug further for now, but it looks like it'll be this, which I kinda suspected was possible, just didn't quite expect to happen so immediately 16:17
Or so widely, at least 16:18
I think this bunch of work is on course for a merge next week, anyways
Probably not as soon as Monday. 16:19
jnthn heads home 16:22
More spesh hackery next week :)
17:39 AlexDaniel joined 19:41 lizmat joined 20:19 lizmat joined
nwc10 jnthn: have a relaxing weekend. On Monday, you'll be "pleased" to know that ASAN finds your latest work very exiting, and make a multicoloured comments about it: paste.scsys.co.uk/564663 21:25
(sadly nopaste is not capable of relaying the excitement of multicoloured barfage)
21:43 MasterDuke joined
MasterDuke how are people building with asan? it never seems to work for me, i can't even build NQP 21:51
21:52 travis-ci joined
travis-ci MoarVM build errored. Samantha McVey 'concat: Fix conditional to check first instead of last strand of string b 21:52
travis-ci.org/MoarVM/MoarVM/builds/256225371 github.com/MoarVM/MoarVM/compare/4...29f8411b6d
21:52 travis-ci left
samcv phew. that error is just a problem with apt-get not working for whatever reason 22:11
all is fine 22:12
er. maybe.
yeah it's fine
jnthn nwc10: ooh, that is a pleasing find 22:29
Geth MoarVM: 03c829ec24 | (Samantha McVey)++ | src/strings/ops.c
MSVC doesn't allow variable length arrays, so use alloca

Allocate onto the stack using alloca since MSVC doesn't allow variable length variable declarations (not known at compile time).
22:33
MoarVM: 0729f8411b | (Samantha McVey)++ | src/strings/ops.c
concat: Fix conditional to check first instead of last strand of string b

This is much likely to cause an issue than repetitions in the last strand of string a, but correct this so it checks the proper strand.
I was not able to trigger any incorrectness so was unable to add new tests for this change like I did for when string a has repetitions.