01:46 FROGGS joined 01:48 ilbot3 joined 03:41 colomon joined 05:43 domidumont joined 05:47 lizmat joined 06:09 domidumont joined 06:12 domidumont joined 06:30 domidumont joined
nwc10 good *, #moarvm 07:07
07:54 lizmat joined 08:15 brrt joined
brrt good * #moarvm, nwc10 08:16
brrt won't be going to YAPC::EU this year 08:22
nine :( 08:42
brrt can't be helped i'm afraid 08:57
09:21 zakharyas joined 10:23 colomon joined 10:59 brrt joined 11:37 stmuk_ joined 12:15 stmuk_ joined 12:19 lizmat joined 12:29 cognominal joined 13:03 lizmat joined 13:22 zakharyas joined 13:26 brrt joined
timotimo aaw :| 14:33
i wonder what afl-fuzz will find this time 'round
17:36 lizmat joined 17:59 vendethiel joined 18:01 domidumont joined 18:29 FROGGS joined 19:58 japhb joined
timotimo it looks like afl-fuzz found a case where handling an exception causes a "cannot invoke null object" to be thrown, which will endlessly recurse through the exception handling machinery 20:55
235 handler_code = MVM_frame_find_invokee(tc, lh.frame->work[lh.handler->block_reg].o, NULL); 20:56
(gdb) print lh.frame->work[lh.handler->block_reg].o
$4 = (MVMObject *) 0x0
in situations like these i'm not sure what a fix should look like
for future reference, that's fuzzerS1's crash number 60 20:57
arnsholt Sounds like the bug is somewhere else but causes this thing downstream. I'd suggest filing an issue for it and seeing what jnthn says
timotimo surely we want to prevent an infinitely growing stack to be causable by a .moarvm file 20:59
arnsholt Yeah, that's probably a bug too 21:00
Just abort() with a "this should never happen" message, maybe?
If it's a situation that can be detected easily, which it may very well not be from the sounds of it 21:01
mst timotimo: abort("Exception inception detection protection");
(only semi-joking because strings like that are really easy to grep) 21:02
timotimo %)
well, sometimes you do want to say "could not invoke a null object" and have exception handling further up have a chance to catch that
there'd have to be a way to check if the current handler that'd catch the exception is the same handler we're complaining about 21:03
alternatively, to get the next-outer handler instead
mst I don't think it's a terrible rule that if your exception handler throws an exception, you give up
diagnosing bugs where perl5 passed it outwards and things weirdly semi-worked was no fun at all 21:04
timotimo now here's a surprising one ... a MVM_serialization_read_int is segfaulting, even though it has some amount of "are we trying to read past the end?" protection in it
maybe one of those is off-by-one
mst maybe it's maybelline 21:05
timotimo running it under valgrind makes it die in another way
mst (yes, sorry, not helping, stupid day)
timotimo maybe that's why afl-fuzz put "havoc" in the file name :P 21:06
mst "cry havoc, and let slip the dogs of off by one errors" doesn't quite have the same ring to it 21:07
timotimo off by doge? 21:08
here it seems like afl-fuzz found out it can give an arg_o opcode any unsigned 16 bit integer it likes 21:12
i think i've come across this particular thing in the past; i'd like to catch that in bytecode verification if possible
the prepare args opcode that has to lead up to the arg_* calls ought to let me figure out how many arguments there can be maximum 21:13
but ... ugh, the bytecode verifier is ... annoying to work on