github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:32 fake_space_whale left 01:00 lizmat joined, lizmat left 04:54 statisfiable6 left, greppable6 left, nativecallable6 left, unicodable6 left, bloatable6 left, notable6 left, undersightable6 left, squashable6 left, releasable6 left, committable6 left, evalable6 left, shareable6 left, bisectable6 left, coverable6 left, quotable6 left, reportable6 left, benchable6 left, greppable6 joined, reportable6 joined, nativecallable6 joined, committable6 joined 04:55 benchable6 joined, evalable6 joined, releasable6 joined, bisectable6 joined 04:56 unicodable6 joined, coverable6 joined 04:57 undersightable6 joined, statisfiable6 joined, notable6 joined, quotable6 joined 04:58 bloatable6 joined, squashable6 joined 04:59 shareable6 joined 05:22 robertle left
nwc10 good *, #moarvm 06:54
06:57 domidumont joined 07:26 Geth joined 07:57 lizmat joined 08:17 zakharyas joined 08:20 robertle joined 08:32 fake_space_whale joined 09:16 sena_kun joined 09:19 lizmat_ joined 09:22 lizmat left 09:27 lizmat_ is now known as lizmat 10:13 domidumont left 10:57 zakharyas left
timotimo there may not have been a geth announcement, but i just pushed some stuff 11:16
11:19 lizmat left
MasterDuke timotimo: to where? 11:27
timotimo: btw, any thoughts on github.com/perl6/nqp/pull/532 ? 11:30
timotimo github.com/MoarVM/MoarVM/commit/b1...bc1b1ec9b4 11:31
(and the commits before and after that)
12:01 domidumont joined, domidumont1 joined 12:05 domidumont left 12:08 lizmat joined
timotimo invested a little bit of time into making the heap snapshot profiler faster 12:23
the pauses are still definitely noticable
hmm. if there were an additional thread, it could perhaps offload writing the file out onto it 12:24
MasterDuke: could you put in a little heuristic that selects instrumented when the filename ends in .html, .json, or .sql and heap when it ends in .mvmheap? 12:28
i should perhaps put that on the ticket 12:31
12:54 lucasb joined 13:09 zakharyas joined 13:20 domidumont joined 13:23 domidumont1 left 13:33 squashable6 left 13:35 AlexDani` joined 13:37 squashable6 joined 13:41 AlexDani` is now known as AlexDaniel, AlexDaniel left, AlexDaniel joined 13:57 domidumont1 joined 14:01 domidumont left 14:28 domidumont joined 14:31 domidumont1 left 15:12 robertle left
timotimo latest piece of fun is that it's crashing while trying to free a heap snapshot while doing a long-running process :| 15:16
oh, this time it was segfaulting while gc-marking some hash 15:18
gc-marking while doing the heap snapshot recording, that is 15:19
15:37 lizmat left 15:39 lizmat joined 15:59 zakharyas left 16:29 fake_space_whale left 16:30 domidumont left
nine In case anyone is tempted to do a MoarVM release, please wait 16:52
Seems like another regression crept in, killing reproducibility of build. 16:53
jnthn nine: Is there any way we can write a test in say, the Rakudo `make test`, that would catch some such cases? 16:56
It seems it's an easy thing to regress without noticing
timotimo can we get something on CI that checks if builds are reproducible? 17:00
jnthn Well, if we write a test, it will be on CI :) 17:01
dinner & 17:02
nine jnthn: I guess so, yes
timotimo someohw i managed to not read what jnthn wrote there 17:03
17:11 travis-ci joined
travis-ci MoarVM build errored. Jonathan Worthington 'Better error handling of process stdin writes 17:11
travis-ci.org/MoarVM/MoarVM/builds/525038883 github.com/MoarVM/MoarVM/compare/2...1779ac4e7f
17:11 travis-ci left
nine jnthn: it's 146ede292 (HEAD, refs/bisect/bad) Start explicitly marking out mixin types 17:29
Ah! I'm pretty sure it's the lexicals to locals debug map 17:35
17:39 lizmat left
timotimo oh, is it hash-ordering-dependent? 17:47
nine yes 17:49
github.com/MoarVM/MoarVM/commit/8e...d3b649d666 17:51
Fix lexical to locals debug_map getting written to bytecode files in ā€¦
ā€¦random order
Will maybe need a rebootstrap to have a real effect, but probably not 17:52
Alas, there seems to be yet another issue still 17:58
18:07 travis-ci joined
travis-ci MoarVM build passed. Stefan Seifert 'Fix lexical to locals debug_map getting written to bytecode files in random order 18:07
travis-ci.org/MoarVM/MoarVM/builds/525059189 github.com/MoarVM/MoarVM/compare/7...b232dbcc11
18:07 travis-ci left 18:47 robertle joined 19:52 Kaypie joined, Kaiepi left
dogbert17 timotimo: interested in a gist with valgrind output? 21:00
if so take a look at this: gist.github.com/dogbert17/035adc66...12a8e71783 21:01
timotimo oh, huh, that's very odd 21:02
these arrays that the profiler is creating, they should all be rooted properly 21:05
i might have found the problem 21:10
21:11 lizmat joined
timotimo dogbert17: could you go to src/profiler/instrument.c and switch lines 827 and 829? 21:11
dogbert17 sure
i.e. MVM_gc_worklist_add... before mark_gc_entries... if I understand you correctly 21:13
timotimo yes 21:16
the code as it was until now would put the collected data (i.e. what you get back after the profiler finishes) into a worklist, but only after it was used, immediately before it was freed 21:17
so it never mattered
so the root object that all data was pushed into by the instrumented profiler data dumper would go into an array that had already been considered dead and freed, or something like that 21:18
dogbert17 timotimo: it doesn't seem to be enough :( gist updated, scroll down a bit 21:22
hopefully I did something wrong 21:25
timotimo i don't think you did :( 21:27
i'm not sure i understand how the order of events goes in this :\ 21:29
oh 21:32
i ... might know what this could be about
yeah 21:34
ok, so here's what i think happens
the whole structure is rooted just fine 21:35
however
it gets created after everything has been marked, but before unmarked gen2 stuff gets freed
so the stuff that gets created for the whole datastructure doesn't get the "was seen" bits set 21:36
OK, want to try another thing? 21:37
dogbert17 timotimo: can do 21:38
timotimo in src/gc/orchestrate.c i moved the lines MVM_profile_dump_instrumented_data(tc); and MVM_profile_heap_take_snapshot(tc); to line 248, which is before "mark thread free to continue" 21:39
dogbert17 sure, should I revert the earlier fix while I do this or do you want to keep it? 21:40
timotimo no, keep that one, too
dogbert17 ok
timotimo it may end up not mattering whether that line is even there at all, but the way i had you change it was definitely less wrong 21:41
dogbert17 the rows that I should move are they around line 190? 21:44
timotimo yep
dogbert17 preliminary findings are interesting, the valgrind error seems to have disappeared 21:49
but the following message is now shown instead: Writing profiler output to profile-1556315291.2307668.html - Some exceptions were thrown in END blocks: X::AdHoc: This representation (VMArray) does not support associative access (for type BOOTArray) in any <main> at /home/dogbert/repos/rakudo/perl6.moarvm line
timotimo oh 21:54
i wonder if i accidentally put something in moar but not in nqp?!
i know the profiler is very annoying to get backtraces for :( :(
oh, actually
it's probably easy to gdb the process, set a breakpoint for the line that throws that adhoc exception there, and then call MVM_dump_backtrace 21:55
dogbert17 I could try that 21:56
it seems the be in the interestingly named function 'static void die_no_ass' 21:58
timotimo %)
that'd be the one
dogbert17 recompiles moarvm with --no-optimize 22:00
timotimo: gist updated 22:03
timotimo can you find out what the key is? 22:06
should be able to see it when you print *key, i'd think
also, what's line 512 in your stage2/NQPHLL.nqp? 22:08
dogbert17 (gdb) p *key - $2 = {header = {sc_forward_u = {forwarder = 0x0, sc = {sc_idx = 0, idx = 0}, st = 0x0}, owner = 1, flags = 16, size = 48}, st = 0x66dcb0} 22:10
timotimo oh, is that just a MVMObject?
in that case, p *((MVMString *)key)
dogbert17 as for line 512: 511 # Post-process the call data, turning objects into flat data. 512 for $data { 513 if nqp::existskey($_, "call_graph") { 22:12
timotimo can you put an nqp::ishash($_) && in front of that, just to see what happens? 22:13
dogbert17 (gdb) p *((MVMString *)key) - $1 = {common = {header = {sc_forward_u = {forwarder = 0x0, sc = {sc_idx = 0, idx = 0}, st = 0x0}, owner = 1, flags = 16, size = 48}, st = 0x66e0c0}, body = {storage = {blob_32 = 0x1b70060, 22:15
blob_ascii = 0x1b70060 "call_graph\215\004", blob_8 = 0x1b70060 "call_graph\215\004", strands = 0x1b70060, any = 0x1b70060}, storage_type = 2, num_strands = 0, num_graphs = 10,
cached_hash_code = 14322284749794657829}}
22:15 mtj_ left
timotimo right-o, so that's in fact that line 22:15
dogbert17 change to this? if nqp::ishash($_) && nqp::existskey($_, "call_graph") { 22:19
22:20 lizmat left 22:23 mtj_ joined, sena_kun left
timotimo yeah 22:25
dogbert17 I guess I will have to build and install nqp after that change 22:27
timotimo yes, and rakudo, too 22:28
sadly ...
dogbert17 ah 22:29
timotimo i'll be afk for a little bit 22:31
dogbert17 ok 22:32
doing the change in 'stage2/NQPHLL.nqp' was a mistake :) 22:34
timotimo oh, i should have said that 22:39
dogbert17 if I did this correctly (I might have) the error is still present but the stacktrace looks different 22:41
at gen/moar/stage2/NQPHLL.nqp:220 (/home/dogbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:post_process_thread_data)
from gen/moar/stage2/NQPHLL.nqp:513 (/home/dogbert/repos/rakudo/install/share/nqp/lib/NQPHLL.moarvm:dump_instrumented_profile_data)
timotimo i think i'll look more closely at this tomorrow 22:42
we already got a lot further, that's nice
dogbert17 thanks, I also need a nap
good night and sleep well 22:43
timotimo same to you 22:52
23:47 MasterDuke left 23:53 lucasb left