[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 12/14] fuzz/x86_emulate: Add --rerun option to try to track down instability
On Fri, Aug 25, 2017 at 05:43:41PM +0100, George Dunlap wrote: > Current stability numbers are not 100%. In order to help track this > down, add a --rerun option which will run the same input twice, > resetting the state in between each run, and comparing the state > afterwards. If the state differs, call abort(). > > This allows AFL to help the process of tracking down what state is not > being reset properly between runs by proving testcases that > demonstrate the behavior. > > To do this: > > - Move ctxt into struct fuzz-state to simplify handling > > - Rather than copying the data into input, treat the data handed as > immutable and point each "copy" to it > > - Factor out various steps (setting up fuzz state, running an > individual test) so that they can be efficiently run either once or > twice (as necessary) > > - Compare the states afterwards, printing what's different and calling > abort() if anything is found. > FWIW I think this is an useful option to have. Since this patch depends on previous ones which have comments I only skim-read it. > + > +void compare_states(struct fuzz_state state[2]) > +{ > + // First zero any "internal" pointers > + state[0].corpus = state[1].corpus = NULL; > + state[0].ctxt.data = state[1].ctxt.data = NULL; > + state[0].ctxt.regs = state[1].ctxt.regs = NULL; > + > + > + if ( memcmp(&state[0], &state[1], sizeof(struct fuzz_state)) ) > + { > + int i; > + > + printf("State mismatch\n"); > + > + for ( i=0; i<5; i++) > + if (state[0].cr[i] != state[1].cr[i]) > + printf("cr[%d]: %lx != %lx\n", > + i, state[0].cr[i], state[1].cr[i]); Coding style issues here and below. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |