Home | History | Annotate | only in /art/tools/bisection_search
Up to higher level directory
NameDateSize
__init__.py21-Aug-2018699
bisection_search.py21-Aug-201815.9K
bisection_test.py21-Aug-20183.7K
README.md21-Aug-20183.6K

README.md

      1 Bisection Bug Search
      2 ====================
      3 
      4 Bisection Bug Search is a tool for finding compiler optimizations bugs. It
      5 accepts a program which exposes a bug by producing incorrect output and expected
      6 output for the program. It then attempts to narrow down the issue to a single
      7 method and optimization pass under the assumption that interpreter is correct.
      8 
      9 Given methods in order M0..Mn finds smallest i such that compiling Mi and
     10 interpreting all other methods produces incorrect output. Then, given ordered
     11 optimization passes P0..Pl, finds smallest j such that compiling Mi with passes
     12 P0..Pj-1 produces expected output and compiling Mi with passes P0..Pj produces
     13 incorrect output. Prints Mi and Pj.
     14 
     15 How to run Bisection Bug Search
     16 ===============================
     17 
     18 There are two supported invocation modes:
     19 
     20 1. Regular invocation, dalvikvm command is constructed internally:
     21 
     22         ./bisection_search.py -cp classes.dex --expected-output out_int --class Test
     23 
     24 2. Raw-cmd invocation, dalvikvm command is accepted as an argument.
     25 
     26    Extra dalvikvm arguments will be placed on second position in the command
     27    by default. {ARGS} tag can be used to specify a custom position.
     28 
     29    If used in device mode, the command has to exec a dalvikvm instance. Bisection
     30    will fail if pid of the process started by raw-cmd is different than pid of runtime.
     31 
     32         ./bisection_search.py --raw-cmd='run.sh -cp classes.dex Test' --expected-retcode SUCCESS
     33         ./bisection_search.py --raw-cmd='/bin/sh art {ARGS} -cp classes.dex Test' --expected-retcode SUCCESS
     34 
     35 Help:
     36 
     37     bisection_search.py [-h] [-cp CLASSPATH] [--class CLASSNAME] [--lib LIB]
     38                              [--dalvikvm-option [OPT [OPT ...]]] [--arg [ARG [ARG ...]]]
     39                              [--image IMAGE] [--raw-cmd RAW_CMD]
     40                              [--64] [--device] [--device-serial DEVICE_SERIAL]
     41                              [--expected-output EXPECTED_OUTPUT]
     42                              [--expected-retcode {SUCCESS,TIMEOUT,ERROR}]
     43                              [--check-script CHECK_SCRIPT] [--logfile LOGFILE] [--cleanup]
     44                              [--timeout TIMEOUT] [--verbose]
     45 
     46     Tool for finding compiler bugs. Either --raw-cmd or both -cp and --class are required.
     47 
     48     optional arguments:
     49       -h, --help                                  show this help message and exit
     50 
     51     dalvikvm command options:
     52       -cp CLASSPATH, --classpath CLASSPATH        classpath
     53       --class CLASSNAME                           name of main class
     54       --lib LIB                                   lib to use, default: libart.so
     55       --dalvikvm-option [OPT [OPT ...]]           additional dalvikvm option
     56       --arg [ARG [ARG ...]]                       argument passed to test
     57       --image IMAGE                               path to image
     58       --raw-cmd RAW_CMD                           bisect with this command, ignore other command options
     59 
     60     bisection options:
     61       --64                                        x64 mode
     62       --device                                    run on device
     63       --device-serial DEVICE_SERIAL               device serial number, implies --device
     64       --expected-output EXPECTED_OUTPUT           file containing expected output
     65       --expected-retcode {SUCCESS,TIMEOUT,ERROR}  expected normalized return code
     66       --check-script CHECK_SCRIPT                 script comparing output and expected output
     67       --logfile LOGFILE                           custom logfile location
     68       --cleanup                                   clean up after bisecting
     69       --timeout TIMEOUT                           if timeout seconds pass assume test failed
     70       --verbose                                   enable verbose output
     71