aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/manager/repro.go
Commit message (Collapse)AuthorAgeFilesLines
* pkg/manager: reduce time spend under mutexAleksandr Nogikh2025-10-021-0/+2
| | | | | We don't need it to hold it for the call to the externally supplied callback.
* vm: extract all the crashes from the logTaras Madan2025-08-281-0/+1
|
* pkg/manager: do a full reproduction for patched-only bugsAleksandr Nogikh2025-07-291-3/+12
| | | | | | | | After ensuring that a bug only affects the patched kernel, do one more round of reproduction and (if successful) re-report the result. This will ensure that, provided enough time, diff fuzzing results will also have minimalistic C reproducers.
* pkg/manager: better handle the reproduction queueAleksandr Nogikh2025-04-231-1/+5
| | | | | | | | | | | | As pingQueue holds maximum 1 element, it's not a very good indicator of whether there are more elements in the reproduction queue. If the first few crashes happen to be no longer needed (which is quite likely when reproduction loop is started long after we have begun to collect the crashes), the loop becomes reactive - new reproductions will be started only once new bugs are submitted to the queue. Fix it by polling the queue until it returns nil. Add a test that exposes the previously existing bug.
* pkg/manager: log no longer needed reproductionsAleksandr Nogikh2025-04-231-0/+1
| | | | | | | | | We already mention the scheduled and started reproductions, but if the reproduction was not started intentionally, that makes the logs look very confusing. Print a log message if NeedRepro() returned false when we were to actually start the reproduction.
* pkg/manager: prevent deadlock on ReproLoop cancellationAleksandr Nogikh2025-04-171-1/+5
| | | | | | | | When the context is cancelled, no one may be polling the pingQueue, yet we write to it synchronously. Wrap it in a select{} statement and add a test to ensure that the loop reacts properly to the context cancellation.
* pkg/manager: propagate context to the bug reproductionAleksandr Nogikh2025-04-151-4/+4
| | | | | If the context is cancelled, we need to make sure that the reproduction process is aborted as well.
* pkg/manager: remove ReproLoop.StartReproduction()Aleksandr Nogikh2024-09-121-19/+15
| | | | | | It used to race with Enqueue(), which made it more complicated to write reproducible tests. Also, there's really no reason to separate StartReproduction() and Loop().
* pkg/manager: ensure NeedRepro() is always calledAleksandr Nogikh2024-09-121-7/+10
| | | | Always check it before starting the actual reproduction.
* pkg/manager: give preference to never reproduced crashesAleksandr Nogikh2024-09-041-6/+16
| | | | | | | | | First consider how many times we've tried to reproduce the crash, and only then look at other criteria. This will make the reproduction process more just since in the presence of multiple crashes in the queue we will give at least one chance to a wider range of different crashes.
* pkg/manager: properly handle NeedRepro() == falseAleksandr Nogikh2024-09-041-2/+6
| | | | | | It was processed incorrectly in the repro loop - we should have skipped that crash and looked for another one, but we actually ignored its return value.
* syz-manager: move repro loop to pkg/managerAleksandr Nogikh2024-09-021-0/+261
This is a potentially reusable piece of functionality.