github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
AlexDaniel timotimo: fwiw 00:33
valgrind.org/docs/manual/ms-manual.html
02:26 dalek left 02:49 Geth left
ugexe how come the various uses of uv_fs_t req ( such as github.com/MoarVM/MoarVM/blob/a5dd...ops.c#L125 ) don't call seem to leak memory despite never calling uv_fs_req_cleanup(&req) ( docs.libuv.org/en/v1.x/fs.html#c.uv...eq_cleanup ) ? 05:01
s/dont call seem/dont seem/
08:21 dalek joined, synopsebot left, p6lert_ left, p6lert joined, synopsebot_ joined, Geth joined
timotimo hm. so why would this thread clear uncopied from the nursery, but not have logged a gc start? 10:32
oh, does that happen when a different thread takes over work for a blocked thread?
that could be it
yeah 10:37
FWIW, adding a "how often was this type copied to the gen2" stat is a rather simple addition 10:45
now let's get that data into the output 10:47
Geth MoarVM: Kaiepi++ created pull request #1088:
Remove unnecessary (void *) cast in MVM_free_zero
13:07
14:52 zakharyas joined 14:58 lucasb joined
timotimo lizmat: what kind of stats could you think of? 15:13
lizmat number of gc's, number of full collections, # call frames, inlined call frames, deopts, global deopts, OSR's, micro seconds spend in GC 15:15
interpreted frames
timotimo oh, that's not fun
lizmat well, let's start with the fun ones then ? 15:16
timotimo we code-gen "entry"/"exit" opcodes right in the code to get that information when the profiler is on
lizmat ok, so that would only work with profiling
timotimo those ops also have to create the whole call graph and such, which the simple stats version doesn't have to do
but i'm not entirely sure if it can be done any easier 15:17
deopts and osr's on the other hand is easier to do
lizmat perhaps --profile should be split into two functions: one for codegenninng the entry/exit opcodes, and one for generating the HTML at the end ?
--profile would do both, like before
timotimo those parts are pretty far apart already 15:18
lizmat --telemetry would just do the codegenning part ?
timotimo oh btw, how would you feel about giving the Telemetry module a sub or method to cause a heap snapshot to be taken?
lizmat would be great 15:19
timotimo you can already implement it "easily" - unless a profiler is currently running i guess - by just turning profiling on and off again immediately
lizmat together with something like snapper, would allow you to do this without touching the program itself
timotimo yeah
the regular heap snapshot profiler is "reactive", i.e. it kicks in the moment a gc happens 15:20
if you have it in telemetry, it will have to force a GC to happen, because that's how the heap snapshot profiler actually works
i'm also considering implementing an extremely light-weight heap snapshot mode which completely skips all the graph-y data and only outputs summaries
lizmat that would also be helpful, I think 15:21
timotimo those summaries will also end up in the regular heap snapshot file format as text "comments" that the heap snapshot analyzer will parse out and present
so the most typical workloads can be extremely fast
15:32 TimToady left 16:23 domidumont joined
timotimo wow, fascinating 16:54
my code is trying to call .HOW on an object it gets - which is a SpeshLog object - and it does a null pointer access because the STable doesn't have a HOW_sc set
... how do i memory ... 17:08
MasterDuke my grandmother's line is that as she gets older her memory gets worse, but her forgettory gets better 17:37
timotimo in this case it was more about only accessing memory locations that are actually valid 17:39
grumble grumble 17:40
attaching the debugger to this nqp program makes it explode in a segfaulty way
MasterDuke timotimo: have you seen www.phoronix.com/scan.php?page=new...Time-Trace ? not directly useful to us i assume, but maybe some stuff to take inspiration from
timotimo ah, interesting 17:43
18:24 domidumont left
AlexDaniel here's a very weird ticket: github.com/rakudo/rakudo/issues/2805 18:55
timotimo if spesh_nodelay makes it bork, it could surely be a spesh optimization bug
MasterDuke seems like some of the people in this channel could have a relevant comment here news.ycombinator.com/item?id=19535564 18:56
Geth MoarVM: 4900b7a212 | (Timo Paulssen)++ | src/6model/6model.c
guard 6model_get_how against null pointers

MVMSpeshLog is one example where this happens. Extremely unlikely to appear in user code, but it does in the profiler (what with being deallocated and everything)
MoarVM: 95094ae2e6 | (Timo Paulssen)++ | 7 files
profiler: count objects being deallocated

split this statistic into "deleted while in nursery and not seen before", "deleted while in nursery, but seen in a previous GC run", and "deleted while in the gen 2".
Also, the stats are per-GC-run.
MoarVM: 3a4a47284d | (Timo Paulssen)++ | src/profiler/instrument.c
make this code a little prettier
MasterDuke timotimo++ 19:00
19:17 zakharyas left 20:04 robertle left 20:48 brrt joined
brrt \o 20:48
MasterDuke: interesting link, thank you 20:49
21:03 brrt` joined 21:05 brrt left 21:13 brrt` left 22:02 brrt` joined 22:18 brrt` left 23:28 lucasb left