Geth rakudo/nom: a2090821b4 | (Timo Paulssen)++ | src/core/IO/Socket.pm
make sure IO::Socket passes a list to set-line-separators

should unbreak Net::SMTP
08:16
FROGGS o/
nine Good morning! 08:33
timotimo greetings nine 08:37
Geth roast: ab290effa1 | (Timo Paulssen)++ | S32-io/IO-Socket-INET.t
test setting nl-in before the first get in IO::Socket::INET

this used to explode in Net::SMTP
08:39
lizmat Files=1209, Tests=64165, 220 wallclock secs (13.29 usr 5.03 sys + 1338.71 cusr 136.92 csys = 1493.95 CPU) 08:53
nine I somehow need to find my Perl 6 mojo again. Haven't done anything useful in weeks :/ 09:00
Geth nqp: 8453fac89e | (Stefan Seifert)++ | src/HLL/Compiler.nqp
Factor out part of compile for easier re-use.
09:18
rakudo/nom: e1e9091f74 | (Timo Paulssen)++ | src/core/CompUnit/Repository/FileSystem.pm
stop looking after finding a matching module file

if both a .pm6 and a .pm exist with a matching name, only the
  .pm would be used, which is clearly not right.
11:24
lizmat is contemplating perl6.party/post/The-Hot-New-Langu...med-Rakudo over the weekend 12:10
Geth rakudo: MasterDuke17++ created pull request #1109:
Only create Exception messages when gisting
13:15
rakudo/nom: 1a4d94930c | (Daniel Green)++ | src/core/Exception.pm
Only create Exception messages when gisting

With the recent change to suggest similar method names when throwing X::Method::NotFound, it got a lot slower to try possible methods (e.g.,
  `try Int.sin`) even if you didn't care about the exception message. This
commit removes the .message call from .throw and puts it in both branches of .gist.
13:24
rakudo/nom: 60b9acef30 | lizmat++ (committed using GitHub Web editor) | src/core/Exception.pm
Merge pull request #1109 from MasterDuke17/only_create_Exception_messages_when_gisting

Only create Exception messages when gisting
jnthn I was just reviewing that 13:25
It has the slight issue that we're now throwing exceptions with a message unset
Which means that if they're ever unhandled to the degree that they're spat out by the VM, then they'll all have empty messages 13:26
MasterDuke how would that happen?
jnthn MasterDuke: When something went very wrong, usually
So "normally it won't". 13:27
llfourn MasterDuke: did that pass spectests?
MasterDuke llfourn: yep
llfourn oh nice
jnthn I think we can leave the change in and see what happens 13:28
But if you have a situation where you are seeing a crash with no exception message, just a backtrace, then this commit will be worth looking at. 13:29
MasterDuke put in a placeholder message in .throw that doesn't call .message?
or is that no better than no message?
jnthn Not really
tbh I'd probably have just overridden gist
And left message as a cheap "Method 'foo' not found on invocant of type Bar" 13:30
And put the espensive stuff in the .gist
Though that probably has trade-offs too
Maybe let's leave it as it is now and see if it actually bites us
MasterDuke cool 13:31
jnthn Because it only will if we manage to miss all of the Perl 6 installed exception handlers
The place I fear it biting us is when compiling CORE.setting
But even maybe then it could be OK
Guess we've a week until the next release; we'll keep an eye on it :) 13:32
MasterDuke and i didn't time anything other than the snippet in the PR, but this should speed up all exceptions that aren't gisted, though probably none quite so much as that Method::NotFound
jnthn Indeed 13:33
Geth roast: 0b36afb8b4 | (Elizabeth Mattijsen)++ | S15-unicode-information/uniprop.t
Untodo now passing high codepoint test
14:11
dogbert17 if anyone is insterested in taking a peek at some new ASAN barfage then look no further :-) gist.github.com/dogbert17/db210a75...33a0579fd9 14:12
jnthn dogbert17: Please file that as a MoarVM issue so it doesn't get forgotten :) 14:19
dogbert17 do you really think that Zoffix is innocent :) 14:21
dogbert17 creates issue ... 14:22
jnthn This time, maybe... :) 14:24
dogbert17 done, github.com/MoarVM/MoarVM/issues/611 14:26
jnthn Thanks :) 14:27
MasterDuke
.oO(who needs automated continuous integration when they have a dogbert17++?)
dogbert17 btw, don't know if you have backlogged today but samcv's font program works when spesh is disabled 14:28
MasterDuke: at $work I'm far from being a role model when it comes to writing tests 14:29
MasterDuke heh, same here. in fact, not sure if i've ever written a test at $work 14:30
dogbert17 totally OT, I have received most components for my new computer, only the PSU is still on order
MasterDuke i'm hoping i'll only need a MB+CPU+RAM and can re-use everything else 14:31
dogbert17 reuse is good, my current PSU should probably work fine, also a Seasonic, but it's more than 10 years old, it's already been reused once 14:32
MasterDuke i think my current setup finally ditched the last part carried along from when i first built it in 1999 when i did the most recent CPU+MB+RAM upgrade in 2010 14:36
dogbert17 cool, my current system is also from 2010 14:37
lizmat .ask ab5tract do we agree that [(^)] $a, $b, $c is the same as ($a (^) $b) (^) $c ? 14:38
yoleaux lizmat: I'll pass your message to ab5tract.
dogbert17 if I have a small program, ~10 lines, which crashes during a normal run but works when MVM_SPESH_DISABLE=1, is there anything I can do to narrow things down? 14:52
llfourn dogbert17: what does it crash with? 14:54
(the error) 14:55
dogbert17 ==6370== ERROR: AddressSanitizer: heap-use-after-free on address 0x8ad139c0 at pc 0xb58a1400 bp 0xbf8a40a8 sp 0xbf8a409c 14:56
READ of size 4 at 0x8ad139c0 thread T0
#0 0xb58a13ff in gc_mark /home/dogbert/repos/rakudo/nqp/MoarVM/src/6model/reprs/MVMCallCapture.c:50
llfourn oh the one above. Sorry I have no idea, but would also love to know. 14:57
MasterDuke that looks like the same thing the whateverables are hitting and timotimo was trying to figure out yesterday
dogbert17 here's the code, it's a slightly slaughtered test from a file called .../stress.t gist.github.com/dogbert17/0b0baed4...f8c74110f1 14:59
moritz dogbert17: you can try with leaving out SPESH_DISABLE, and instead only run with MVM_SPESH_INLINE_DISABLE or MVM_SPESH_OSR_DISABLE
dogbert17 moritz: will do
moritz dogbert17: if you 'git grep getenv' in moarvm, you get an idea of what env variables are supported
dogbert17 moritz: it fails with both MVM_SPESH_INLINE_DISABLE and MVM_SPESH_OSR_DISABLE 15:02
moritz dogbert17: that kinda suggests it's a generic spesh bug
and likely lucky, because inlining is rather tricky :-) 15:03
dogbert17 I generated a spesh log, it doesn't tell me anything and besides, it's 25 megs
[Tux] This is Rakudo version 2017.06-176-g60b9acef3 built on MoarVM version 2017.06-49-g6011f876 15:06
csv-ip5xs 2.529
test 12.381
test-t 4.133 - 4.138
csv-parser 12.072
MasterDuke dogbert17: maybe trying running it in rr, saving the recording, and seeing if timotimo can make anything from it
dogbert17 MasterDuke: rr: command not found :( where can I find it? 15:09
AlexDaniel should be in your distro repos 15:10
(e.g. apt install rr)
MasterDuke: ā€œthat looks like the same thing the whateverables are hittingā€ I'm pretty sure [Coke] was hitting it yesterday as well 15:11
although he didn't give any details
dogbert17: also, ā€œFails when run normally but works with MVM_SPESH_DISABLE=1ā€ is probably not entirely true 15:14
maybe bump ^80 to something higher to see it fail again
buggable: status 15:15
buggable: help
buggable AlexDaniel, tags | tag SOMETAG | eco | eco Some search term | author github username | speed | testers CPANTesters report ID
AlexDaniel NeuralAnomaly: status
NeuralAnomaly AlexDaniel, [āœ˜] Next release will be in 6 days and 13 hours. Since last release, there are 22 new still-open tickets (1 unreviewed and 0 blockers) and 179 unreviewed commits. See perl6.fail/release/stats for details
Geth rakudo/nom: 80b3e89b53 | (Elizabeth Mattijsen)++ | src/core/set_symmetric_difference.pm
Replace different type handling by multiple candidates
15:16
dogbert17 it wasn't in the repo, not with that name anyway, trying to build from src
AlexDaniel what distro?
dogbert17 Linux Mint 15:17
AlexDaniel oh, I see, it's not even in debian stable probably
moritz is that mozilla's tool for debugging stuff? 15:18
dogbert17 Fails => Fails with ASAN barfage
AlexDaniel moritz: yes 15:19
ah, by the way, do we have a ticket already? 15:20
.tell timotimo irclog.perlgeek.de/perl6-dev/2017-...i_14844351 same issue? But with a lot less code to reproduce 15:21
yoleaux AlexDaniel: I'll pass your message to timotimo.
AlexDaniel MasterDuke: hey, let's bisect it? 15:22
MasterDuke: dogbert17's code doesn't require anything
except no restricted setting, but that we can do
moritz well, you might need ASAN to reproduce it reliably 15:24
AlexDaniel well, whateverables are reliably not working, so I'm hoping that it should be okā€¦ 15:29
dogbert17 blah, rr doesn't work under VirtualBox it seems :( 15:33
timotimo AlexDaniel: different issue 15:40
yoleaux 15:21Z <AlexDaniel> timotimo: irclog.perlgeek.de/perl6-dev/2017-...i_14844351 same issue? But with a lot less code to reproduce
AlexDaniel hm ok
timotimo the other one, though, the one in MVMCallCapture, that's probably the same issue 15:41
i'm glad i was able to at least fix two little things today 15:51
dogbert17 perhaps you can fix a third as well :) 15:52
AlexDaniel dogbert17: well, with your code, I got it bisected to 92c187d2dc. I can't get the segfault on any commit before that 15:54
dogbert17: this makes sense in a way because it touched Proc::Async, but obviously that's not the reason why it segfaults
dogbert17 AlexDaniel: perhaps you should try using the bots with a version preceeding that commit then 15:57
AlexDaniel laughs
dogbert17 :)
AlexDaniel well, it may work :D
dogbert17: but really, I bumped it to ā€œfor ^1000ā€, segfaults reliably on 92c187d2dc but not on commits before it 15:58
dogbert17 I could try reverting that change in my environment and see if the example program works 16:01
AlexDaniel pretty sure it will 16:03
but that doesn't really help :|
dogbert17 but it might give jnthn and timotimo a clue as to what's going on 16:04
nine Well destructuring a slurpy arg is probably not used all that often. 16:07
timotimo is this about the MVMCallCapture explosion? 16:08
dogbert17 yes, i.e. gist.github.com/dogbert17/0b0baed4...f8c74110f1 16:09
the explosion vanishes if MVM_SPESH_DISABLE=1
timotimo i believe this will happen whenever there's a callsite that's not interned, for example because it has some kind of flattening going on
dogbert17 AlexDaniel suspects this commit: github.com/rakudo/rakudo/commit/92...a9dba6f13e 16:10
AlexDaniel well I don't really suspect it, but the segfault appeared after that commit, yes
timotimo we might want to hotfix this by having @args again but passing path => @args[0] 16:11
dogbert17 my rebuild takes forever, suits me right, have both ASAN and --no-optimize enabled 16:12
nine How can I run rakudo with ASAN? 16:14
timotimo asan is something you have to compile your stuff with
so you'd have to pass --asan to moarvm's Configure.pl
nine I did that. Anything else? 16:15
timotimo nope. every invocation of rakudo will now be super slow
dogbert17 but much faster than valgrind
timotimo yup
nine Ok, now my moarvm just segfaults :_ 16:17
:)
timotimo it might be necessary to recompile rakudo 16:19
because rakudo has that shared library it loads
the extops and the containers and such
nine I tried. But even a rakudo/install/bin/moar just segfaults
timotimo wow
dogbert17 reverting github.com/rakudo/rakudo/commit/92...a9dba6f13e seems to do the trick
nine #1 0x00007ffff38f31c1 in __asan::MaybeInstallSigaction (signum=signum@entry=11, handler=0x7ffff38f3140 <__asan::ASAN_OnSIGSEGV(int, siginfo_t*, void*)>) at ../../../../libsanitizer/asan/asan_posix.cc:39
Even tried a make realclean and built MoarVM again 16:20
AlexDaniel dogbert17: try a higher number of iterations please
dogbert17: because I've seen things not segfault otherwise 16:21
like 10000 or something :)
dogbert17 works at 480 16:22
also works with 2480 iterations 16:26
nine utterly failed at golfing this issue 16:28
oooooh! 16:29
The nqp::force_gc makes a huge difference :)
Maybe I should have looked at the failing example instead of writing one from scratch :P 16:30
m: use nqp; class Foo { multi method new(*@args ($p, *@a), *%_) { self.bless(:$p, :@a, |%_) } } ; my @a = <foo bar baz quz>; my int $i = 0; sub foo(*@a) { with Foo.new(|@a) { $i++ }; $i--; $i++; say $i.Int; nqp::force_gc; }; for ^10000 { foo(|@a); } 16:31
camelia (signal SEGV)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
ā€¦
nine Smallest example so far...
dogbert17 nine: and if you MVM_SPESH_DISABLE=1 16:32
AlexDaniel: 5000 iterations also works 16:34
nine dogbert17: then it succeeds
dogbert17 that should be quite a clue for our speshialists :-)
nine Actually it sometimes even runs to completion with spesh enabled 16:35
Though most of the time it segfaults after 79 or 258 iterations
dogbert17 I bet that it would stop if you had ASAN working
nine Well if ASAN didn't completely kill my moarvm I'd be happy to test :/ 16:36
dogbert17 you could do valgrind ofc but it will be sloooow
nine Need to leave for dinner now. If someone would be so kind to add my golfed version to the bug report, please :)
dogbert17 timotimo, your hot fix is beginning to sound tempting :-) 16:37
*hotfix 16:38
hmm, do we have bug report? 16:40
MasterDuke asan output of nine's example: gist.github.com/MasterDuke17/fc12f...acd0d8ef55 16:47
the summary and consumed views in heaptrack of running Zoffix's perl6-Toaster webapp and doing a couple gets (leaks a lot of memory, believed to be due to DBIish): i.imgur.com/N8mi3e2.png i.imgur.com/FkKudKN.png 16:52
Zoffix wow that app looks really cool 16:54
dogbert17 Zoffix: how's your studies going, have you passed 25% ? 16:57
Zoffix m: printf "%.2f", 201/831 17:01
camelia 0.24
Zoffix Nope
I didn't do any this week, though I started again about 15 minutes ago.
dogbert17 have you backlogged? one of your commits seems to have uncovered a spesh bug 17:02
Zoffix No. Which commit? 17:03
dogbert17 github.com/rakudo/rakudo/commit/92...a9dba6f13e 17:04
Zoffix ok 17:05
dogbert17 is it possible to get the effect you want without the destructuring? 17:06
Zoffix multi method new(*@args, *%_) { my $path = @args.shift; self.bless(:$path, :@args, |%_) }
Probably faster too
dogbert17 cool
Zoffix We still have a kludge for bit shift ops: github.com/rakudo/rakudo/blob/80b3...#L400-L415 17:08
rt.perl.org/Ticket/Display.html?id=131306
m: use nqp; class Foo { multi method new(*@a, *%_) { my $p = @a.shift; self.bless(:$p, :@a, |%_) } } ; my @a = <foo bar baz quz>; my int $i = 0; sub foo(*@a) { with Foo.new(|@a) { $i++ }; $i--; $i++; say $i.Int; nqp::force_gc; }; for ^10000 { foo(|@a); } 17:09
camelia 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53ā€¦
Zoffix m: use nqp; class Foo { multi method new(*@a, *%_) { my $p = @a.shift; self.bless(:$p, :@a, |%_) } } ; my @a = <foo bar baz quz>; my int $i = 0; sub foo(*@a) { with Foo.new(|@a) { $i++ }; $i--; $i++; say $i.Int; nqp::force_gc; }; for ^10000 { foo(|@a); }
camelia 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53ā€¦
dogbert17 what happens if you run it locally? 17:11
Zoffix m: class Foo { method x (*@ ($a, *@b)) {} }; for ^100_000 { $ = Foo.x: 1, 2, 3, 4 }; say now - INIT now
camelia 3.1004012
Zoffix m: class Foo { method x (*@b) {$ = @b.shift} }; for ^100_000 { $ = Foo.x: 1, 2, 3, 4 }; say now - INIT now
camelia 0.324994
Zoffix m: say 3.1/.32
camelia 9.6875
dogbert17 that's quite some difference
is the correct term for stuff like '*@args ($p, *@a)' parameter destructuring? 17:15
Zoffix ĀÆ\_(惄)_/ĀÆ
dogbert17 ok, I'll write a MoarVM issue for that 17:16
ok, github.com/MoarVM/MoarVM/issues/612 17:24
so, who should implement Zoffix optimized workaround ? 17:25
Zoffix I was about to commit, but it's wrong 17:26
m: class Foo { method x (*@b where .so) {$ = @b.shift} }; for ^100_000 { $ = Foo.x: 1, 2, 3, 4 }; say now - INIT now
camelia 0.5779238
Zoffix Right way is still faster tho
dogbert17 Zoffix++, I suspect that your fix will make quite a few people very happy 17:27
Zoffix It's not a fix. It's a workaround a problem :)
dogbert17 :) 17:28
and you have an issue to refer to
I tried a sloppy grep of the Rakudo src but I only managed to find one case of parameter destructuring (the one you're changing), but there has to be more of them or ? 17:29
Zoffix Why has to be? 17:40
ZOFFLOP: t/spec/S32-io/open.t
Geth rakudo/nom: f6d4fbd24b | (Zoffix Znet)++ | src/core/Proc/Async.pm
Work around SEGV on sig unpacking

  - Also makes invocation 6x faster
  - Bug worked around: github.com/MoarVM/MoarVM/issues/612
17:42
Zoffix It would've been here, but it's already using the `where .so` thing: github.com/rakudo/rakudo/blob/nom/...oc.pm#L221
dogbert17 rebuilds 17:43
samcv's Font program now works 17:51
perhaps the bots will work better as well 17:52
Geth rakudo/nom: b391692644 | (Elizabeth Mattijsen)++ | src/core/set_symmetric_difference.pm
Fix a few edge cases of (^) wrt QuantHash type permutations
17:56
AlexDaniel timotimo: so should I just rebuild rakudo on the server and enjoy now working bots? 18:03
.tell [Coke] irclog.perlgeek.de/perl6-dev/2017-...i_14844908 18:04
yoleaux AlexDaniel: I'll pass your message to [Coke].
AlexDaniel .tell [Coke] this may help your Proc::Async issue
yoleaux AlexDaniel: I'll pass your message to [Coke].
dogbert17 AlexDaniel: Zoffix has worked around the problem 18:10
AlexDaniel yes, I see
Geth rakudo/nom: 05c255c14b | (Elizabeth Mattijsen)++ | src/core/set_symmetric_difference.pm
Simplify [(^)] for 2+ with Baggy semantics

Fixes the failing test in S03-operator/mix.t
18:16
lizmat .tell ab5tract github.com/rakudo/rakudo/commit/05c255c14b 18:18
yoleaux lizmat: I'll pass your message to ab5tract.
dogbert17 afk &
MasterDuke huh, earlier today i built rakudo with asan, but now even nqp won't build 18:21
gist.github.com/MasterDuke17/3f461...3543b6e454 18:22
lizmat afk again& 18:23
MasterDuke moar/nqp/rakudo all at HEAD
Zoffix damn, I'm still getting "Failed to rename" with precomp on Windows 18:36
Geth roast: 20c194f0f4 | (Samantha McVey)++ | S17-procasync/stress.t
Let S17-procasync/stress.t be launched from roast folder

Previously it had to be launched from t/spec/ assuming it was in rakudo's folder. This fixes that so it can be started from both.
22:41
samcv wow. i just got all Emoji V4.0 passing. and no more of GraphemeClusterBreak.t failing 23:31
240 emoji in one swoop
:D 23:32
Zoffix samcv++ 23:52