|
Dear developer/community, at the moment, I try to figure out, why centipede or the runner doesn't deliver coverage feedback from inputs that crashes the target. My idea is to write a function similar to AFL's crash exploration mode. For that, I feed crashing inputs in centipede's corpus and use them as mutation basis. To decide, which mutation reaches the same or nearby code coverage of the feeded crash, I need the coverage information of the crashing inputs. |
Replies: 1 comment 1 reply
|
The coverage information is passed from the runner (child process) to the engine (parent process) It may be possible to "fix" this by intercepting all ways a process can crash, and passing the coverage to the engine there. The communication is not actually pipes, but shmem, but it's a minor implementation detail. The code is in ExecuteInputsFromShmem: |
The coverage information is passed from the runner (child process) to the engine (parent process)
after executing an input, not during, because the coverage data needs to be pre-processed.
When the runner crashes, the "after" code is not invoked.
It may be possible to "fix" this by intercepting all ways a process can crash, and passing the coverage to the engine there.
But it's a non-trivial amount of work.
The communication is not actually pipes, but shmem, but it's a minor implementation detail.
The code is in ExecuteInputsFromShmem: