Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Distinguish between undetected and failing custom mutator (fail on the latter). #1565

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

copybara-service[bot]
Copy link
Contributor

@copybara-service copybara-service bot commented Feb 12, 2025

Distinguish between undetected and failing custom mutator (fail on the latter).

I extended the IPC protocol for mutation via external binary: the binary now
first writes a marker to indicate whether it has a custom mutator. If it does,
it proceeds by writing mutants, otherwise it successfully exits.

On the Centipede side, this allows distinguishing between an undetected custom
mutator (indicated by the marker) and a failure (indicated by a failed
execution).

The protocol is implemented using a new type of runner result, MutationResult,
similarly to the ExecutionResult and BatchResult.

In addition, I cleaned up the Mutate() API so that the results are passed as
return values instead of using output parameters. This results in cleaner, less
error-prone, and more efficient code (e.g., the number of mallocs in the
malloc-counting test went down significantly, so I updated the expected count
there as well).

With this change, we no longer need to perform the "domain setup check" as part
of executing an input. The check happens implicitly during mutation. If the
mutation fails, either due to an ineffective domain or other reasons, Centipede
itself fails.

@copybara-service copybara-service bot changed the title Move domain setup checking to a new runner function InitializeForExecution(). Add a flag that forces failure on issues with the custom mutator. Feb 18, 2025
@copybara-service copybara-service bot changed the title Add a flag that forces failure on issues with the custom mutator. Fail on issues with the custom mutator for FuzzTest. Feb 20, 2025
@copybara-service copybara-service bot force-pushed the cl/726191912 branch 2 times, most recently from 87db27a to 9685b83 Compare February 20, 2025 20:58
@copybara-service copybara-service bot changed the title Fail on issues with the custom mutator for FuzzTest. Distinguish between undetected and failing custom mutator (fail on the latter). Feb 24, 2025
…e latter).

I extended the IPC protocol for mutation via external binary: the binary now
first writes a marker to indicate whether it has a custom mutator. If it does,
it proceeds by writing mutants, otherwise it successfully exits.

On the Centipede side, this allows distinguishing between an undetected custom
mutator (indicated by the marker) and a failure (indicated by a failed
execution).

The protocol is implemented using a new type of runner result, `MutationResult`,
similarly to the `ExecutionResult` and `BatchResult`.

In addition, I cleaned up the `Mutate()` API so that the results are passed as
return values instead of using output parameters. This results in cleaner, less
error-prone, and more efficient code (e.g., the number of mallocs in the
malloc-counting test went down significantly, so I updated the expected count
there as well).

With this change, we no longer need to perform the "domain setup check" as part
of executing an input. The check happens implicitly during mutation. If the
mutation fails, either due to an ineffective domain or other reasons, Centipede
itself fails.

PiperOrigin-RevId: 726191912
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant