00:54 Geth joined 01:38 agentzh joined 02:18 agentzh joined 02:48 ilbot3 joined 03:53 ggoebel joined 05:18 pyrimidine joined 05:57 agentzh joined 07:52 pyrimidine joined 09:11 pyrimidine joined 09:22 pyrimidine joined 09:59 agentzh joined 10:23 pyrimidine joined
Geth MoarVM: 824644ef04 | (Jonathan Worthington)++ | docs/ChangeLog
ChangeLog for 2017.02 release.
11:44
MoarVM: f319a3659a | (Jonathan Worthington)++ | VERSION
Bump VERSION.
11:49
timotimo the changelog looks kind of short, huh. 11:52
but the big crash-fixes don't get more than one line, so ... that's probably why 11:53
wait, jnthn
isn't the data section for jit code only in the exprjit?
or did i misunderstand the original commit?
jnthn No 11:54
It's in master
timotimo oh!
neat
jnthn The changelog comes from a git log output :)
It may be used more widely in exprjit, but it fixes a memory leak
(in master)
timotimo i didn't even know! awesome!
(about the leak)
jnthn Which is nice, 'cus I also nailed the other missing bit of Rakudo cleanup this month (in repossession) 11:55
So a perl6-valgrind-m -e '' is now clean with no missing cleanup reported :)
yay, clean spectest
timotimo <3
dogbert17 new release, cool 11:56
timotimo yup yup 11:57
jnthn www.moarvm.org/releases/MoarVM-2017.02.tar.gz 11:58
dogbert17 does any of you have any theories about the harness6 SEGV which was discussed yesterday?
or any ideas as how to debug this further 11:59
jnthn Been pondering how we might prove/disprove the double-release theory
Or hunt down how it happens
dogbert17 listens
jnthn It occurred to me we could set a bit in the object header of decode streams when we free them 12:00
And then whine if we see that added to the worklist
(Something with that header bit set, that is)
dogbert17 like MVM_panic (for whining that is)
jnthn Yeah 12:01
Just like the other checks we do in add_to_worklist when GC debug mode is turned on
dogbert17 if that works do you think enough info will be available or is it 'too late' in the process
I don't know how/where to set that bit I can volunteer to test it 12:03
jnthn If it finds something, it'll be at the very least a further clue of where to look next 12:04
dogbert17 cool
so where should that fix be made (the extra bit and the whine :) 12:06
timotimo did you know that valgrind lets you find pointers to a memory location?
i think we can even do that from code
jnthn timotimo: No? Hmm :)
timotimo so we could do something insane like "when some place frees a pointer, find everything else that points at it"
... "and set the lowest bit to 1 for later complaining"?
having that bit set is probably more trouble than it's worth? 12:07
jnthn Well, if there are any pointers to an object we are about to free then something is already wrong
timotimo true
okay, maybe you can only find things pointing to a location with the gdbserver part of valgrind 12:08
where the heck did i read about that feature? i can't seem to find it 12:10
i must have hallucinated that?! 12:11
12:11 travis-ci joined
travis-ci MoarVM build errored. Jonathan Worthington 'ChangeLog for 2017.02 release.' 12:11
travis-ci.org/MoarVM/MoarVM/builds/202912049 github.com/MoarVM/MoarVM/compare/5...4644ef04e5
12:11 travis-ci left
timotimo bad changelog! bad, bad changelog! 12:12
dalek href="https://moarvm.org:">moarvm.org: ad92bd5 | jnthn++ | / (2 files):
Update website for release.
12:17
yoleaux2 24 Jan 2017 15:38Z <AlexDaniel> dalek: Please switch this bot to Geth
28 Jan 2017 16:40Z <AlexDaniel> dalek: Please switch this bot to Geth
jnthn www.moarvm.org/ # look, it's secure :) 12:18
Failure above is just a wedge while doing it pull, it seems 12:19
timotimo yeah
Geth moarvm.org: ad92bd5aca | jnthn++ | 2 files
Update website for release.
12:21
jnthn There we got, another dalek straggler updated :)
*go
dogbert17 wrt the 'double-release' bug, I got a different MVM_backtrace yesterday, dunno if it provides any clues though: gist.github.com/dogbert17/6cb41a1d...8ee886bfe4 12:26
timotimo huh, that's not a double-free or anything, that straight-up crashes 12:27
you don't have that session or the core dump any more, do you? 12:28
dogbert17 nope :( but I can rerun and hope for the best
but yes, this was a SEGV 12:29
jnthn lunch; bbiab
moritz hhvm.com/blog/2017/02/17/region-jit.html 12:30
timotimo it'd be interesting to see what pointer was 0 (or whatever other bad address)
dogbert17 would that have been possible if I had the gdb session running? 12:31
timotimo: if you have some cool hardware nearby you try a 'make spectest HARNESS_TYPE=6 TEST_JOBS=5+' 12:33
timotimo yeah, sure
i will
you just attach gdb to the process via pid after starting it? 12:34
dogbert17 yes
Geth MoarVM/vmhealth: 60e3096605 | (Timo Paulssen)++ | src/moar.c
vmhealth: guard against lack of event loop thread
timotimo when you run it via valgrind, do you do anything in particular to prevent the test files themselves to be valground? 12:35
dogbert17 haven't figured out a way to do that :( 12:38
timotimo hehe. 12:39
well, a clean way would be to allow the harness to get passed a different command to invoke than $*PROGRAM-NAMe or whatever it uses
i wanted to propose using "instrumentation off at program start", but i think that option is only available for callgrind, not for memcheck 12:40
dogbert17 I guess I'll start another run myself as well, can always do something alse while it runs 12:46
timotimo i put in a super evil hack 12:59
class SourceHandler::Perl6 does SourceHandler::Proc {
- submethod BUILD(:@incdirs, Str:D :$!path = ~$*EXECUTABLE) {
+ submethod BUILD(:@incdirs, Str:D :$!path = ~$*EXECUTABLE ~~ s/-valgrind//) {
in lib/Tap.pm6
oops, wants quoting
takes a long time to reach the syntax error stage because it precompiles before doing anything much 13:00
no, it still runs all tests through valgrind 13:04
aha! 13:07
harness6 has a "perlpath" commandline argument
oh wow 13:13
it basically immediately exited with MoarVM panic: use of invalid eventloop work item index -1
but it shows 0 errors for all those processes it started ... 13:14
oh, it is because my perl path was wrong 13:18
the file doesn't exist and therefor it panics
pretty bad
13:19 Ulti joined, Ulti left
timotimo hah 13:23
it's sloooow
i have test jobs set to a high number, but apparently the harness is so slow that it only runs one process at a time :D 13:24
since valgrind causes threads to be serialized (if i recall correctly) it might be a better idea to reduce the number of test jobs a bit
i expect it still leads to a massive decrease in total cpu time used anyway 13:30
and hopefully it also still provokes the failures 13:31
dogbert17 I have been able to run many times with TEST-JOBS=2,3 without anything going wrong 13:35
timotimo OK 13:38
i'm at 6 right now
already is S14
in*
dogbert17 my first run with 5 worked without a hitch 13:39
insidious bug
dogbert17 crash dammit 13:50
14:01 agentzh joined 14:37 camelia joined 15:05 zakharyas joined 15:15 lizmat joined
dogbert17 timotimo: got a SEGV again 15:25
gist.github.com/dogbert17/71bd542c...0bf44dae61 15:27
timotimo how often has it been the decodestream so far? 16:19
dogbert17 timotimo: every time 16:20
timotimo OK, so next step might be to put debug stuff in there ...
dogbert17 any suggestions, i.e. what to look for 16:21
timotimo not really, no :(
dogbert17 and jnthn has fallen asleep :)
timotimo at the point of the free, most of the interesting data has been thrown away
16:21 pyrimidine joined
timotimo (well, not really, just marked as "to be reclaimed", but still ...) 16:21
dogbert17 does that mean we have to back up a step on the stack, to gc_free? 16:25
timotimo i'm interested in the chunks that it deallocates there 16:27
these while loops follow a linked list of chunks that each hold a pointer to a buffer of bytes
dogbert17 yes 16:28
I wonder how often MVM_string_decodestream_destroy is called 16:39
moritz add a printf("42\n"), recompile, run, count :-)
timotimo yeah %) 16:40
also, be extra sure to only count it in the harness, not the testing processes
argh! 16:45
i got it to error, but tmux kept less than 2000 lines of scrollback around >:(
oh, that's just global destruction
OK, that's no problem
ok, turned off --full-cleanup and upgraded the backscroll to 4000 lines 16:47
well, i asked for 5000, but whatever
dogbert17 it's too often for comfort :) 16:48
17:50 ggoebel joined 18:02 agentzh joined 18:34 agentzh joined
timotimo it's not crashing ... 18:53
dogbert17 quite annoying 18:59
are you using gdb or valgrind? 19:01
timotimo valgrind
dogbert17 what about ASAN? 19:02
timotimo *shrug*, could try that 19:03
in theory i could probably run one spec test per core
dogbert17 at least it's faster
timotimo uuuh, weird 19:05
when i pressed ctrl-z, it landed in some process, but not the main one
now i'm running two in parallel 19:06
dogbert17 weird
timotimo and a third for good measure
geekosaur odd. it should go to all of them 19:11
hm, depends. all processes in the foreground process group, but if something is starting them in distinct process groups then all bets are off 19:12
timotimo :D 19:13
19:49 zakharyas joined, pyrimidine joined
timotimo ah, global destruction 21:54
curses!
i don't know why. it's not in the valgrind script .. oh! 21:55
i didn't copy that script, i don't think
since vmhealth is part of a pull request, i feel entitled to a rebase upon latest master 21:59
Geth MoarVM/vmhealth: 9 commits pushed by (Timo Paulssen)++ 22:00
timotimo what combinations of thread state and "is blocked for gc" do we have? 22:53
dogbert17 timotimo, jnthn: got it with ASAN, looks slightly different/better/worse: gist.github.com/dogbert17/eaba7dfc...b1748fbe23 23:12
timotimo oh, huh, that's interesting 23:14
maybe we have some logic error in discarding bytes from a decodestream
like, maybe an off-by-one somewhere
or an edge case like when we had the memory regions for frames 23:15
dogbert17 looks quite suspicious, so part of decodestreams are freed outside of gc? 23:16
timotimo well, a decodestream owns a bunch of buffers 23:17
remember that linked list w etalked about?
dogbert17 yes 23:19
timotimo i would assume that's what got freed in discard_to first, then later in freeing the object itself 23:20
dogbert17 could be that something isn't nulled? 23:25
timotimo potentially 23:26
dogbert17 well at least it feels as if we're zooming in on the right piece of code 23:34
timotimo yup 23:44
i couldn't look closer, people around me were distracting me 23:45
ugh, internet connection is dropping all the time 23:47
dogbert17 uh oh
timotimo so yeah, you looking at this code, too? 23:49
line 76 of decode_stream.c?
dogbert17 I have it in front of me 23:50
that's the line
timotimo yeah 23:51
discard->bytes somehow survives 23:52
dogbert17 but how
timotimo yup 23:53
i mean, we can set it to a bogus value and see what happens 23:55