00:05 releasable6 joined 01:06 nwc10 joined 01:56 ilbot3 joined 05:06 brrt joined
brrt dunno if y'all have seen this thing ruth posted: opensource.com/article/17/10/perl-turns-30 05:12
but it was nice and positive :-)
and i could well use that after the despair that is 'perl trainings at $dayjob' 05:13
good *, #moarvm 05:14
05:32 patrickz joined 06:06 domidumont joined 06:07 domidumont joined 06:14 AlexDaniel- joined 06:15 brrt joined
samcv good * 06:41
AlexDaniel- o/ 07:15
07:29 leont joined
Geth MoarVM: 716f2277ff | (Bart Wiegmans)++ | src/jit/linear_scan.c
Remove redundant semicolon in _DEBUG

Macro's are hard
07:34
timotimo o/ brrt 07:36
brrt \o timotimo 07:37
Geth MoarVM/jit-expr-optimizer: 07b3be5f50 | (Bart Wiegmans)++ | src/jit/expr.c
Add expression tree equivalence function

This is intended to be used in the optimizer. I'm not sure if I should add a 'depth' parameter.
MoarVM/jit-expr-optimizer: 933d969092 | (Bart Wiegmans)++ | 6 files
[JIT] Simple tree-rewriting optimizer

For some reason the multiple-referenced-loads optimization never seems to run, which is funny because I really expected it to. But the const idx -> addr optimization does.
This probably needs a few more layers of abstraction, but for now it works.
timotimo ooooooh 07:38
brrt it was time for a new branch :-) 07:42
this one i intend to keep rebased on master, i promise
and not to let it run for 2 years
timotimo :D 07:43
brrt i have some vague ideas on how to do a generalized pattern match 07:45
e..g the (idx $base (const $value) $scale) to (addr $base $value * $scale) 07:46
timotimo there isn't a pre- and post-optimize output for diffing?
brrt no
that would just require a MVM_jit_log_expr_tree(tc, tree) after the MVM_jit_expr_tree_optimize 07:47
feel free to add it, logging and instrumentation is your game now :-)
(the logmeister) 07:48
07:48 zakharyas joined
timotimo grabs a saw and some glue 07:49
i don't know what but something is causing desktop switches to be really slow on my desktop right now 07:51
i might just log out and back in or something
... now the right monitor only has a desktop on one virtual desktop ?! 07:52
plasma may be pretty ... but sometimes ... wtf 07:53
samcv releasable6, status 07:54
releasable6 samcv, Next release in 9 days and ≈11 hours. 1 blocker. Changelog for this release was not started yet
samcv, Details: gist.github.com/7d4d3040d92d59882f...ea1eda2fd2
samcv whoever accepted Julien Simonet [email@hidden.address] PR, i really don't like how one of the commit, the full text of the commit is "Typo" and another the first line is 'typo' with 3 words in the body 07:55
will find the PR and comment on it in a sec 07:56
timotimo github.com/MoarVM/MoarVM/commit/2e...25f3a4c7b0 - for consideration 07:57
github.com/MoarVM/MoarVM/commit/82...bd1bf6a89d - as well
brrt: did you see that blocker ticket where merging the exprjit caused "last without loop construct" to show up in some code? 08:00
08:13 rba joined
brrt i did not 08:22
can you show me? 08:23
timotimo rt.perl.org/Public/Bug/Display.html?id=132269
note especially the requirement for a particular version of Net::HTTP 08:24
brrt seeing it 08:33
let's hope we can golf that
AlexDaniel- heh… I thought I was doing a good job of pinging the right people :) 08:41
I guess not
timotimo++
brrt jit-bisect.pl to the rescue 08:47
jnthn morning o/ 09:01
brrt morning jnthn
jnthn releasable6: status 09:07
releasable6 jnthn, Next release in 9 days and ≈9 hours. 1 blocker. Changelog for this release was not started yet
jnthn, Details: gist.github.com/bf3afefd558a7c31c8...678c7c3a82
jnthn Wow, and I thought it was *this* weekend :)
If I'd known I would have broken more things :P :P
timotimo nope, feel free to put in the most drastic changes you feel like in the next two days :)
jnthn haha
jnthn takes care of some admin tasks, then will have the day for Perl 6 and related things :) 09:08
timotimo i have the day for resting my wrists again :| 09:09
jnthn Are they improving some? 09:10
timotimo it looks like a two-humped curve of badness, the first one for the right wrist, the second one for the left :P
as i try to do less with the right hand and more with the left, it gets more strain than it's used to i suppose 09:11
the heap analyzer web frontend can now tell the backend what file to load and then choose which snapshots to load into memory 09:12
but i want to redo the update communication from backend to frontend completely before i go on
jnthn Nice. Using Cro for the backend still? 09:17
timotimo yup 09:18
once i figured out that output was being held back, it was much smoother
i started putting foo-bar style keys in my hashes that come from the heap analyzer model, and ended up replacing - in keys with _ so i wouldn't have to ["foo-bar"] in javascript
ugh, the impedance mismatch 09:19
jnthn :)
jnthn wonders how to address the "output being held back" thing...
timotimo well, nativecall into the func that makes a pty, then openfd it? :\ 09:20
i mean from-native-descriptor or what have we
how does the windows equivalent of what you'd need look?
jnthn Dunno, but from the node module I found trying to solve that same issue, ugly :S
timotimo bleh :( 09:21
09:23 leont joined
timotimo jnthn: did you see? test-t is really close to 3 seconds 09:24
jnthn Yeah :) 09:27
timotimo i wonder how many times the nqp::splice improvement i made triggers in that benchmark 09:28
there's still more potential. if both are VMArray but have different slot types 09:32
extending or truncating integers while moving them over, say 09:33
jnthn wonders how often that happens 09:41
dogbert2 jnthn: are you gonna work with race and hyper or are you hunting more SEGV's and hangs? 09:43
timotimo i imagine it could happen a whole lot, but only in very very few programs 09:44
jnthn dogbert2: going to work on that, seeing if I can reproduce rt.perl.org/Ticket/Display.html?id=132273 first 09:46
So far not, but bumping to latest revisions of things 09:47
Nope, no luck reproducing it 09:48
dogbert2 was Zoffix mentioning some SEGV yesterday 09:49
jnthn Yeah, this is the one
rt.perl.org/Ticket/Display.html?id=132273
dogbert2 I can probably reproduce it (famous last words)
jnthn tries with GC stressing/debug on 09:50
09:50 domidumont joined
jnthn Nope :( 09:52
Well, if i can't reproduce it...
dogbert2 true 09:53
jnthn Let me know if you have any luck doing so
dogbert2 sure 09:54
09:56 zakharyas joined
dogbert2 jnthn, there's also the scheduler problem with t/spec/S17-promise/lock-async.t test 38, it has a tendency to hang 10:08
perhaps some kind of core count problem 10:09
timotimo i'd like it if the overseer process for the thread pool scheduler would fire less often if the program doesn't do much 10:10
dogbert2 ok 37 - And can unlock it again
[SCHEDULER] Added a general worker thread
jnthn I thought it was just slow, not hanging? 10:11
dogbert2 still running on my machine, true I have a small nursery atm 10:12
it has started two worker threads and is still hanging
dogbert2 turns off asan 10:13
timotimo what does that test do? it's maxing out three cores right now
it took a while but 38 just passed 10:14
the "lock provides mutual exclusion" test
jnthn Just creates a ton of contention, for the most part
timotimo all in all it took 1:36 elapsed at 260% cpu average
dogbert2 how many cores do you have timotimo?
timotimo four total
dogbert2 same here
on my current run, nursery 32768 * 4, it has started two worker threads, first one, then a second after more than a minute 10:16
and now it passed
but now it's waiting for test 39 instad 10:18
3 Thread 0xb13ffb40 (LWP 6946) "moar" 0xb72ce466 in MVM_frame_move_to_heap (tc=0xb2882b28, frame=0xb28a38e0) at src/core/frame.c:640 10:19
2 Thread 0xa35ffb40 (LWP 6947) "moar" 0xb72e839f in MVM_continuation_control (tc=0xb2880bf0, protect=1, tag=0xb1464108, code=0xb2837b28, res_reg=0xa9338e8) at src/core/continuation.c:60
jnthn If it's in those places, looks like it's progresing still 10:21
dogbert2 perhaps it will complete if I continue to wait 10:23
dogbert2 waits
brrt also, i figured out one super cool trick
to the array-indices-as-pointers strategy 10:24
basically, make sure you keep the first (zeroth) item free
and you never 'allocate' that
then 0 becomes a perfect substitute for NULL 10:25
dogbert2 test 39 has completed, took quite a few minutes 10:27
Zoffix RT#132273 ... Just built a freshly squeezed checkout... It segfaulted on the very first run
synopsebot RT#132273 [new]: rt.perl.org/Ticket/Display.html?id=132273 [SEGV] while running t/spec/S17-supply/supplier-preserving.t
Zoffix Using `while t/fudgeandrun t/spec/S17-supply/supplier-preserving.t; do true; done` 10:28
5 times reproed it now. This is on a 4-core box 10:29
dogbert2 Zoffix: is that on your 32 bit box? 10:32
Zoffix with latest roast you can stick that loop to run and it'll stop when failure occurs
dogbert2: 64-bit
dogbert2 have you tried disabling the jit? 10:33
Zoffix nope 10:34
Zoffix leaves to work
P.S.: having trouble reproing with `while ./perl6 t/spec/S17-supply/supplier-preserving.t; do true; done` so it might be something happening when STDOUT/ERR are non-TTYs or something 10:35
dogbert2 727.78user 31.18system 7:13.89elapsed 174%CPU (0avgtext+0avgdata 431304maxresident)k (t/spec/S17-promise/lock-async.t with --no-optimize and 32768 * 4 nursery) 10:36
Zoffix oh wait, nm, it took longer but it segfaulted still
Zoffix &
10:43 robertle joined
dogbert2 some more datapoints wrt to t/spec/S17-promise/lock-async.t. If I lift out both tests to a separate file and change lines 75 and 88 (the xx lines) I get 10:50
real 0m0.770s user 0m0.824s sys 0m0.064s # xx 1 10:52
real 0m3.176s user 0m5.704s sys 0m0.376s # xx 2
real 0m25.746s user 0m58.084s sys 0m1.084s # xx 3
are these numbers to be expected? 10:53
Zoffix BTW, on the topic of tickets, there's this ticket that's marked as release blocker: RT#132269 11:05
synopsebot RT#132269 [new]: rt.perl.org/Ticket/Display.html?id=132269 [REGRESSION][BUG] JIT removing loop construct and confusing last()
AlexDaniel- yeah? 11:11
brrt is on it, I think
jnthn lunch & 11:12
brrt bisect has found the offending code 11:18
but
i'm not sure what's wrong
dogbert2 real 2m8.043s user 4m42.604s sys 0m3.116s # xx 4 11:28
jnthn, Zoffix: finally managed to reproduce the SEGV Zoffix has been seeing, had to put the system under som stress (running a spectest in another window) in order for it to trigger. gist.github.com/dogbert17/058f2b20...39308af702 11:44
12:00 zakharyas joined 12:01 zakharyas1 joined
jnthn dogbert2: Hm, curious. 12:16
12:20 buggable joined 12:25 buggable joined 12:26 buggable joined
dogbert2 does it give any clues? 12:26
12:30 buggable joined
jnthn Not immediately 12:31
That it needs some stress to repro is a good hint though
12:31 buggable joined 12:32 releasable6 joined
dogbert2 yes, just got it again with a spectest running in another window, same location 12:32
12:33 buggable joined
dogbert2 MVM_dump_backtrace didn't give much TBH 12:33
(gdb) p MVM_dump_backtrace(tc)
at SETTING::src/core/Thread.pm:24 (./CORE.setting.moarvm:THREAD-ENTRY)
12:34 buggable joined
dogbert2 it's about the shortest dump I've seen 12:34
12:43 quotable6 joined
dogbert2 the SEGV occurs on the following line 14:03
0xb7c31a69 in MVM_serialization_demand_object (tc=0x804c5f8, sc=0xb3c29018, idx=71015) at src/6model/serialization.c:2741
2741 if (sc->body->root_objects[idx]) {
gdb says 14:04
(gdb) p *sc
$3 = {common = {header = {sc_forward_u = {forwarder = 0x0, sc = {sc_idx = 0, idx = 0}, sci = 0x0, st = 0x0}, owner = 0, flags = 0, size = 0}, st = 0x0}, body = 0x0}
timotimo that's much nuller than it should be 14:24
dogbert2 it does look a bit nully yes :) 14:35
timotimo annoyingly, valgrind could probably figure this out, but when valgrind's on there's no tests >_< 14:39
i don't think asan remembers the stack traces of places that allocate stuff?
only reports stack traces when something goes wrong, right?
dogbert2 timotimo: it retrieves the sc here github.com/MoarVM/MoarVM/blob/mast...l/sc.h#L27
timotimo on the other hand we can rr record it and hope to catch it
dogbert2 I have only seen stacktraces when something goes wrong with asan 14:40
timotimo right :\
dogbert2 haven't had any luck with asan or valgrind :(
asan triggered once when I didn't have debug info on :( 14:41
timotimo yeah, it's probably impossible to recreate in valgrind 14:42
dogbert2 will do a few more asan runs and hope for the best
timotimo i think i'll go rest a little, hope my head unaches itself 14:43
dogbert2 rest well 14:44
brrt ouch, multiple threads 14:58
in that example
timotimo yeah, only occurs when the system's under pressure 14:59
(turns out i didn't go rest at all)
dogbert2 bloody bug 15:06
jnthn Phew, just got the first mini example working with the new hyper/race infrastructure 15:13
Sequential: 1.2430863 15:14
Race: 0.53252432
It's even faster :)
timotimo it's nice to start up with (rather than just end up with) something fast 15:15
dogbert2 I guess it's not normal for sc's to be all null 15:34
it's odd that the pointer itself is not null when everything in the struct is 15:35
dogbert2 can't get to the root of the problem, relocates instead & 15:36
16:07 brrt joined 16:10 dogbert17 joined
brrt you know what's kind of sad 16:20
it's only when i'm golfing a bug
and actually get to use perl6
that is see how nice a langauge it really is
16:26 committable6 joined 17:03 robertle joined 17:10 domidumont joined 17:21 dogbert17 joined 17:31 tartal joined 18:03 rba joined 18:33 ggoebel joined 18:39 zakharyas joined
TimToady obviously you should golf more bugs :P 19:01
timotimo bugs don't have the right aerodynamic properties to be used for golf 19:04
Zoffix TimToady: can you give me a hint for how fix this?:
m: ""; sub postfix:<!>($) {}; "{ 5! }";
camelia ===SORRY!=== Error while compiling <tmp>
Negation metaoperator not followed by valid infix
at <tmp>:1
------> ""; sub postfix:<!>($) {}; "{ 5!⏏ }";
expecting any of:
infix
infix stopper
Zoffix It got broken by Slang Refactor we did in March and now the cached langs in %quote_lang_cache don't get updated when a new op is mixed into grammar: github.com/rakudo/rakudo/blob/nom/...ar.nqp#L64
Mixed in this method: github.com/rakudo/rakudo/blob/nom/...4754-L4977 19:06
(and I found the cache is the cause by disabling the caching and then the bug got fixed; both the broken and unbroken version store 3 keys in the cache for that code, so I'm guessing the mixing-in of new ops now clones the lang or something and the cache needs to be nuked, perhaps) 19:08
TimToady or we're just storing the cache in the wrong place 19:13
Zoffix Oh. Maybe. When i tried to nuke it from `method add_categorical` (via a method call), it still remained. 19:14
TimToady if we stored it in the current language it might automatically scope correctlier
Zoffix OK. I'll give that a shot in $n hours
TimToady though that might imply additional copies when descending
19:15 zakharyas joined
TimToady errand & 19:15
19:18 zakharyas joined 19:24 lizmat joined 19:42 evalable6 joined
Zoffix s/\$n hours/on the weekend, unless someone beats me/; 20:40
Wanna understand how this stuff works better first. 20:41
20:41 lizmat_ joined 21:27 Geth joined 21:30 Geth joined 21:32 Geth joined 21:55 Geth joined 21:56 Geth joined 22:02 [equa] joined 23:08 evalable6 joined 23:28 evalable6 joined 23:53 Geth_ joined