github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
[Coke] yup, wasn't really expecting to find anything. no worries. 00:15
00:42 lucasb left 00:46 farcas1982regreg joined 00:50 sena_kun joined 00:52 Altai-man_ left 02:49 Altai-man_ joined 02:51 sena_kun left 04:50 sena_kun joined 04:52 Altai-man_ left 06:21 squashable6 left 06:23 squashable6 joined 06:49 Altai-man_ joined
nwc10 good *, #moarvm 06:52
06:52 sena_kun left
japhb good *! :-) 06:56
07:53 zakharyas joined 08:33 Ven`` joined 08:37 farcas1982regreg left 08:38 farcas1982regreg joined 08:45 AlexDaniel left 08:47 Kaeipi joined, Kaiepi left 08:50 sena_kun joined 08:52 Altai-man_ left 10:49 Altai-man_ joined 10:52 sena_kun left 12:50 sena_kun joined 12:51 zakharyas1 joined 12:52 Altai-man_ left, zakharyas left 13:29 zakharyas1 left 13:30 zakharyas joined 13:38 Ven`` left 14:02 AlexDaniel joined, AlexDaniel left, AlexDaniel joined 14:11 zakharyas left 14:21 zakharyas joined 14:33 sena_kun left 14:34 sena_kun joined, sena_kun left 14:35 sena_kun joined 14:49 Altai-man_ joined 14:51 sena_kun left 15:04 zakharyas left 15:09 zakharyas joined 16:50 sena_kun joined 16:51 Altai-man_ left
MasterDuke hm, my other commits in github.com/MoarVM/MoarVM/pull/689 are all fine (nqp and rakudo build and pass tests), but github.com/MoarVM/MoarVM/pull/689/...afce887545 dies in the nqp build almost immediately 17:14
any thoughts? 17:15
17:44 zakharyas left
timotimo did you see that the bytes value gets changed between where there was malloc and where there is fixed_size_alloc now? 18:02
MasterDuke well yeah, i think that change should happen regardless. now i'm allocated the correct amount, before it could have been allocating more than it needs 18:04
timotimo right 18:05
what does the crash look like? 18:06
did you try to run it with valgrind support configured and then run it through valgrind? 18:07
it should give details like "used wrong size / allocator" and such
18:11 patrickb joined
timotimo MasterDuke:i don't know what calls read_bytes, but perhaps there's a spot missing where it sets the flag on the object that it uses the fsa? 18:12
oh it's literally right there
are there other read_bytes impls than just syncfile? 18:13
oh 18:14
i might have seen it
MasterDuke: your buf is **, but you realloc it as if it were *buf
same for the free actually perhaps? 18:15
i mean, before the change even?!
no, i'm dumb, buf and buf_out aren't the same 18:16
there's also syncsocket reading that also offers a sync_readable, but doesn't FSA yet, but it would be slightly surprising to have that happen early in the nqp build at all 18:18
i'll build it locally and see if i can find out anything 18:25
MasterDuke timotimo: gist.github.com/MasterDuke17/07db0...beb90f017d 18:28
thought you had something at first with the **, but not quite that simple
timotimo ooh 18:30
MasterDuke Decoder?
timotimo you're not using the return value of MVM_fixed_size_realloc
to update the buf pointer
MasterDuke doh 18:31
timotimo i didn't see it either :)
can we annotate the function so we get an extra nasty warning if we discard the return value?
MasterDuke there is a way, libtommath does that 18:32
nqp just built, on to rakudo... 18:33
rakudo built, on to a spectest 18:35
spectest passed. timotimo++ 18:38
timotimo cool
MasterDuke now come the even more complicated changes. normalization, decoding, etc 18:41
oh, so close. next changes die during the rakudo install 18:45
18:49 Altai-man_ joined
timotimo the next changes that aren't on github yet you mean? 18:50
18:51 sena_kun left
MasterDuke yeah. i can push them if you're willing to take a look 18:54
19:15 discoD joined
timotimo i may not have terribly much time to look into it, but maybe i can help 19:17
MasterDuke pushed 19:20
19:21 farcas1982regreg left
discoD To get line coverage reports, do I just build with --coverage then set MVM_COVERAGE_LOG & MVM_COVERAGE_CONTROL? I've been using a pintool to test coverage in a function, but it's a royal pain. 19:24
MasterDuke pretty sure you don't need MVM_COVERAGE_CONTROL if you want coverage of everything 19:25
it's only so you can turn it on/off later if you want
timotimo -i think --coverage in moarvm is for C-level coverage, the kind that gcc and clang can give you
you'll only need the coverage log env var, the other one is for extra control 19:26
discoD c-level coverage would be wonderful compared to what i've got
can you limit it to certain functions by any chance? 19:27
i'm looking into the utf8_c8 decoder, so that's all i really care about at the moment 19:28
timotimo you can check the .travis.yml for how we generate C coverage on the CI
discoD ok, thanks
timotimo github.com/samcv/moarvm-cover 19:30
discoD that's great. thanks again 19:34
19:35 zakharyas joined 19:37 vesper joined
timotimo MasterDuke:i wonder if "multiplied with sizeof codepoint" and "not multiplied" are getting mixed up somehow? 19:38
in normalize.c at the bottom, i.e. line 200 and around 19:39
could maybe_grow_result realloc the buffer but orig_alloc is not being updated?
MasterDuke oh, hm... 19:41
timotimo you could potentially output the pointers that come out of alloc with their sizes and the pointer and old size and new size coming in and out of realloc and then into free 19:42
or set the fsa debug mode
which checks the values automatically
nine So....can MVMCompUnits ever be allocated in the nursery? Part of the code thinks so as they are sometimes MVMROOTed 19:59
lizmat nine: I assume a BEGIN block is a compunit, but one of which the codegen should not be kept? 20:00
so maybe allocated in the nursery ? 20:01
ah, and constant definitions as well ?
nine The only place I find that allocates an MVMCompUnit is MVM_cu_from_bytes and it does so in gen2 20:02
I think most of check-root.py's value actually comes from it using the list of allocating functions I generated with cflow. It's really surprising what functions can enter the GC. And who can keep a list of 507 functions in their head when reviewing code? 20:08
MasterDuke nine: sounds like a good list to compare against the oplist and see if anything still needs to be added to the profiler (or if anything should be removed) 20:09
lizmat nine: feels like some introspection on such functions would be nice, like "can you enter GC" ? 20:10
nine lizmat: yes, that's what I want to have at some point. Possible via a custom attribute 20:11
Now who sees the GC violation in this statement? MVM_ASSIGN_REF(tc, &(sf->common.header), sf->body.static_env[lex_idx].o, MVM_sc_get_object(tc, sc, read_int32(pos, 8)));
MasterDuke timotimo: are those extra reallocs i added even needed (though i was getting the same errors before i added them)? freeing just cares about the current size, which it can get from body.elems 20:15
nine Spoiler alert! The compiler turns this call into: 20:17
_233 = read_int32(pos, 8); _234 = (long int) _233; _r = MVM_sc_get_object(tc, sc, _234); sf.80_235 = sf; _236 = &sf.80_235->common.header; MVM_gc_write_barrier(tc, _236, _r); sf.81_237 = sf; _238 = sf.81_237->body.static_env; _239 = (long unsigned int) lex_idx; _240 = _239 * 8; _241 = _238 + _240; _241->o = _r;
So the GC triggering MVM_sc_get_object function is called, before the moveable sf variable is accessed. 20:18
Turns out, a C compiler is much better at reading C than your average developer. Who'd have thought?
Geth MoarVM/gcc_root_checker_plugin: 5 commits pushed by (Stefan Seifert)++ 20:24
jnthn nine++ 20:25
Impressed by how much the plugin finds. 20:26
nine Well for those who are curious, this is the full list of still existing candidates: gist.github.com/niner/f389fe6ebf43...924da4b544 20:28
Deserialization and the profiler allocate in gen2 directly, so those are false positives. The rest turns out to be very much worth looking at 20:29
And the list of 507 GC triggering functions may be outdated. I generated it in September and am not quite sure anymore how I did that... 20:30
Btw. would a JITed version of getlexouter ever have to deal with the situation that the lexical was not found? 20:38
If not, I could fix that but without having to MVMROOT 20:39
20:50 sena_kun joined 20:52 Altai-man_ left 21:02 zakharyas left 21:17 patrickb left 21:27 farcas1982regreg joined 22:49 Altai-man_ joined 22:52 sena_kun left