00:15
vendethiel joined
00:52
vendethiel joined
|
|||
timotimo | hrm. now there'll be a bit of clutter ... until now there wasn't any | 00:56 | |
when adding pages, we always do a realloc for the pages of a bin | 00:57 | ||
oh, actually | |||
i may not want to make every page its own VALGRIND_MEMPOOL | |||
yeah, that'll make things way easier | |||
==5796== Address 0x5a3aa80 is 24 bytes inside a block of size 32 client-defined | 00:59 | ||
==5796== at 0x4D7B5DD: MVM_gc_allocate_nursery (allocation.c:39) | |||
sometimes the nursery parts work already <3 | |||
04:12
TimToady joined
04:17
TimToady joined
04:36
vendethiel joined
06:15
vendethiel joined
07:12
vendethiel joined
07:14
TimToady joined
07:42
rurban joined
07:51
rurban joined
07:59
Ven joined
08:04
brrt joined
08:16
Ven_ joined
08:49
vendethiel joined
|
|||
brrt | \o | 09:02 | |
lizmat | brrt: /o | 09:09 | |
brrt | :-) | ||
09:21
vendethiel joined
09:54
TimToady joined
10:30
Ven_ joined
10:46
TimToady joined
10:51
vendethiel joined
11:18
TimToady joined
11:42
rurban joined
12:21
brrt joined
|
|||
dalek | arVM: 54f270c | jnthn++ | src/strings/ops.c: Re-implement simple say/print using MoarVM I/O. This reduces code duplication, and further means that nqp::say will certainly output the text and newline as a single operation. |
12:27 | |
timotimo | it could very well be that i'll have to toss the nice pool-oriented valgrind user requests because only memcheck understands them | 13:06 | |
that took me a while to notice | |||
13:07
FROGGS joined
|
|||
dalek | arVM: 58711b4 | jnthn++ | src/ (4 files): Thread ID handling cleanup. Differentiate VM-level ID from native thread ID. Make nqp::threadid be the former, as on JVM, so we can even know it before the thread is started. Make sure we give a thread ID early enough to answer the question. Also, never block on a request for a thread ID. We don't yet have an API to get the native thread ID, but keep the code around as we'll likely get one some day. |
13:08 | |
jnthn | timotimo: Aww :( | ||
timotimo | and without the ability to say "this memory pool is now completely freed, basically" i'm not sure how to handle nursery allocations at all | ||
jnthn | Yeah, we move objects, which I guess is tricky... | 13:09 | |
timotimo | the code i currently have unpushed on my laptop is *very* wrong about how the gc run works | ||
and thus it makes memcheck spit out oodles of invalid reads inside the nursery during gc | |||
up to the point where it says "you've now made me spit out ten million errors. i won't go on. fix your damn program" | 13:10 | ||
13:31
vendethiel joined
13:53
zakharyas joined
14:05
camelia joined
|
|||
timotimo | so... brrt | 14:10 | |
were you planning on accidentally a whole trace jit as part of your grant? :P | 14:11 | ||
brrt | uhm... well.... | 14:16 | |
if i can help it | |||
but i think the tracing part is both too large to fit in the grant, and too small for a seperate grant | |||
because jnthn++ has done 90% of the work already (because of inlining support) | 14:17 | ||
maybe 80%, but you get my point :-) | |||
jnthn | It's still a bit tricky, but yeah, I had an idea we'd want to go there and tried to prep for it :) | ||
timotimo | hrhr | ||
brrt | everything about spesh is tricky though :-) | 14:18 | |
14:26
Ven joined
|
|||
brrt | there are two things that i've not entirely made up my mind on | 14:26 | |
a): what about inlining the same frame twice, totally possible in a trace | 14:27 | ||
b): what about a (non-tail) recursive function? | |||
in case of tail recursion, you could try loop rewriting, in case of non-tail-recursion, you're... well | |||
screwed, until you can add somehow a growing stack to the equation | 14:28 | ||
which you can if you're the JIT | |||
actually, which you also can if you're not the JIT, it's just trickier | |||
and we have no real support for that idea | |||
on one hand, it's just adding a pointer, on the other.... | 14:29 | ||
timotimo | i ought to put a comment under that grant application, too | 14:31 | |
brrt | if you wish, and if it's still open, that would be nice :-) | ||
i think there were supposed to be 2 weeks of review time? I haven't really kept tabs on progress of evaluation | 14:32 | ||
not that i'd know how or where | |||
timotimo | it's kinda hard to find on the perlfoundation website | ||
dalek | arVM: 183296e | jnthn++ | src/core/fixedsizealloc.c: Fix an ABA bug in the fixed size allocator. This could lead to freelist corruption in a multi-threaded scenario. We'll want a more efficient solution to this in the longer term, but for now this addresses the correctness bug. |
14:50 | |
brrt | is there some progress display? | 14:54 | |
timotimo | sent my comment off :) | 14:56 | |
15:04
Ven_ joined
|
|||
brrt | thanks :-) | 15:08 | |
what's an ABA issue? | 15:09 | ||
masak | brrt: it's a potential problem with compare-and-swap | 15:10 | |
timotimo | en.wikipedia.org/wiki/Compare-and-...BA_problem | ||
timotimo reads | |||
masak | basically, if something changes *back* when you CAS, it will false-negatively register as "no change", though it was actually more than one change. | 15:11 | |
s/when/before/ | |||
timotimo | kind of like a hazard error | ||
masak | dunno about those | ||
brrt | right... | ||
ok, i see | |||
[Coke] | masak: I wonder if recent NFG work has fixed RT #107204 in moar. | ||
synbot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=107204 | ||
masak | but it's one way CAS can show false negatives. | ||
timotimo | huh. it seems like the english name for that is just "glitch" | ||
"electronics glitch" | 15:12 | ||
masak | oh, like an electric bug? | ||
dalek | arVM: dc11409 | jnthn++ | src/core/fixedsizealloc. (2 files): At least do a spinlock rather than a mutex. Eventually we'll go with per-thread free lists and some kind of way to steal, but this goes a long way to recover performance lost by the previous commit while keeping the bug fixed. |
||
timotimo | masak: it comes from the concrete implementation of transistor logic and timing | ||
masak | [Coke]: either way, that RT ticket doesn't have a decent observable, and should be rejected on principle. | 15:13 | |
timotimo | where some input variable hasn't propagated the new value yet and so the result briefly becomes what it would be if that variable hasn't changed yet, and then updates again to correspond to the proper input value | ||
masak | timotimo: oh, I see. | ||
timotimo: well, in concurrent programming, that's mostly just called a "race" :) | |||
jnthn | Given this bug could lead to all manner of memory corruption, it may be at the base of various bits of our multi-threaded instability | ||
timotimo | ah, i suppose that's an apt comparison | ||
[Coke] | masak: That was going to be my next bit, yes. "tests or..." | ||
masak | tests or it didn't happen. | 15:14 | |
timotimo | jnthn: did you do a measurement for the temporary root handling change? | 15:23 | |
jnthn | 2% | 15:24 | |
On the Rakudo startup | |||
I'd guess maybe similar in other cases, maybe a bit more, depends. | |||
timotimo | thanks | 15:25 | |
just wanted a rough estimate :) | |||
jnthn | Guess you've got the hash memory decrease things going into the weekly too? :) | 15:26 | |
timotimo | it'll be in | 15:27 | |
in its own section about hash order, actually | |||
jnthn | ah, ok | ||
timotimo | do i remember correctly that nwc10 is to blame^Wpraise for the recent memory leak fixes? | ||
dalek | arVM: 052aca0 | jnthn++ | src/core/ (2 files): Factor out code to avoid a "magic value" all over. |
15:29 | |
jnthn | Memory leak? | ||
I think ptc++ did some memory leak fixes | |||
timotimo | ah | 15:30 | |
good, then i remembered incorrectly | |||
hm. | 15:31 | ||
i'm not so sure i'll be able to fill a proper section with hash order changes | |||
so it'll live in the performance improvements section after all | |||
jnthn | Well, it's not a speedup really | ||
It's more a memory saving | |||
timotimo | aye | ||
jnthn | I think you measured a bit off startup memory | ||
timotimo | if you refer to the measurement i just did today, that includes lizmat's CUR lazyness patches | 15:32 | |
oh | |||
i did do a measurement | |||
brrt | oh, for my clarity | ||
timotimo | but that also contains the "re-use compunit's string heap" thing | ||
japhb | timotimo: Can haz resultz? | ||
brrt | is the localref thingy, is that to make containers on the fly, for, e.g. object attributes? | 15:33 | |
timotimo | 002847 timotimo ā i see about 1.5 megabytes less maxresidentk for a newer rakudo vs an older rakudo | ||
002925* timotimo ā to be exact: f4ff0a8..56cae10 nom 547d08a..18ece1f master (nqp) f04b1d8..0e6e0b6 master | |||
ā (moarvm) | |||
003233 timotimo ā that contains both the "re-use string heap from comp-unit" and the "remove doubly-linked list from | |||
brrt: there's also an attrref,b tw | 15:34 | ||
brrt | aye | 15:35 | |
but that's what it's for/ | |||
? | |||
interesting | |||
japhb | timotimo: Ah, nice. | ||
timotimo | it's there so that a callee can have direct rw access to a local in a caller's frame | 15:36 | |
and later we'll be able to turn that into direct access to a local after inlining | 15:38 | ||
brrt | awesome | 15:39 | |
brrt afk | |||
jnthn | japhb: I did a .tell to you on #perl6 earlier, but the bot wasn't there...dunno if you backlog :) | 15:40 | |
15:41
vendethiel joined
|
|||
japhb | jnthn: I usually look for highlights if it hasn't been too long to lose lines in the scrollback. I'll do so now. | 15:45 | |
[Coke] | r: sub foo(X of X) { } | 15:48 | |
camelia | rakudo-moar 87b1ee: OUTPUTĀ«===SORRY!===ā¤Cannot find method 'parameterize'ā¤Ā» | ||
..rakudo-jvm 87b1ee: OUTPUTĀ«===SORRY!===ā¤No such method 'parameterize' for invocant of type 'Perl6::Metamodel::PackageHOW'ā¤Ā» | |||
timotimo | the what now | 15:49 | |
o_O | |||
jnthn | It's not a parametric type but you tried to parameterize it. | 15:50 | |
Not a great errror | |||
[Coke] | old RT. | ||
rt.perl.org/Ticket/Display.html?id=115400 | 15:51 | ||
... I really need to pick a channel and stick with it. :) | |||
timotimo | :) | ||
japhb | jnthn: OK, got to the one about the yield test being bogus. That's fine; I kinda was working backwards from the Rakudo implementation supplemented by wild ass guesses, so I'm not surprised I got something wrong. | ||
Also, I clearly didn't manage to write all the tests we need for NQP ops -- got rather limited by $day-job commitments of late. | 15:52 | ||
timotimo | jnthn: do we actually have some good approach to making the libuv event loop in the event loop thread not spin? | 15:59 | |
someone else recently got bitten by that again | |||
jnthn | timotimo: I *think* the async send thingy | 16:00 | |
japhb catches up with real time, but hasn't read the patch logs yet | 16:02 | ||
Anything else you wanted to ask jnthn before I get sucked into $day-job again? | |||
jnthn | japhb: No, I was mostly wanting to see if you agreed those yeidld tests were kinda bogus | ||
japhb: If we agree on that I can toss those and then add the concurrency tests to Moar/JVM normal "make test" in NQP | 16:03 | ||
japhb: Which'll make it easier to see if we regress on them or have further instability | |||
japhb | I'm all in favor. | ||
Sad that there is no way to more strongly suggest a yield, since it seems like a really mild hint, but I have no desire to protect broken tests. | 16:04 | ||
And I'd definitely rather have them in the regression suite. | |||
BTW, very happy to see the change in say/print to make them single operations. Gad it's annoying to get interleaved ok() output | 16:08 | ||
jnthn | Well, if we want that in Perl 6 too we'll have to do it in Test.pm there also | 16:15 | |
dalek | arVM: 6c9ee55 | jnthn++ | src/ (3 files): Concurrency control on multi-cache additions. |
16:16 | |
japhb | jnthn: Sure ... but I'll take what I can get for now. :-) | 16:18 | |
timotimo | hm, that Proc::Async code TimToady linked to (gist.githubusercontent.com/anonymo...file1.txt) is still behaving erratically | 16:19 | |
*** Error in `/home/timo/perl6/install/bin/moar': double free or corruption (fasttop): 0x00000000033abb90 *** | |||
yay :S | |||
jnthn | timotimo: I've no doubt we've more to find yet. | 16:20 | |
timotimo | probably :) | ||
jnthn | Seems the next nasty to find is this one: | 16:25 | |
When invoking is_bindable, Provided outer frame 00000000049D44E0 (MVMStaticFrame bind_one_param) does not match expected static frame type 00000000049D4280 (MVMStaticFrame ) | |||
timotimo | it's not *that* far away from the correct one! :P | ||
TimToady | btw, that gist is from raw.githubusercontent.com/kgoess/r...restart.p6 but fixed to remove the spurious return in the started block | 16:30 | |
and yeah, still very flaky | 16:32 | ||
16:33
vendethiel joined
|
|||
nwc10 | jnthn: for us students here, why are the atomics still needed if the section is now protected by a lock? | 16:50 | |
also, doesn't a C compiler spot that | 16:52 | ||
while (i < 1024) | |||
i++; | |||
is side effect free and decide to just avoid doing the work entirely? | |||
or am I missing something (else)? | |||
oh, and a hat trick of silly questions - in github.com/MoarVM/MoarVM/commit/6c9ee556e7 you put two mutexs next to each other. Isn't that LTA? | 16:54 | ||
jnthn: at master/master/nom t/spec/integration/advent2013-day14.t can still fail: paste.scsys.co.uk/476288 | 17:14 | ||
17:58
TimToady joined
17:59
zakharyas joined
18:40
brrt joined
19:08
TimToady joined
|
|||
jnthn | nwc10: The atomics are needed because the "add to free list" is not protected by a lock, but rather using a lock-free design. The lock is used purely for serializing the allocations, which is the "obvious minimum ABA fix" | 19:27 | |
The loop actually needs to contain the nice thingy that doesn't horribly waste cycles under HT CPUs; I'll get there, but I'm more bug-hutning that performance tuning right now. | 19:28 | ||
nwc10 | the lock only covers adding? Removing from the free list is the (other part of) the lock-free design? | ||
jnthn | No, the lock only covers removing from the free list (that is, allocating from it) | 19:29 | |
Putting new items onto the list isn't vulnerable | |||
nwc10 | OK. I'm too tired to figure out why | 19:30 | |
I've just got t/spec/S17-lowlevel/lock.rakudo.moar to fail after a very long time of looping it | |||
jnthn | en.wikipedia.org/wiki/ABA_problem describes ABA nicely at least. | ||
Yeah, I'm well aware there are still plenty of gremlins | |||
I've got a IO::Socket::Async ping server that I'm going to increasingly hammer until it runs for ages. | 19:31 | ||
nwc10 | this is probably one youv'e seen before: paste.scsys.co.uk/476307 | ||
jnthn | (And fix what falls out on the way) | ||
*nod* | |||
nwc10 | the earlier nopaste was ASAN barfage, but possibly also known-to-you | 19:32 | |
19:35
TimToady joined
19:45
TimToady joined
20:26
TimToady joined
20:36
TimToady joined
|
|||
nebuchadnezzar | hello | 21:13 | |
could it be possible to automatically generate the release.html and homepage of moarvm.org to get accurate latest release version? | 21:14 | ||
jnthn | Just nudge somebody when it's out of date :) | 21:15 | |
The blurb is written manually | |||
I guess it's *possible* to automate more of it...I'm not sure if it's worth it :) | |||
nebuchadnezzar | maybe a hook somewhere to update github.com/MoarVM/moarvm.org on new release tag? | ||
jnthn: erf, maybe yes | 21:16 | ||
it may took more time to make something quite automatic than several years of updating the html by hand :-D | 21:17 | ||
jnthn | nebuchadnezzar: Yes, that's what I figured too | ||
I normally take care of it immediately after the release. | |||
But probably got distracted (quite a bit going on offline at the moment :)) | 21:18 | ||
21:19
TimToady joined
|
|||
nebuchadnezzar | speaking about distraction, I'll try to avoid it and work on packaging the latest nqp for Debian this week-end, maybe updating rakudo at the same time :-D | 21:22 | |
for now, good night | |||
jnthn | Cool | 21:25 | |
And thanks for the poke, update coming very soon :) | |||
'night | |||
dalek | href="https://moarvm.org:">moarvm.org: 0365d91 | jnthn++ | / (3 files): Update site for 2015.04 release. |
21:27 | |
href="https://moarvm.org:">moarvm.org: 2e1c6e5 | jnthn++ | roadmap.html: A few updates to the roadmap. |
21:29 | ||
japhb | nebuchadnezzar: Make sure you package *after* Panda is working well again. As of this morning, I was seeing fixes flying for Panda breakage due to latest startup performance improvements. | 22:10 | |
23:15
Peter_R joined
23:22
xiaomiao joined
|