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. |