github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
02:26 AlexDani` joined 02:30 AlexDaniel left 03:40 AlexDani` is now known as AlexDaniel, AlexDaniel left, AlexDaniel joined 04:09 AlexDaniel left 04:36 AlexDaniel` left, Garland_g[m] left 04:45 AlexDaniel` joined 05:20 Garland_g[m] joined 07:12 robertle joined 07:33 patrickb joined, brrt joined
brrt \o 07:33
nwc10 o/
07:35 domidumont joined 08:06 zakharyas joined 08:39 zakharyas left 08:51 zakharyas joined 09:11 discord61 joined, discord6 left 09:12 discord61 is now known as discord6 09:33 brrt left 10:19 domidumont left 10:25 brrt joined
dogbert17 .seen timotimo 11:54
yoleaux I saw timotimo 11:51Z in #perl6-dev: <timotimo> any reason not to bump rakudo's nqp dependency right away?
timotimo o/ 11:55
dogbert17 hello timotimo
fancy taking a look at a gist?
does the last gist posted in github.com/MoarVM/MoarVM/issues/813 give you any ideas?
11:56 zakharyas left
timotimo can you give the latest change in nqp a try? 11:57
dogbert17 sure 11:58
11:59 domidumont joined
dogbert17 oh, I see a profiling related change 11:59
dogbert17 tinkers 12:02
12:06 brrt left
dogbert17 stupid question, if I have built Rakudo how can I chack which version on nqp it's using? 12:11
*check
timotimo: assuming I did things correctly (not certain) your fix didn't help 12:13
dogbert17 does a 'make realclean' and tries again 12:16
timotimo hm, OK 12:17
dogbert17 any other theories given the gdb output? 12:25
timotimo not really :< 12:26
dogbert17 somthing goes wrong here github.com/MoarVM/MoarVM/blob/mast...ent.c#L807 mark_gc_entries has been called from line 830 in the same file
anything I can do in order to figure things out 12:27
timotimo i'll probably have to try a "rr record" and go forwards and backwards to see where things go so wrong 12:28
dogbert17 gah, can't help there since I have a Ryzen cpu :( 12:29
timotimo yeah :< 12:30
oh, dogbert17, have you seen the linkify userscript for github issues and gists? 12:31
timotimo rebuilds unoptimized moarvm with gc debug turned up to 1 12:32
dogbert17 no, where can I find that?
timotimo gist.github.com/timo/7cfe71a667bbd...0431da45a4 - check the screenshots at the bottom 12:33
12:34 brrt joined
dogbert17 timotimo: that looks really cool 12:37
timotimo \o/ 12:39
dogbert17 timotimo: since I'm a moron :), how do I use it, do you have an example incantation? 12:44
timotimo you'll need a userscript plugin for your browser; i have TamperMonkey 12:46
dogbert17 aha
timotimo in TamperMonkey's "settings" there's a "utilities" tab that has an url field where you can paste the raw link
and it'll import it
gah, when recording i forgot to --profile-compile=parse 12:49
oh, it does crash pretty quickly, though 12:50
good
dogbert17 timotimo: I got it working, this is way cool
timotimo \o/
dogbert17 yeah the --profile-compile=parse stuff crashes very quickly 12:51
timotimo hum 12:56
i wonder if my add_node and take_node functions could be wrong?
dogbert17 we do at least know that something is wrong :-) 12:57
13:13 pamplemousse joined
timotimo debugging gc wrongness is not the right task to go for when you have a headache 13:26
oh 13:29
hold on just a second
is that one call graph node being marked twice?
dogbert17 sounds promising 13:30
timotimo nope, current_call is ignored, which should be correct, since it's also part of the call graph indirectly
dogbert17 perhaps you should rest for a while? 13:31
14:45 brrt left 14:46 brrt joined 14:52 zakharyas joined 14:56 sena_kun joined 15:05 sena_kun left 15:30 patrickb left 15:34 pamplemousse left 15:37 brrt left 15:38 robertle left
timotimo i rested for a while, then i took two more painkillers :| 16:25
16:44 pamplemousse joined
timotimo hum. i'm now putting a __FILE__:__LINE__ into worklists when an item gets added (in GC_DEBUG mode) and when worklist_item_get gets called i set it in the worklist as "current source", but that doesn't seem to work properly 16:57
otherwise why does it try to add pointers to the profiler data from a P6str object
17:14 pamplemousse_ joined 17:16 zakharyas left 17:18 domidumont left, pamplemousse left
dogbert17 timotimo: is it migraine? 17:22
timotimo i don't think so 17:29
dogbert17 it sounds like you're closing in on the bug 17:37
17:39 pamplemousse_ left
timotimo nah 18:04
dogbert17 argh 18:11
timotimo but i can add a tummy-ache to the accomplishments of the day 18:13
i'll try with a smaller nursery, perhaps that'll make things just a little clearer 18:23
so far i've only succeeded in making it a whole lot slower, which is of course to be expected 18:28
"stage parse" is probably one of the worst cases for small nurseries, as so many objects are kept around ... maybe? 18:30
i could look pu the numbers if i wanted 18:31
dogbert17 let me know if there's anything I can do to help 18:33
timotimo you have experience with small nurseries, right? 18:34
what kind of sizes were you using typically?
i just used the regular size divided by 4096
er
yeah
dogbert17 I tend to use 32 or 64 k most of the time 18:35
timotimo m: say (4194304 / 4096 / 1024) 18:39
camelia 1
timotimo oh
m: say (4194304 / 4096)
camelia 1024
timotimo i'm at exactly 1k, is that right?
m: say (4194304 / 256 / 1024)
camelia 16
timotimo that was probably a bit excessively small 18:40
dogbert17 I usually write e.g. (16384 * 2)
timotimo shrinking the nursery more and more 18:47
dividing by 512 either makes it far slower than the previous halvings, or it hides the bug 18:49
but dividing by 256 got the crash very quickly
well, what do i do with this knowledge? :\ 18:55
dogbert17 difficult to say :) 19:04
19:08 domidumont joined 19:11 domidumont left
dogbert17 trying to print the pointer mentioned in the MVM_panic message gives: {header = {sc_forward_u = {forwarder = 0x107e710, sc = {sc_idx = 17295120, idx = 0}, st = 0x107e710}, owner = 1, flags = 265, size = 24}, st = 0x604f00} 19:41
peeking into the st show, among other things: debug_name = 0x2ab07e0 "Perl6::QGrammar+{qq}+{stop}" 19:42
20:07 pamplemousse_ joined
timotimo oh? 20:25
when i get the crash i get a NQPBuf instead
though perhaps there's actually a bogus forwarder in place
21:23 brrt joined
brrt \o 21:23
dogbert17 hi brrt 21:24
brrt hi dogbert17 21:40
22:05 brrt left
timotimo i thought "hey if i keep every nursery around instead of freeing the old ones i can trace objects as far back as i like" (though of course after being seen twice in the nursery they disappear into the gen2, at which point i guess i can still trace them back to the nursery they came from, but that's more of a headache) 22:18
but man, this runs a lot of minor collections before it hits the explosion
oh, wait, if i don't re-use the old nursery, it wouldn't actually trigger the "to old fromspace" check? 22:19
jnthn timotimo: no, 'cus it's a range check 22:22
On the current fromspace 22:23
Well, of each thread, I guess
One thing you can do, I think, is mprotect old (and in theory dead) fromspaces
So any touching them blows
22:49 dogbert17 left
timotimo i think the exploding action is a read rather than write 23:03
jnthn Can't you read-protect too? 23:24
yes linux.die.net/man/2/mprotect 23:25
PROT_NONE
btw, this idea is thanks to nwc10++ who I believe at one point had a hacky version of this 23:26
timotimo that's gotta be annoying once i'm hooked up to the program with gdb and actually want to inspect what's in there :) :)
japhb timotimo: couldn't you just unprotect the memory from gdb before examining it? 23:27
timotimo hm, probably 23:28
need the right addresses and ranges though
i kind of want a visualization or something 23:30
i'm still convinced a llvm/clang instrumentation could be built that checks our gc invariants 23:35