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 |