leedo | perhaps related to FROGGS's last commit? gist.github.com/leedo/8c390fcbe47d5e2e5fd5 | 02:23 | |
(rebuilding to make sure i'm not crazy) | 02:24 | ||
ok, nuking my install dir seems to have fixed it | 02:30 | ||
04:56
cognominal joined
04:59
cognominal joined
05:06
cognominal joined
06:02
cognominal joined
06:04
cognominal joined
07:20
FROGGS joined
08:27
zakharyas joined
08:57
brrt joined
09:08
flaviusb joined
09:11
leont joined
10:58
zakharyas joined
11:07
jnthn joined
11:24
leont joined
12:24
rurban_ joined
|
|||
dalek | arVM: a677430 | FROGGS++ | src/6model/reprs/P6int.c: include stdbool.h conditionally |
12:37 | |
arVM/line_based_coverage: d33795d | timotimo++ | src/ (2 files): dead-end for trying to get more lines covered |
13:18 | ||
arVM/line_based_coverage: 27aa4c5 | timotimo++ | tools/parse_coverage_report.p6: add a simple coverage report to HTML tool |
|||
arVM/line_based_coverage_2: fb7373e | timotimo++ | / (11 files): first prototype of a per-line coverage reporter |
13:19 | ||
arVM/line_based_coverage_2: 5608af6 | timotimo++ | / (6 files): add missing files, adjust op to not use spesh slot show MVM_COVERAGE_LOG in moar --help |
|||
timotimo | (just a rebase to get rid of the "modified oplist from a branch and on master" problem) | 13:20 | |
13:20
dalek joined
|
|||
timotimo | and now i'll teach that exporting tool about moar --dump | grep annotation: | 13:21 | |
which will remove a whole bunch of red lines that we can't ever turn green | 13:22 | ||
14:00
pyrimidine joined
15:02
zakharyas joined
|
|||
timotimo | hey jnthn; it currently looks like each little piece of code in QASTOperationsMAST would have to do its own line number annotation handling (and they don't do it); maybe that wants to live in compile_op itself? | 15:21 | |
that's only really interesting for the core setting, but on the other hand, the core setting is the one place that we really want to have line-by-line coverage with | 15:22 | ||
jnthn: i think i need a bit of guidance for this; i don't want to give every single mapper an extra argument for the $op.node, but add_core_moarop_mapping already discards everything but $op.op and $op.list | 15:38 | ||
should i grab the return value of calling $moarop_mapper and putting that into an Annotated? | 15:39 | ||
jnthn | Well, the idea was that we only really annotated stmts nodes | ||
or stmt | 15:40 | ||
timotimo | oh, hm. | ||
i see the code in compile_all_the_stmts that puts the annotation in | |||
jnthn | Meaning multi-line statements would end up with an annotation of their start line | ||
15:40
virtualsue joined
|
|||
jnthn | The actual annotations you see in the bytecode, for the purposes of what you're doing, perhaps want to be interpreted as "this line and the next ones that aren't annotated" | 15:40 | |
timotimo | could it be we're turning too many things into a sinlge stmt or stmts in the optimization phase? | ||
that makes things ... uncomfortable :) | 15:42 | ||
because in order to find lines to grey out i'm just grepping "annotated: " from the moar --dump | |||
so now i'll have to differentiate between "this line doesn't show up, but it's between two annotations" and "this line never shows up anywhere" | 15:43 | ||
alternatively ... i'm only looking for grey lines if a line doesn't show up with a "HIT" output from the coverage output | |||
so if i make sure enough HIT lines show up for a single annotation ... that could work | 15:44 | ||
do you think it'll be important to walk all annotations inside a BB or would it be enough to get the file/line number from the beginning of each BB? | |||
i'll have to be extra careful about things like "is the inline bit set" and also only if the line of the latter BB is higher and has the same filename and ... | 15:48 | ||
ugh | |||
jnthn | Well, if we're in a BB we should probably run it to completion | ||
timotimo | that's right | ||
that part is clear; much more difficult is what exactly goes on between BBs | 15:49 | ||
hoelzro | good moarning #moarvm! | 15:59 | |
timotimo | so perhaps the line number annotation op gets another parameter for "how many lines does this correspond to" | 16:00 | |
and i'll probably want to store up 4k or something of bytes before locking, writing, unlocking | 16:01 | ||
jnthn | timotimo: That could be one way to do it, yeah | 16:07 | |
timotimo | jnthn: so, going through all annotations that exist for a given BB, yea or nay? | ||
jnthn | I think you'd have to go through the BB | 16:08 | |
Multiple statemetns can be in one BB | |||
timotimo | that's what i thought. OK! | 16:13 | |
luckily, the IP of the beginning of the linear_next BB has to be correct (if it's not inlined) | |||
16:24
vytas joined
17:10
rurban_ joined
|
|||
arVM/line_based_coverage_2: 3f0c647 | timotimo++ | tools/parse_coverage_report.p6: grey out lines that don't have annotations in the bytecode |
|||
timotimo | jnthn: in order to have something like a bytecode annotation iterator, should i add a "next bytecode address" or "next annotation's address" field to MVMBytecodeAnnotation on top of the filename and line number fields? | 18:21 | |
18:31
zakharyas joined
18:33
leont joined
19:12
FROGGS joined
19:24
Peter_R joined
19:27
vendethiel joined
19:45
geekosaur joined
|
|||
timotimo | instead of dealing with file locking, i'll spread out file output into pid-numbered files and keep the "append" logic, as only a single process (in the same process namespace) can have a given pid at the same time | 19:52 | |
diakopter | timotimo: see line number spectest breakage in #perl6 | ||
timotimo: I thought you hadn't merged it yet | |||
oh now I see your messages there | |||
*bloop* | |||
timotimo | going to log -971268454 lines | 20:09 | |
perfect! | |||
21:17
bartolin_ joined
21:18
patrickz joined
|
|||
bartolin_ | I just dropped in to mention that MoarVM doesn't build on BSD currently: github.com/MoarVM/MoarVM/issues/311 | 21:19 | |
bartolin_ does not know C, so the suggested patch might be plainly wrong ... | 21:21 | ||
but at least I was able to build with that patch | |||
diakopter | bartolin_: thanks for the contribution | 21:23 | |
it might break osx? | |||
don't know | |||
geekosaur would suggest renaming the moar "fileno" instead, because there is no guarantee that fileno is also provided as a function | 21:24 | ||
(well, there is on fbsd, there is not in general. and traditional (non-gnu) stdio has fileno defined as a macro) | |||
I don't see a fileno function in libSystem.dylib on OS X | 21:26 | ||
[Coke] | TimToady: build now warns at "src/core/CompUnit/RepositoryRegistry.pm" line 204 of 308 | 21:27 | |
the $compunit there generates a useless... | |||
bartolin_ | geekosaur: ahh, that's interesting (traditional stdio having fileno defined as a macro). I googled for a while but wasn't able to get a clear picture | 21:29 | |
geekosaur | you basically saw it in clang's error message :) | ||
bartolin_ | geekosaur: yes, but that was only my specific version of FreeBSD :-) | 21:30 | |
geekosaur | fileno() macro gets turned into a field access through the (FILE *) | ||
jnthn hasn't really expected a macro to apply on the RHS of -> | 21:40 | ||
Or did I misread the error? | 21:41 | ||
No, I didn't. It really does try to macro that. | |||
[Coke] | jnthn: hey, can someone write an EBCIDIC to NFG converter? (not you, just wondering if someone who is excited about such a thing could) | 21:42 | |
whoops, wrong window on the compunit thing. | |||
geekosaur | CPP macros are dumb | ||
jnthn | No kidding :) | ||
geekosaur | they do not know C | ||
jnthn | But yeah, a rename should deal with it | 21:43 | |
timotimo | is getpid() crossplatform? | 21:46 | |
jnthn | Doubt it | 21:49 | |
May have to be _getpid() for MSVC | |||
timotimo | the libuv docs use getpid() in a nexample, but i still thought i'd ask | 21:51 | |
ah, indeed, we have a getpid function in moar already | 21:52 | ||
this code is .. roundabout %) | 21:56 | ||
but it makes extra sure that the format string it gets from the environment is sane | |||
so i think that's worth something | |||
actually ... | 21:58 | ||
why don't i write a function that takes a string pointer from the environment to give back a file descriptor ... and if there's a %d in there it sanitizes the input as a format string, substitutes the %d for the pid and uses that | |||
that way we'd be able to have .pid.txt files for jit log, cross thread log, spesh log, ... | |||
and the coverage log, too | 21:59 | ||
patrickz | Hey. I just installed moar (and nqp/rakudo/panda/some modules) with the executable stack bit turned off (linker option -z noexecstack). Stuff seems to work. Now I wonder, am I bound for failure? (Because there should be some reason for gcc to set that bit in the first place...) | 22:04 | |
gcc on linux that is | |||
timotimo | i don't think we try to execute anything on the stack. we only ever jump into the heap when we do JIT | ||
noexecstack is a security feature, right? | |||
it'd be swell if you could run "make spectest" (usually you want to set TEST_JOBS to number-of-processors + 1 or so) and see if it explodes due to trying to execute stuff on the stack | 22:05 | ||
i suspect it won't. in that case it'd be cool if we had detection for how to set "noexecstack" on different OS/compiler combinations :) | |||
patrickz | it's a mark on exec files that signals the program might use the feature. | ||
SELinux prevents execution of moar on that machine of my hoster thus the fiddling with this stuff... | 22:06 | ||
geekosaur | patrickz, as far as I know things default to exec-stack for historical reasons | 22:08 | |
you can turn that off on the file and see if it works or segfaults | 22:09 | ||
(since most things should not actually require it at this point) | |||
patrickz | geekosaur: linux.die.net/man/8/execstack says the opposite | ||
i.e. default to not turn that on except when finding gcc trampolines | |||
geekosaur | interesting | 22:11 | |
patrickz | hm, it says "recent GCC versions" that might be the key... | 22:12 | |
geekosaur | although I note it also sets it based on libraries | ||
so if the libs on the build system had execstack enabled, the executable would be so flagged | 22:13 | ||
but if the libs on the run system don't have execstack then the program doesn't actually need it | |||
timotimo | that's interesting. so whether or not stuff on the stack can be executed depends on what the IP is currently going through? | 22:17 | |
geekosaur | ?\ | ||
no, I am assuming a binary was copied between systems | |||
patrickz | hm. I currently run the spec suite on a system that prohibits execution of libraries with that bit set. Looking good so far. | ||
nope | |||
I also built on that system | 22:18 | ||
geekosaur | interesting | ||
ok, that doesn't make much sense then; probably have to dig into docs for specific library and toolchain versions for that system (or if you are lucky, for the OS release it's running --- note that you may need hosting provider specific docs) | 22:19 | ||
patrickz | it would make sense if that is an old gcc that defaults to "true" as you suspected or if there actually is some stack exec going on (which should make my spec run fail) | ||
geekosaur | also stack exec may only happen in unusual circumstances | ||
like "is native" functions with certain specific types, or something like that | 22:20 | ||
(in perl6 terms) | |||
basically it may allow for it but it's only a problem if it actually gets used, and perhaps nothing actually uses it yet | |||
patrickz | gcc 3.3 introduced automatic exec stack detection | 22:29 | |
25 spec test failures. | 22:34 | ||
I guess those are not related | 22:35 | ||
timotimo | the spec test is currently quite unhappy, yeah :( | ||
jnthn | Try make test also, which includes the NativeCall tests | 22:40 | |
timotimo | ugh. ugh. ugh. | 22:47 | |
some of these line annotations i come up with make 0 sense | |||
patrickz | use-trace.t one failure callbacks.t no tests ran | ||
jnthn | That callbacks.t one is suspect | 22:50 | |
patrickz | is nativecall using nested functions? | 22:51 | |
timotimo | but ... why would dyncall build its callback handlers on the stack? | ||
jnthn | nested? | ||
timotimo | no, wait ... | ||
in order to actually call stuff, does it jump into generated machine code? | 22:52 | ||
jnthn | patrickz: We delegate that stuff to dyncall or libffi | ||
timotimo: Almost certainly for callbacks | |||
patrickz | if I understand correctly that exec stack stuff is basically only needed for callbacks to nested functions. GCC uses some exec stack stuff for those. | 22:53 | |
timotimo | jnthn: did you get around to fixing the problem with strings starting with an invalid utf8 character in utf8-c8? i don't remember ... | ||
jnthn | timotimo: no | ||
timotimo | OK, so my memory isn't bad on that | 22:54 | |
jnthn | 'night, #moarvm | 22:56 | |
timotimo | gnite jnthn | ||
patrickz | good night | 22:57 | |
23:15
virtualsue joined
|
|||
timotimo | HIT gen/moar/m-CORE.sHIT src/vm/moar/ModuleLoader.nqp 1 | 23:17 | |
i don't actually know how i b0rk this. | 23:18 | ||
ah, it's probably due to when some program crashes it doesn't flush that file descriptor | 23:19 | ||
flush after every print? why, that's such a great idea! >_> | |||
and, i'm sure, not slow at all | |||
23:51
konobi joined
|