aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/subsystem/extractor.go
Commit message (Collapse)AuthorAgeFilesLines
* pkg/subsystem: trace subsystem assignmentAleksandr Nogikh2023-04-281-7/+44
|
* pkg/subsystem: rewrite the inference logicAleksandr Nogikh2023-04-061-15/+35
| | | | | | | | | | | | | | | | | | Let's just accept that we cannot fully trust guilty paths and try to increase the weight of subsystems extracted from reproducers. Instead of taking all subsystems that have received the highest number of votes, take all which have received >= 33%. This will reduce noise and in almost all cases limit the number of assigned subsystems to 2. If there are >= 3 reproducers that point to exactly the same set of subsystems, give them a preference. But still take one subsystem from guilty paths if there's one that's mentioned >= 66% times. The numbers themselves are somewhat arbitrary, but hopefully this will improve the quality of subsystem inference. Add some more tests.
* pkg/subsystem: prioritize repro subsystems correctlyAleksandr Nogikh2023-04-061-1/+1
| | | | | | | | | | | We currently prioritize a subsystem if it's present in all reproducers and that is supported by at least one guilty path among the considered crashes. Due to a small bug in the code we only considered it to be supported if the guilty path belonged to one of parent subsystems of the one mentioned in the reproducer. It's fair to also consider full overlap between them.
* pkg/subsystem: update the bug subsystem extraction logicAleksandr Nogikh2023-04-041-13/+23
| | | | | | | There was a small bug and, as a result, subsystems from reproducers always superceded all other ones. That was not the desired side-effect. Fix the logic and add a test to linux_test.go.
* pkg/subsystem: disambiguate subsystems by reproducersAleksandr Nogikh2023-03-281-4/+23
| | | | | | | | | There are some minor subsystems (e.g. PAGE CACHE in Linux) that are parts of several big subsystems. At the same time, a reproducer can clearly disambiguate such case. If subsystems from reproducers and subsystems from guilty files intersect, only proceed with the results of the intersection.
* pkg/subsystem: take only always present calls from reprosAleksandr Nogikh2023-03-281-2/+17
| | | | | | | | | We're not yet perfect at eliminating unneeded calls from reproducers, so let's make the subsystem extraction rules stricter: only take a subsystem from the reproducer if it's present in all reproducers. Consider more crashes (7 instead of 5) to give more opportunities to drop an unneeded call.
* pkg/subsystem: restructure the packageAleksandr Nogikh2023-02-101-12/+8
| | | | | | Remove the entity and match subpackages. Regenerate the linux.go file.
* pkg/subsystem: extract subsystems from a crash listAleksandr Nogikh2023-02-101-0/+74
For now, let's use a straightforward approach: 1) Extract all subsystems for each guilty path and syz reproducer. 2) If there are both parents and children in the list, remove parents. 3) Count the remaining subsystems. 4) Pick the ones that appear most often.