Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-07-21

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:04 timotimo fantastick
00:04 timotimo !
00:15 travis-ci joined #moarvm
00:15 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 https://travis-ci.org/MoarVM/MoarVM/builds/255873308 https://github.com/MoarVM/MoarVM/compare/499059dccfd7...092cc0d9f25d
00:15 travis-ci left #moarvm
00:22 Geth_ ¦ MoarVM: 04555a1f98 | (Samantha McVey)++ | src/strings/ops.c
00:22 Geth_ ¦ MoarVM: Rename variable in concatenation to be more descriptive
00:22 Geth_ ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/04555a1f98
00:29 timotimo did you see the failure?
00:29 timotimo t/moar/08-indexic.t .................... ok
00:29 timotimo Iteration past end of grapheme iterator
00:30 samcv i wasn't getting a failure before. ugh
00:30 samcv does stresstest run all the normal ones or just the stress ones?
00:30 timotimo i think it runs all of 'em
00:31 samcv hmm
00:32 samcv i get it if i do  my $var = "\c[COMBINING ACUTE ACCENT]" x 2; my $var2 = 'a' ~ $var
00:33 samcv but i don't get it if i collapse the strand first
00:40 samcv timotimo, i should be fixing it now, going to run spectest before pushing this though.
00:40 samcv the problem is only with repititions that have synthetics with non-starters in them. i think.
00:41 samcv ah that was the nqp test you cited. it passes now for me
00:42 travis-ci joined #moarvm
00:42 travis-ci MoarVM build failed. Samantha McVey 'Rename variable in concatenation to be more descriptive'
00:42 travis-ci https://travis-ci.org/MoarVM/MoarVM/builds/255879218 https://github.com/MoarVM/MoarVM/compare/092cc0d9f25d...04555a1f988a
00:42 travis-ci left #moarvm
00:49 samcv timotimo, i forgot that repetition strings would not be normalized
00:50 Geth_ ¦ MoarVM: f5517e3f26 | (Samantha McVey)++ | src/strings/ops.c
00:50 Geth_ ¦ MoarVM: Don't take the no re_nfg shortcut if a repetition contains a synthetic
00:50 Geth_ ¦ MoarVM:
00:50 Geth_ ¦ MoarVM: Later we can somehow check if it contains a starter, but for now reject
00:50 Geth_ ¦ MoarVM: repetition which may not be in nfg form.
00:50 Geth_ ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/f5517e3f26
01:12 travis-ci joined #moarvm
01:12 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 https://travis-ci.org/MoarVM/MoarVM/builds/255883757 https://github.com/MoarVM/MoarVM/compare/04555a1f988a...f5517e3f2684
01:12 travis-ci left #moarvm
01:37 AlexDaniel joined #moarvm
01:48 ilbot3 joined #moarvm
01:48 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
06:16 domidumont joined #moarvm
06:18 brrt joined #moarvm
06:21 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 lizmat joined #moarvm
06:23 domidumont joined #moarvm
06:24 brrt good * #moarvm
06:25 samcv hey brrt
06:25 brrt hey samcv
06:25 brrt i haven't debugged why moarvm fails on win64 just yet
06:27 samcv just win64 not win32?
06:33 samcv 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 samcv plus they don't act like normal strands i can get a substring the same way
06:40 brrt (normal strands?)
06:40 TimToady joined #moarvm
06:45 samcv m: ('a' ~ "\c[COMBINING ACUTE ACCENT]" x 2).ords.say
06:45 camelia rakudo-moar 1d9416: OUTPUT: «(225)␤»
06:45 samcv what
06:45 samcv bisectable6, ('a' ~ "\c[COMBINING ACUTE ACCENT]" x 2).ords.say
06:45 bisectable6 samcv, Bisecting by output (old=2015.12 new=1d94164) because on both starting points the exit code is 0
06:45 bisectable6 samcv, bisect log: https://gist.github.com/f1068124dcc2312f5f2751e66c293062
06:45 bisectable6 samcv, (2017-07-20) https://github.com/rakudo/rakudo/commit/b81597bd867a0072cea6453529da89a13ede808c
06:45 samcv argh
06:47 samcv wait so it was wrong before?
06:47 samcv old output is 225 769
06:47 samcv oh normalization silly me
06:47 samcv ok that's fine then
06:48 samcv ok that means i fixed the issue
06:52 lizmat joined #moarvm
07:03 lizmat joined #moarvm
07:14 brrt joined #moarvm
07:33 lizmat joined #moarvm
07:59 domidumont joined #moarvm
08:12 zakharyas joined #moarvm
08:20 lizmat joined #moarvm
08:23 zakharyas joined #moarvm
08:28 Geth_ joined #moarvm
09:00 jnthn morning o/
09:01 Zoffix \o
09:03 samcv morning jnthn
09:04 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:05 * jnthn tries to remember exactly what he was debugging yesterday
09:06 * jnthn also wonders if there's a console that can restore tabs with their history like a browser can :P
09:10 geekosaur I think konsole can be configured that way?
09:10 geekosaur also at least one gtk/vte-flavored terminal
09:11 geekosaur (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
09:12 jnthn Will take a look at konsole; thanks :)
09:13 * jnthn recreates the bizzare spesh bug from yesterday and sets about trying to debug it
09:16 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
09:17 geekosaur 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
09:18 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...)
09:20 nine Oh, it's actually crash-only software
10:14 Geth_ ¦ MoarVM/spesh-worker: e26684982c | (Jonathan Worthington)++ | src/spesh/inline.c
10:14 Geth_ ¦ MoarVM/spesh-worker: Fix double-decrement of unused args in inlining.
10:14 Geth_ ¦ MoarVM/spesh-worker:
10:14 Geth_ ¦ MoarVM/spesh-worker: We decremented usages, then deleted the instruction, but deleting the
10:14 Geth_ ¦ MoarVM/spesh-worker: instruction also decrements the usage count. This led to instructions
10:14 Geth_ ¦ MoarVM/spesh-worker: being wrongly eliminated. This was certainly a bug before the changes
10:14 Geth_ ¦ MoarVM/spesh-worker: involving moving spesh to a thread and so forth; it's not clear how it
10:14 Geth_ ¦ MoarVM/spesh-worker: managed to hide.
10:14 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/e26684982c
10:14 jnthn That took some finding
10:23 jnthn Spectest looking decidedly better for it though
10:23 brrt jnthn++
10:37 Geth_ ¦ MoarVM/spesh-worker: 96336c800b | (Jonathan Worthington)++ | src/spesh/stats.c
10:37 Geth_ ¦ MoarVM/spesh-worker: Disregard incomplete type tuples.
10:37 Geth_ ¦ MoarVM/spesh-worker:
10:37 Geth_ ¦ MoarVM/spesh-worker: These pollute the statistics somewhat, but were also a source of
10:37 Geth_ ¦ MoarVM/spesh-worker: duplicate log guard panics. With this, the NQP `make` completes with
10:37 Geth_ ¦ MoarVM/spesh-worker: MVM_SPESH_BLOCKING=1 MVM_SPESH_NODELAY=1.
10:37 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/96336c800b
10:48 Geth_ ¦ MoarVM/spesh-worker: f6c3d2076c | (Jonathan Worthington)++ | src/spesh/stats.c
10:48 Geth_ ¦ MoarVM/spesh-worker: No type-spesh for callsites with no object args.
10:48 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/f6c3d2076c
10:57 jnthn ah, think I found the (hopefully only) remaining source of bother with dupe guards
11:00 jnthn But lunch first
11:09 brrt joined #moarvm
11:27 brrt joined #moarvm
11:48 lizmat joined #moarvm
11:52 lizmat_ joined #moarvm
12:05 brrt joined #moarvm
12:23 jnthn nom nom pub lunch
12:36 Geth_ ¦ MoarVM/spesh-worker: b69cb1ec98 | (Jonathan Worthington)++ | src/spesh/stats.c
12:36 Geth_ ¦ MoarVM/spesh-worker: Disregard logged types for non-object args.
12:36 Geth_ ¦ MoarVM/spesh-worker:
12:36 Geth_ ¦ MoarVM/spesh-worker: These are logged due to auto-boxing, but result in confusion if they
12:36 Geth_ ¦ MoarVM/spesh-worker: make it into a type tuple. With this, NQP also tests cleanly with
12:36 Geth_ ¦ MoarVM/spesh-worker: MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1, and Rakudo build makes it
12:36 Geth_ ¦ MoarVM/spesh-worker: to CORE.setting then explodes with a different mode.
12:36 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/b69cb1ec98
12:38 jnthn CORE.setting manages to SEGV when run with those two flags, intersetingly enough
12:42 jnthn hmm, seems we try to MVM_free something allocated with the FSA
12:45 lizmat joined #moarvm
12:51 Geth_ ¦ MoarVM/spesh-worker: 48d05a2980 | (Jonathan Worthington)++ | src/core/ext.c
12:51 Geth_ ¦ MoarVM/spesh-worker: Initialize ->logged of op info for extops.
12:51 Geth_ ¦ MoarVM/spesh-worker:
12:51 Geth_ ¦ MoarVM/spesh-worker: Fixes conditional jump on uninitialized value warnings from valgrind.
12:51 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/48d05a2980
12:57 Geth_ ¦ MoarVM/spesh-worker: 38afa1e23b | (Jonathan Worthington)++ | src/6model/reprs/MVMStaticFrame.c
12:57 Geth_ ¦ MoarVM/spesh-worker: Release spesh candidate array using the FSA.
12:57 Geth_ ¦ MoarVM/spesh-worker:
12:57 Geth_ ¦ MoarVM/spesh-worker: This change was missed when switching it over to use the FSA (for the
12:57 Geth_ ¦ MoarVM/spesh-worker: sake of the safepoint mechanism).
12:57 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/38afa1e23b
12:57 jnthn valgrind++ for those two :)
12:59 jnthn OK, so now we make it (with the spesh blocking and no-delay options) through the Rakudo build too
12:59 jnthn And one failure in make test
13:01 lizmat joined #moarvm
13:03 lizmat_ joined #moarvm
13:03 brrt joined #moarvm
13:05 lucasb joined #moarvm
13:55 Geth_ ¦ MoarVM/spesh-worker: e21cf78ceb | (Jonathan Worthington)++ | src/spesh/dump.c
13:55 Geth_ ¦ MoarVM/spesh-worker: More detailed dump of spesh slots.
13:55 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/e21cf78ceb
13:56 jnthn Odd, a spesh slot is becoming NULL, despite at some point something non-NULL apparently having been placed in it
14:02 timotimo there's code in the optimizer that throws out unused spesh slots
14:02 timotimo i.e. nulls them
14:02 timotimo jnthn: i bet that's to blame
14:02 timotimo (and by extension, me)
14:03 jnthn I just found that :/
14:03 jnthn That...ain't safe if you re-use
14:03 timotimo i thought i had something that made it safe? :o
14:04 jnthn Nope
14:04 jnthn Though it seems it relied on us not using try_reuse elsewhere
14:04 jnthn It looks like I added try_reuse when we have static lexicals
14:05 jnthn Since the same thing being called in two places isn't all that unusual
14:05 jnthn And we got away with this before
14:06 jnthn Yeah, removing that line fixes it
14:08 timotimo dang
14:09 timotimo timotimo-- for not making stuff sufficiently robust
14:09 jnthn We could try to track re-use
14:09 jnthn But I don't know that it's worth it
14:09 jnthn In that the cases where this happens are when we resolve a code object
14:09 jnthn And then find the coderef inside of it
14:09 jnthn But the latter points to the former
14:09 jnthn So we aren't keeping it alive artificially
14:14 Geth_ ¦ MoarVM/spesh-worker: 37c42b8bb0 | (Jonathan Worthington)++ | src/spesh/optimize.c
14:14 Geth_ ¦ MoarVM/spesh-worker: Don't NULL out spesh slots; they may be re-used.
14:14 Geth_ ¦ MoarVM/spesh-worker:
14:14 Geth_ ¦ MoarVM/spesh-worker: The attempt to NULL also likely doesn't help anything much in reality
14:14 Geth_ ¦ MoarVM/spesh-worker: either, since I can't think of a situation where it would reduce the
14:14 Geth_ ¦ MoarVM/spesh-worker: lifetime of an object (typically the latter slot has a code ref, and
14:14 Geth_ ¦ MoarVM/spesh-worker: the first its enclosing code object, but the latter points to the
14:14 Geth_ ¦ MoarVM/spesh-worker: former, keeping it alive even if we NULL the slot).
14:14 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/37c42b8bb0
14:15 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
14:15 Geth_ ¦ MoarVM/even-moar-jit: Add type checks for templates
14:15 Geth_ ¦ MoarVM/even-moar-jit:
14:15 Geth_ ¦ MoarVM/even-moar-jit: Many, many, many errors I've made by inserting a VOID-yielding node in
14:15 Geth_ ¦ MoarVM/even-moar-jit: a template where a REG was required or the other way arround. And that
14:15 Geth_ ¦ MoarVM/even-moar-jit: then doesn't show up until the template is tiled and you get a
14:15 Geth_ ¦ MoarVM/even-moar-jit: segmentation fault or a panic. So let's try to avoid that and add node
14:15 Geth_ ¦ MoarVM/even-moar-jit: type checks, which will find such problems at (pre)compilation time.
14:15 Geth_ ¦ MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/ce5080a1a2
14:17 timotimo ^- this ought to make exprjit a bit friendlier to any collaborators in the future, too
14:17 timotimo brrt++
14:17 jnthn brrt++
14:18 jnthn Yeah, looks like a good thing to have :)
14:19 timotimo types are useful, we should put them in perl6, too
14:20 AlexDaniel joined #moarvm
14:21 jnthn Hm, only thing I see up now is that the Metamodel::Primitives type seems to have gone missing :S
14:21 jnthn Other than that, spectset is looking about alright
14:21 jnthn Didn't try spectest with blocking + nodelay yet
14:37 jnthn Hm, OSR installation is a bit more fun now :)
14:41 jnthn Or rather, doing it cheap is.
14:45 brrt joined #moarvm
15:14 brrt joined #moarvm
15:14 brrt ohai
15:14 brrt yeah, funny thing about that; that was only possible after i started simplifying the expr operator semantics to have only single types
15:16 jnthn :)
15:16 jnthn Got detection of when to try and install OSR'd frames now
15:16 brrt also, strawberry perl++
15:16 brrt since it comes with gcc
15:16 jnthn Now I "just" need to figure out why trying to jump into them doesn't work out
15:17 brrt (i maybe need to allocate more cores to this vm)
15:24 jnthn hah
15:24 jnthn We weren't kicking out the osrpoint instruction
15:25 jnthn So it OSR'd and then tried to do it again but of course the index was invalid
15:25 jnthn This also meant that since osrpoint showed up in all the specialized code, we never JIT-compiled anything with a loop in it :P
15:26 jnthn And kept on writing logs in optimized code
15:27 jnthn yay, that knocks a bit more of CORE.setting builds
15:29 jnthn Ouch
15:29 jnthn Suddenly spectset argh
15:29 jnthn ooh, even Rakudo make test has issues
15:41 lizmat joined #moarvm
15:42 AlexDaniel joined #moarvm
15:53 jnthn It seems that sometimes, tc->cur_frame->caller->args is junk by the time we OSR
15:54 jnthn Hm, it has a nulled cur_args_callsite also
16:00 jnthn Guess we should use the latter anyway. Still wonder how this situation arises.
16:08 Geth_ ¦ MoarVM/spesh-worker: 29f571264d | (Jonathan Worthington)++ | src/spesh/optimize.c
16:08 Geth_ ¦ MoarVM/spesh-worker: Kick out osrpoint instructions in optimize.
16:08 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/29f571264d
16:08 Geth_ ¦ MoarVM/spesh-worker: 6aea727f0e | (Jonathan Worthington)++ | 2 files
16:08 Geth_ ¦ MoarVM/spesh-worker: First attempt at re-instating OSR.
16:08 Geth_ ¦ MoarVM/spesh-worker:
16:08 Geth_ ¦ MoarVM/spesh-worker: Works for a simple case, but turns out to be fairly explosive in
16:08 Geth_ ¦ MoarVM/spesh-worker: general.
16:08 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/6aea727f0e
16:08 Geth_ ¦ MoarVM/spesh-worker: c150233a33 | (Jonathan Worthington)++ | src/spesh/osr.c
16:09 Geth_ ¦ MoarVM/spesh-worker: Retain args buffer on OSR frame growth.
16:09 Geth_ ¦ MoarVM/spesh-worker:
16:09 Geth_ ¦ MoarVM/spesh-worker: So it will not contain junk, which may cause problems later on.
16:09 Geth_ ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/c150233a33
16:09 jnthn It's still quite explosive, alas
16:10 timotimo glad to see that even perl6 startup has more than 100% cpu usage now :)
16:11 Zoffix Is that good?
16:11 timotimo yup
16:11 timotimo well, not 100% necessarily
16:11 timotimo 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
16:12 Zoffix Ah
16:12 jnthn Yeah, the main thread is free to get on with the program while another one optimizes
16:12 timotimo of course there's always a little overhead when you move stuff over to another thread because inter-thread communication and synchronization
16:12 timotimo but jnthn designed it in a way that makes overhead pretty slim
16:12 Zoffix cool. jnthn++
16:12 jnthn And if it gets it done before the opt is ready, well, good for it.
16:13 Zoffix BTW, Moar is still using ZofGeth
16:13 Zoffix New URL: http://geth.niner.name:8888/?chan=#perl6-dev
16:13 jnthn Odd, with OSR on we manage to get through all of the NQP and Rakudo build...
16:13 jnthn But explode in various bits of make test
16:14 jnthn I wonder if it's 'cus we have guarded stuff and it ain't true at the point we OSR
16:15 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
16:15 jnthn timotimo: For arguments, yes, but I was thinking about deopt points
16:17 jnthn 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:18 jnthn Or so widely, at least
16:18 jnthn I think this bunch of work is on course for a merge next week, anyways
16:19 jnthn Probably not as soon as Monday.
16:22 * jnthn heads home
16:22 jnthn More spesh hackery next week :)
17:39 AlexDaniel joined #moarvm
19:41 lizmat joined #moarvm
20:19 lizmat joined #moarvm
21:25 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: http://paste.scsys.co.uk/564663
21:25 nwc10 (sadly nopaste is not capable of relaying the excitement of multicoloured barfage)
21:43 MasterDuke joined #moarvm
21:51 MasterDuke how are people building with asan? it never seems to work for me, i can't even build NQP
21:52 travis-ci joined #moarvm
21:52 travis-ci MoarVM build errored. Samantha McVey 'concat: Fix conditional to check first instead of last strand of string b
21:52 travis-ci https://travis-ci.org/MoarVM/MoarVM/builds/256225371 https://github.com/MoarVM/MoarVM/compare/4afde63362a7...0729f8411b6d
21:52 travis-ci left #moarvm
22:11 samcv phew. that error is just a problem with apt-get not working for whatever reason
22:12 samcv all is fine
22:12 samcv er. maybe.
22:12 samcv yeah it's fine
22:29 jnthn nwc10: ooh, that is a pleasing find
22:33 Geth ¦ MoarVM: 03c829ec24 | (Samantha McVey)++ | src/strings/ops.c
22:33 Geth ¦ MoarVM: MSVC doesn't allow variable length arrays, so use alloca
22:33 Geth ¦ MoarVM:
22:33 Geth ¦ MoarVM: Allocate onto the stack using alloca since MSVC doesn't allow variable
22:33 Geth ¦ MoarVM: length variable declarations (not known at compile time).
22:33 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/03c829ec24
22:33 Geth ¦ MoarVM: 0729f8411b | (Samantha McVey)++ | src/strings/ops.c
22:33 Geth ¦ MoarVM: concat: Fix conditional to check first instead of last strand of string b
22:33 Geth ¦ MoarVM:
22:33 Geth ¦ MoarVM: This is much likely to cause an issue than repetitions in the last strand of
22:33 Geth ¦ MoarVM: string a, but correct this so it checks the proper strand.
22:33 Geth ¦ MoarVM:
22:33 Geth ¦ MoarVM: I was not able to trigger any incorrectness so was unable to add new tests
22:33 Geth ¦ MoarVM: for this change like I did for when string a has repetitions.
22:33 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/0729f8411b

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary