00:15
Ven joined
01:21
tokuhiro_ joined
|
|||
dalek | arVM: fc4043f | hoelzro++ | Configure.pl: Document ASAN_OPTIONS |
02:54 | |
04:03
lizmat joined
04:14
TimToady joined
04:46
xiaomiao joined
04:53
tokuhiro_ joined
05:18
tokuhiro_ joined
07:21
tokuhiro_ joined
07:56
xiaomiao joined
08:45
domidumont joined
09:34
domidumont1 joined
10:16
vendethiel joined
10:24
domidumont joined
11:04
kjs_ joined
11:22
tokuhiro_ joined
11:37
Ven joined
11:39
kjs_ joined
11:46
Ven joined
12:30
Ven joined
12:46
Ven joined
13:00
Ven_ joined
13:02
Ven__ joined
13:15
Ven joined
13:30
Ven joined
13:31
brrt joined
|
|||
brrt | good * | 13:33 | |
ehm, i saw something worrying about segv and strawberry perl | |||
which makes me think of windows | |||
for, ehm, obvious reasons | 13:34 | ||
i wonder if i still have a windows iso around | 13:35 | ||
oh, it was cygx | 13:38 | ||
i do not, currently, have a windows iso :-( | |||
brrt wonders if it more trouble to get a new one than to load it from the backup disk | |||
timotimo | you're a student, are you not? | 13:44 | |
usually students get access to a portal of microsoft stuff where they can get ... oh, wait | |||
you need a windows to run the downloader ... | |||
brrt | oh, i have an evaluation iso alright | 13:45 | |
it's just stashed somewhere | |||
13:46
Ven joined
13:48
kjs_ joined
|
|||
timotimo | mhh | 13:51 | |
14:03
Ven joined
14:16
Ven joined
14:19
kjs_ joined
14:35
brrt joined
|
|||
brrt | ehm, i can kind of see why code *should* crash :-) | 14:36 | |
timotimo | all code should always crash | 14:37 | |
what are you refering to here, though? | |||
also, did you have a chance to look at my latest jit patch? it's potentially wrong :| | |||
brrt | the one one master | 14:38 | |
it is certainly wrong :-) | |||
let's see; | |||
timotimo | aha! | 14:39 | |
brrt | line 1997, compare TMP2 with FUNCTION, while TMP2 is not set | ||
timotimo | when i was working on this my eyes kind of glazed over :( | ||
so having a clean spec test run was enough for me | |||
will you commit&push a fix or shall i do the honors? | 14:40 | ||
um | |||
brrt | i'll fix | ||
timotimo | no | ||
TMP2 is set | |||
brrt | there is more | ||
timotimo | TMP2 gets set to get_spesh_slot(blah) in front of the switch | 14:41 | |
brrt | ah, tmp2 is spesh_idx | ||
timotimo | right | ||
brrt | you're right | ||
timotimo | the code is largely copy-pasted from one of the other guard ops there with only a few adjustments made (or rather: needed) | 14:45 | |
brrt | i see | 14:49 | |
whoever did design a function call within a guard... | |||
14:49
Ven joined
15:09
tokuhiro_ joined
15:19
kjs_ joined
15:21
tokuhiro_ joined
|
|||
psch | hm, how do i make sense of --dump output..? :S | 15:42 | |
15:42
zakharyas joined
|
|||
psch | well, what i can see is that it seems to confirm what i saw inside gdb, which is that a getlex is looking two frames outwards, but only one exists | 15:44 | |
although the getlex call doesn't appear there, but from the <main> frame there's only one outer, and no inner... | 15:45 | ||
15:48
kjs_ joined
|
|||
timotimo | psch: oof. in general i find the spesh output more readable, but if you're getting lexes for wrong outers, spesh itself will probably asplode before it dumps a spesh graph | 15:49 | |
psch | another thing i can't make sense of is "checkarity 1, -1" calls, but they also appear in non-breaking code so i guess that's fine... | 15:51 | |
timotimo | with a constant number? | ||
oh, of course | |||
psch | yeah, literal as quoted | 15:52 | |
timotimo | checkarity uses the current routine's argument buffer | ||
to figure out if the arguments make sense for the given routine's signature | |||
psch | ...that doesn't really help :D | ||
but yeah, it's probably not it, in any case | 15:53 | ||
how do i get the spesh output? 'cause i guess it's worth a try | |||
timotimo | env MVM_SPESH_LOG=some_filename.txt | ||
psch | that's nearly 100k lines o.o | 15:56 | |
timotimo | yeah | 15:58 | |
you'll want to search for the name of the frame you're interested in | |||
psch | hm, --dump seemed to suggest the frame i'm looking for is <main>, but that's not in the log | 16:00 | |
i don't see any line annotation for the method i'm looking for either | |||
nor its prot | |||
+o | |||
timotimo | hm. you can search for line numbers %) | ||
psch | yeah, that's what i mean :P | 16:01 | |
timotimo | oh | ||
damn | |||
is there a lot of code to reproduce your problem? | 16:02 | ||
like any local patches? | |||
psch | i suppose that mean i don't reach the bit i care about, 'cause that throws an adhoc, right? | ||
timotimo: it's nine++'s bool_enum branch | |||
timotimo | mhm | ||
well, if the exception happens before spesh got a chance to run the code a bunch of times, then yeah, it won't be in the output | |||
psch | all i changed was another null check for f in getlex | ||
in interp.c that is | |||
+add | |||
timotimo | you can still run that code in a for loop and just catch that exception | 16:03 | |
that'll probably make it spesh | |||
psch | ahh, yes | 16:04 | |
i now at least see the findmethod for .pick | |||
timotimo | brrt: is there anything obvious we can do to make gdb not get so surprised by jit-related backtraces? | 16:07 | |
psch | hm, so the getlex is for &EXHAUST, apparently | 16:10 | |
timotimo | oh | ||
that's for how we do return from inner scopes or something | 16:11 | ||
psch | iirc the contents of the SEGVing method don't even matter | 16:12 | |
as in, it should run self.^enum_value_list.pick($n), but even with just True or something it also SEGVs | |||
timotimo | hurgh? | 16:13 | |
psch | well, i'm rebuilding to confirm :S | ||
ah, no, i was wrong about that. phew :P | 16:17 | ||
timotimo | i should have a new look at the "spesh diff" tool i once wanted to make, but which was way too slow | 16:18 | |
last time i looked wasn't only before the GLR. | |||
brrt | sorry, was off | 16:19 | |
we should look at gdb spesh integration | 16:20 | ||
16:20
domidumont joined
|
|||
timotimo | well, what kind of thing would that be? some API gdb offers? or making our jit frames formed more "traditionally"? | 16:21 | |
brrt | yes, gdb has an api | 16:24 | |
i mean gdb jit integration | |||
timotimo | oh | ||
brrt | sourceware.org/gdb/onlinedocs/gdb/...rface.html | 16:26 | |
psch | building sub form of pick instead of method form now... curious what happens :S | ||
'cause that should introduce another outer, maybe all is fine then :P | |||
timotimo | brrt: so my jit code for the new guards isn't broken? well, at least it's not obviously broken :) | 16:29 | |
brrt | oh yes, it is still broken | 16:30 | |
i'm just running a spectest | |||
and finding that my rakudo is outdated | |||
timotimo | damn | ||
16:32
Ven joined
16:33
kjs_ joined
|
|||
dalek | arVM: 4d19b3f | brrt++ | src/jit/emit_x64.dasc: Bugfix in sp_guardrw(conc|type) We should test rax (RV) for results; and treat values as invalidated after a call. |
16:33 | |
timotimo | oh, good. thanks for the fix! | 16:34 | |
brrt is currently spectesting and intalling vs2013 | |||
yw :-) | |||
easy enough to happen, i think | 16:35 | ||
timotimo | spectest vs2013? i didn't know they had a perl6 compiler! | ||
brrt | spectesting, comma, and installing vs2013 :-P | 16:37 | |
timotimo | :) | ||
brrt | except for hanging sockets, this works cleanly for me | 16:38 | |
psch | hrm, sub form pick SEGVs, explicit return SEGVs | 16:42 | |
which means the problem is probably actually below NQP level..? | |||
timotimo | that's possible | 16:43 | |
psch | as in, the SEGV isn't from a check that's missing, but because moar is doing something actually wrong | ||
(if that makes sense...) | |||
timotimo | did you try turning off spesh for this yet? | ||
psch | yeah | ||
timotimo | if turning off spesh makes things work i'm sure it's my fault things go wrong :D | ||
psch | well, it doesnt :P | ||
timotimo | phew | 16:44 | |
brrt | sourceware.org/gdb/onlinedocs/gdb/...Debug-Info < this is of interest, i think | ||
16:47
Ven joined
|
|||
brrt | stackoverflow.com/questions/4418708...ed-strings | 16:53 | |
haven't seen the right answer yet | |||
the right answer is 'CPUs' | |||
timotimo | with a null-terminated string you can have strings of any length you want, without having to invent an open-ended varint format to encode the size | 16:54 | |
i guess? | |||
brrt | that's one thing | 16:57 | |
with a null-terminated string, you can loop like: read, test, do-something, jumpback | 16:58 | ||
and, this costs you only 2 registers, at worst | |||
without a null-terminated string, you have to keep the original size, an index, the pointer, the value, that's 4 registers | 16:59 | ||
it's costly on an old machine | |||
17:22
tokuhiro_ joined
|
|||
timotimo | OIC | 17:24 | |
17:26
kjs_ joined
|
|||
nwc10 | brrt++ # ASAN doesn't SEGV | 17:45 | |
timotimo | hooray! | 17:46 | |
18:18
Ven joined
18:33
Ven joined
18:34
Ven joined
19:04
Ven joined
19:27
brrt joined
19:49
Ven joined
20:04
Ven joined
|
|||
psch | well, i did finally get the idea to check if going outwards one level less works, and it does | 20:05 | |
the while loop in getlex in interp.c still looks somehow off to me vOv | 20:07 | ||
20:10
colomon joined
20:15
kjs_ joined
20:18
cygx joined
|
|||
cygx | jnthn: nine: github.com/MoarVM/MoarVM/issues/295 | 20:18 | |
20:20
Ven joined
20:34
Ven joined
20:35
Ven joined
21:04
brrt joined
21:24
tokuhiro_ joined
21:34
Ven_ joined
21:37
kjs_ joined
21:41
zakharyas joined
21:54
Ven joined
22:07
zakharyas joined
22:08
Ven joined
22:22
Ven joined
23:15
kjs_ joined
23:43
Ven joined
|