github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
00:00
reportable6 left,
reportable6 joined
00:10
pamplemousse joined
00:15
pamplemousse left
00:55
Kaiepi left
00:56
Kaiepi joined
05:31
robertle left
06:00
reportable6 left
06:02
reportable6 joined
06:28
brrt joined
|
|||
brrt | \o | 06:53 | |
07:01
sena_kun joined
|
|||
nwc10 | o/ | 07:17 | |
07:44
zakharyas joined
07:52
sena_kun left
|
|||
brrt | ohai nwc10 | 08:37 | |
timotimo | nwc ohai10 | 08:38 | |
brrt | timohaimo | 08:39 | |
nine | There's the possibility that the threaded GC issue is not actually a real issue but just some overly sensitive debug checks | 08:49 | |
nwc10 | I (have lost newor again) | 08:50 | |
IIRC the asserts were put in by me to confirm my understading/code analysis | 08:51 | ||
the thing IIRC was that there were 2 pointers in every object header | |||
1 that was only needed *during* GC (the forwarder) | |||
and 1 only needed outside of GC (forget which, commits should be obvious) | |||
timotimo | there may be a #define that brings the not-unionized format back | ||
nwc10 | and I figured that the two could be the same in a untion | 08:52 | |
and everythings gets smaller by one pointer | |||
beware though - the MoarVM code is almomst too clever for its own good | |||
it sort of just about gets alignment right on x86_64, x86 and ARM | |||
particularly w.r.t. doubles in C structures bodies, which *may* be straight after the header | 08:53 | ||
or might be in a malloc'd block pointed to be the fowaring pointer thingy | |||
and chaning the header size (at one point in 2014) broke all of this | |||
I *think* that the asserts aren't needed | 08:54 | ||
but I do not know enough about the "other thread actually moving the item" | 08:55 | ||
you'd need to ask jnthn | |||
it might be the "stealing work" thing that I vaguely remember | |||
(network bounced at least once in all of that) | |||
09:40
brrt left,
brrt joined
09:50
brrt left
10:55
AlexDaniel is now known as test{},
test{} is now known as AlexDaniel
|
|||
nine | nwc10: ok, thanks! That fits with my understanding which I've gathered over the course of the past week. | 10:55 | |
11:38
zakharyas left
12:00
reportable6 left
12:03
reportable6 joined
12:13
brrt joined
12:49
pamplemousse joined
13:10
zakharyas joined
|
|||
Guest37021 | nine: are we out of GC related errors now? | 13:20 | |
nine | Guest37021: at least out of those that I can make reliably reproducable | 13:39 | |
There are a few spec test files that fail with high-level errors which may be GC related or may just be triggered by MoarVM's slowness when the GC runs all the time | 13:40 | ||
13:51
robertle joined
|
|||
Guest37021 | cool, I suspect that we should be able to close a few MoarVM issues thanks to your fixes | 13:59 | |
nine | Oh, that would be nice indeed :) | 14:00 | |
Guest37021 | perhaps M#1062 | 14:01 | |
synopsebot | M#1062 [open]: github.com/MoarVM/MoarVM/issues/1062 malloc error in t/04-nativecall/06-struct.t | ||
Guest37021 | I guess I'll try to repro them and if I can't I'll have to figure out which of your commits fixed the issue | 14:03 | |
nine | I think that one's still unsolved. It's about inlined structs, isn't it? | 14:05 | |
or stuff inlined into structs | |||
Guest37021 | yeah, I was too optimistic, that one is still open | 14:06 | |
nine: how about M#1140, might that have been fixed | 14:13 | ||
synopsebot | M#1140 [open]: github.com/MoarVM/MoarVM/issues/1140 Panics and segmentation faults when working with sockets and threads | ||
14:25
lucasb joined
14:26
brrt left
14:30
brrt joined
15:21
robertle left
15:29
pamplemousse left
16:39
brrt left
16:59
robertle joined
17:31
chloekek joined
18:00
reportable6 left
18:02
reportable6 joined
18:07
zakharyas left
18:39
brrt joined
|
|||
Kaiepi | i fucked up the ipv6 pullreq at some point after unit testing it, i'll force push the fix once make spectest's done | 18:56 | |
19:19
sena_kun joined
|
|||
nine | Guest37021: not, not either :( But that's actually pretty much the same error as another one we talked about: spesh still being active in a finished (and free()'d) thread. The one where timotimo++ suggested adding checks to the few places where spesh allows for GC | 19:26 | |
timotimo | there's three places where spesh allows for GC, they look like "GC_SYNC_POINT(TC)" | 19:27 | |
19:27
lucasb left
19:35
zakharyas joined
|
|||
nine | timotimo: but...that's either not entirely true, or there are bugs. I know of at least one backtrace where the GC was triggered by deserialization in spesh | 19:37 | |
timotimo | that's not very good | 19:39 | |
we used to MVM_panic in that case | |||
or it was in the code i wrote to go back out of speshing a frame to deserialize and then retry | |||
19:47
pamplemousse joined
19:51
pamplemousse_ joined
19:54
pamplemousse left
19:56
pamplemousse_ is now known as pamplemousse
|
|||
nine | timotimo: ah, we do ineed MVM_panic in that case: gist.github.com/niner/61258e039e02...891b260f52 | 20:03 | |
But from a user's perspective, that's not exactly better :/ | 20:04 | ||
timotimo: wouldn't this be an appropriate fix? gist.github.com/niner/ef6dd2466fcf...82a0fde041 | 20:08 | ||
A WVal that's used in speshed code should by definition be somewhat long lived. Otherwise the code wouldn't get speshed in the first place | 20:09 | ||
Kaiepi | ok the ipv6 pullreq now passes make spectest for real now | 20:12 | |
note to self: don't make last minute style fixes after unit testing and expect it to always still work | 20:14 | ||
nine | Kaiepi: I guess we've all been there :) | 20:15 | |
20:20
zakharyas left
|
|||
timotimo | nine: the code gets speshed even if the wval is in a branch that's never taken, which is very often the case with exception throwing branches | 20:26 | |
in theory it'd be fine to just not set the facts when the object isn't deserialized yet | 20:27 | ||
since it'd be only not deserialized yet if it's in a cold branch inside of a hot routine | |||
sena_kun | o/ | 20:28 | |
is anyone interested in a severe memory leak which is likely to be a regression? | |||
nine | timotimo: oh, very good insights! | ||
timotimo | i could have had that insight years ago ā¦ | 20:29 | |
nine | timotimo: so what :) | ||
sena_kun | or any clues on how to get more helpful info are very appreciated, tools | 20:30 | |
nine | sena_kun: well, would you be able to bisect it? | 20:31 | |
sena_kun | nine, what do I need for it? I don't have whateverable installed if that's needed. | 20:32 | |
nine | just git and a lot of time | ||
sena_kun | nine, it'll kill the process for me, right? as it just hangs and starts to eat memory, not something to terminate. :S if yes, I am ready for executing commands | 20:33 | |
timotimo | sena_kun: the moarvm heapanalyzer could perhaps help | ||
nine | sena_kun: no, git bisect is pretty simple. It helps you find a faulty commit by being smart about trying them. You start with a known faulty and a known working one and it helps you narrow it down. But the actual test is a manual thing. | 20:35 | |
sena_kun | nine, ah, I see | ||
nine | sena_kun: To be precise, the actual test can be automated, too, but that's not required | ||
sena_kun | let me look at moarheapanalyzer... | ||
nine | timotimo: if you meant this fix, then it does indeed work! gist.github.com/niner/ce8fc4f422ae...399606aa0f | 20:36 | |
timotimo | first gotta either --profile=heap which will spit out heap snapshots every time GC runs, or "use Telemetry; snap :heap" whenever you're interested in a snap of the heap | ||
nine: that could do it | |||
nine | Will run some tests and then commit | ||
sena_kun | timotimo, does process need to terminate? I am running it with `--profile=heap`, but after some time and ctrl-c there is no snapshot file or I'm blind. | 20:37 | |
> (the filename will be at the end of the program output). | 20:38 | ||
ah, likely it needs to. :S | |||
timotimo | with --profile=heap it needs to terminate for the snapshot to be readable (something my in-progress work fixes) | 20:39 | |
sena_kun | oh... that pretty much means git bisect then... | 20:41 | |
timotimo | not necessarily | 20:45 | |
you don't have to have the process terminate when using snap :heap | 20:46 | ||
sena_kun | timotimo, I'll check it a bit later, thanks! | 20:50 | |
timotimo | OK | 20:51 | |
Geth | MoarVM: 654a136d13 | (Stefan Seifert)++ | src/spesh/facts.c Fix panic in spesh when deserialization causes GC during fact finding Deserialization may trigger garbage collection or at least allow for it to happen, but in spesh there are very few places where GC is actually allowed. If a WVal is not yet deserialized at the time the code its used in is speshed then we may assume that it's used by a cold branch inside of a hot routine. In that case its facts are probably not as important, so we may as well get by without them. Forgoing those facts gets rid of the GC issue. Many thanks to timotimo++ for the valuable insights and the solution! |
||
nine | That's my 24th GC related fix in a row :D | 20:52 | |
20:55
pamplemousse left,
pamplemousse joined
21:01
pamplemousse left
21:09
Altai-man_ joined
21:11
sena_kun left
21:36
brrt left
|
|||
japhb | nine: I think you mean your 24th act of awesomeness in a row. ;-) | 21:46 | |
timotimo | on the 24th day of christmas ... | ||
21:56
MasterDuke joined
|
|||
MasterDuke | wow! just installed my new hardware. so much faster! | 21:56 | |
i ran a rakudo spectest right before powering off with the old hardware, it took 600s. ran another after rebooting with the new hardware, it took 133s | 21:57 | ||
timotimo, sena_kun: --profile=<something> now creates a regular profile with the given filename. you need --profile-kind=heap to get a heap snapshot | 22:15 | ||
dogbert17 | MasterDuke: congrats | 22:19 | |
22:20
pamplemousse joined
|
|||
dogbert17 | what's your parse time when building Rakudo? | 22:20 | |
MasterDuke | 76s before, 36s after | 22:21 | |
dogbert17 | gee, that's fast | 22:22 | |
MasterDuke | yeah, pretty happy with how much faster it actually is | 22:24 | |
dogbert17 | I can imagine :-) | ||
22:32
BinGOs_ joined
22:37
BinGOs_ is now known as BinGOs,
BinGOs left,
BinGOs joined
22:52
pamplemousse left
22:55
Altai-man_ is now known as sena_kun
23:00
pamplemousse joined
23:08
sena_kun left,
sena_kun joined
23:16
chloekek left
|