00:43 vendethiel joined 01:10 zakharyas joined 02:20 geekosaur joined 02:48 ilbot3 joined 02:50 leego joined 05:59 japhb joined 06:25 japhb joined 06:37 domidumont joined 06:55 japhb joined, domidumont joined 07:03 domidumont joined 07:21 japhb joined 10:08 synopsebot6 joined 10:18 zakharyas joined 10:24 timotimo joined 10:25 zostay joined 11:05 geekosaur joined
dalek arVM: c63d649 | jnthn++ | / (2 files):
Add GC debug helper to "find" a pointer.

Discovers which, if any, fromspace/tospace region or gen2 allocator page it exists within. Only compiled in if GC debugging is enabled.
11:10
arVM: 3736562 | jnthn++ | src/gc/debug.h:
Make ASSERT_NOT_FROMSPACE check all fromspaces.

Not just that of the calling thread. Makes it able to catch quite a lot more issues in multi-threaded programs.
11:28
arVM: 4be6b38 | jnthn++ | src/io/procops.c:
Fix missing MVMROOT around an allocation.

This is at least one of the causes of the occasional GC corruption issues that show up when using Proc::Async (most often with a zeroed owner error, though depending on timing invalid owner or SEGV could have happened too).
11:34
jnthn lunch, but that seems to have made things a good bit better :) 11:55
12:15 zakharyas joined
jnthn back 12:45
12:50 dogbert17 joined
dogbert17 jnthn: so what will you tackle next? 12:50
nwc10 dinner? :-) 12:51
dogbert17 :-)
nwc10 there is still one ASAN barfage in the spectests
dogbert17 uh oh
jnthn Well, I ran my used-to-explode-with-the-above code in a loop over lunch 12:59
In gdb
And it SEGVd in another way
The SEGV itself is due to our hashes not being completely memory safe yet if you cross-thread abuse them (a known issue) 13:01
But why was the code doing that in the first place? Seems I've found a buglet in the supply/react/whenever impl. 13:02
m: my $s = supply { whenever Supply.interval(0.001) { done } }; for ^4 { start { for ^100 { react { whenever $s { } } } } } 13:03
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; for ^4 { start { for ^1000 { react { whenever $s { } } } } }
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; for ^4 { start { for ^100000 { react { whenever $s { } } } } }
camelia ( no output )
jnthn oh, 'doh
m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^1000 { react { whenever $s { } } } } } 13:04
camelia rakudo-moar 843a6b: OUTPUTĀ«(signal SEGV)Ā»
jnthn That'll make a nice test case... :) 13:06
Much better than my 2000-ish line app, anyways 13:07
dogbert17 cool 13:08
nwc10 ASAN is pondering this
1000 does not barf
mmm.
race doesn't race the same way. :-( 13:09
Unhandled exception in code scheduled on thread 17 13:10
Cannot resolve caller postfix:<++>(Mu); the following candidates
match the type but require mutable arguments: (Mu:U $a is rw)
...
for ^10000
13:14 viki joined
jnthn I get that one too 13:16
Think I've also figured it out
m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^100 { react { whenever $s { } } } } } 13:27
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^100 { react { whenever $s { } } } } }
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^100 { react { whenever $s { } } } } }
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^100 { react { whenever $s { } } } } }
camelia ( no output )
jnthn grr, 100 doesn't seem to trip it
m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^200 { react { whenever $s { } } } } }
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^200 { react { whenever $s { } } } } }
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^200 { react { whenever $s { } } } } }
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^300 { react { whenever $s { } } } } }
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^300 { react { whenever $s { } } } } }
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^300 { react { whenever $s { } } } } } 13:28
camelia ( no output )
jnthn odd
m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^500 { react { whenever $s { } } } } }
camelia ( no output )
jnthn m: my $s = supply { whenever Supply.interval(0.001) { done } }; await do for ^4 { start { for ^500 { react { whenever $s { } } } } }
camelia rakudo-moar 843a6b: OUTPUTĀ«(signal SEGV)Ā»
jnthn 1000 is a bit of a long test
But yup, seems I've fixes for that and my other issue 13:31
13:32 babydrop joined
jnthn Grr, and one regression in S17-supply/migrate.t it seems 13:45
Good test catches real regression. Whew. :) 13:51
nine test++
jnthn Really not having much luck getting my occasinally-explosive code from $dayjob to explode at all after fixing the last couple of things I golfed down from it 14:31
(This is a good thing.)
nine But but but....you saying that explosions aren't cool? 14:37
jnthn They are, just not inside of VMs :P
14:59 vendethiel joined
jnthn Yup, ran 100s of times while I took some rest 15:44
Proably a thousand times easily
japhb jnthn: I see from above you had supply/whenever/react fixes ... did this work also fix the "short intervals get stuck" bug? Or is that a different thing? 15:58
jnthn heh, see #perl6-dev
I just worked that one out :)
japhb Oh, *chuckle* Guess it pays to read all the backlogs. :-) 15:59
16:32 lizmat joined 17:13 dogbert17 joined
timotimo <3 17:22
dogbert17 o/ timotimo 17:33
18:26 domidumont joined 19:38 ggoebel joined 20:10 domidumont joined
dalek arVM: 366b802 | rurban++ | src/strings/nfg.h:
typo in nfg.h comment

look => lock
20:45
arVM: 3171dbb | jnthn++ | src/strings/nfg.h:
Merge pull request #445 from rurban/patch-1

typo in nfg.h comment
lizmat jnthn: a small HARNESS_TYPE=6 update: all of the crashes that we had before, are gone, BUT 22:57
we got a new set in return, all basically boiling down to:
===( 0;43 155/403 9/15 84/128 47/55 0/? 0/? 0/? 1/5)===Unhandled exception in code scheduled on thread 17
No such method 'end-entries' for invocant of type 'Match'
No such method 'made' for invocant of type 'TAP::Runner::State' 22:58
aka, somehow an object appears to have changed type, or is somehow overwritten 22:59
timotimo right 23:00
lizmat afk again& 23:07
timotimo maybe the gc debug flag jnthn mentioned earlier could be turned on for some benefit 23:08
like earlier explosions
but it's probably not the right tool for this job 23:09
jnthn That one smells different 23:17
6guts actually has guts again: 6guts.wordpress.com/2016/12/01/tak...-a-gc-bug/ 23:18
timotimo i've smelled this error message before, but never really found any fix for one kind of that
oh!!
<3
jnthn Well, they often boil down to insufficient closure cloning
And I already fixed a couple of those in the regex compilation
But it wouldn't surprise me if there's another one somewhere
timotimo right
jnthn We still have an RT on such matters
Anyway, 'tis late, and I'm still behind with sleep, so I'm off :) 23:19
'night
timotimo gnite!
23:30 travis-ci joined
travis-ci MoarVM build failed. Jonathan Worthington 'Make ASSERT_NOT_FROMSPACE check all fromspaces. 23:30
travis-ci.org/MoarVM/MoarVM/builds/180054196 github.com/MoarVM/MoarVM/compare/c...36562a902c
23:30 travis-ci left
babydrop
.oO( ASSERT_ALIENS )
23:57
timotimo hahaha :D 23:59
i didn't even read it like that