google / silifuzz

Apache License 2.0
380 stars 25 forks source link

Questions on Silifuzz #4

Closed jafarsarif10 closed 1 year ago

jafarsarif10 commented 1 year ago

Hi, We are testing silifuzz to detect defects/bugs on the CPU. I am writing to ask few questions, which I have listed down below: 1) The Corpus provided https://github.com/google/silifuzz#using-pre-generated-corpus, what type of instructions are included in the corpus. 2) Can you update the WIKI for the latest code change. 3) In this commit d9056056306b9871798fc8f318e30f3cc1d3fe4b, supported platform included intel-sapphire-rapids, does unicorn also support saphire-rapids new instructions.

ksteuck commented 1 year ago

Hey @jafarsarif10, thanks for reaching out.

  1. The corpus was generated based on the included unicorn proxy. It likely includes the basic x86/x87 instructions + limited SSE/AVX (based on what the emulator supports). Definitely no AVX512
  2. I believe the README is up-to-date. Is there anything specific that it's missing?
  3. The "support" (quoted b/c it's limited to being able to recognize the platform) for SRP predates that commit. The included unicorn proxy does not support any SRP instructions.
jafarsarif10 commented 1 year ago

Thanks, @ksteuck for responding to my query. I have recently started experimenting with Silifuzz, but I encountered an error because the args for the orchestrator have changed. Here's the error message I received: ./orchestrator/silifuzz_orchestrator_main --duration=30s --runner=./runner/reading_runner_main_nolibc --shard_list_file="/tmp/wd/runnable-corpus.00001" E0314 07:14:12.904824 2409483 byte_io.cc:37] Error reading from fd 3: errno=21 Segmentation fault It's worth noting that I'm able to execute the same runnable corpus without any errors using the runner binary. Could you please help me identify what I'm doing wrong? Also, if possible, could you update the wiki with this information?

ksteuck commented 1 year ago

Hey @jafarsarif10 ,

the --shard_list_file flag expects a file name containing a list of shard paths separated by line breaks. E.g. in your case the following should work:

./orchestrator/silifuzz_orchestrator_main --duration=30s --runner=./runner/reading_runner_main_nolibc --shard_list_file=shards.txt

where shards.txt contents is

/tmp/wd/runnable-corpus.00001