The regression_task identifies the commit range where a regression was introduced. It uses binary search to narrow down the range of revisions that caused the crash.
-
Build Setup:
Sets up builds for specific revisions to test for the crash. -
Binary Search:
Uses binary search to efficiently identify the regression range. -
Validation:
Ensures that the identified regression range is accurate by testing earlier revisions. -
Task Creation:
Creates follow-up tasks, such as blame analysis, based on the regression range.
-
Initialization:
- Fetches the test case and crash information.
- Sets up the test case and its dependencies.
-
Build Setup:
- Sets up builds for the revisions to be tested.
-
Binary Search:
- Tests the crash at the middle revision of the current range.
- Narrows the range based on whether the crash reproduces.
-
Validation:
- Tests earlier revisions to ensure the regression range is accurate.
-
Finalization:
- Saves the identified regression range.
- Creates follow-up tasks for further analysis.
-
Bad Builds:
If a build is invalid, the task skips it and continues testing. -
Validation:
The task ensures that the regression range is accurate by testing additional revisions. -
Error Handling:
If the task cannot complete due to errors or timeouts, it retries later.