aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard/app/reporting.go
Commit message (Collapse)AuthorAgeFilesLines
* dashboard: fix manuallyUpstreamedAleksandr Nogikh2026-01-151-0/+4
| | | | | The function returned incorrect result when the reporting stage of interest was completely skipped and never reported.
* dashboard: add a manuallyUpstreamed helperAleksandr Nogikh2026-01-151-0/+8
| | | | | | | | | | This helper function can be used in the reporting filtering rules to skip certain reporting stages depending on whether the previous stage(s) have been manually upstreamed. Add tests that it does have the intended effect. Cc #6554.
* all: remove unused nolint directivesDmitry Vyukov2026-01-021-1/+0
|
* all: apply linter auto fixesTaras Madan2025-07-171-2/+3
| | | | ./tools/syz-env bin/golangci-lint run ./... --fix
* all: opt-out some functions to enforce linter checksTaras Madan2025-03-271-0/+1
| | | | New code will be limited to max 7 function params.
* dashboard: include revoked reproducers in reportsAleksandr Nogikh2025-03-081-11/+10
| | | | | | | | | | | | | Context: #5829. Let's not pretend that the revoked reproducer never existed and still report it. It will avoid unexpected side-effects for the higher-level logic. There may be better ways to resolve the bug, but let's first just get it fixed to prevent syzbot from spamming the mailing lists. Add a test to verify the new behavior.
* all: use min/max functionsDmitry Vyukov2025-01-171-12/+6
| | | | They are shorter, more readable, and don't require temp vars.
* prog: annotate image assets with fsck logsFlorent Revest2024-12-091-1/+1
| | | | | | | | | | | | | | | | | | Syscall attributes are extended with a fsck command field which lets file system mount definitions specify a fsck-like command to run. This is required because all file systems have a custom fsck command invokation style. When uploading a compressed image asset to the dashboard, syz-manager also runs the fsck command and logs its output over the dashapi. The dashboard logs these fsck logs into the database. This has been requested by fs maintainer Ted Tso who would like to quickly understand whether a filesystem is corrupted or not before looking at a reproducer in more details. Ultimately, this could be used as an early triage sign to determine whether a bug is obviously critical.
* dashboard: const attempts in db.RunInTransactionSabyrzhan Tasbolatov2024-10-281-2/+1
| | | | | | | | | | | | | | | Use a common number of attempts (10) everywhere in dashboard/app for db.RunInTransaction() with the custom wrapper runInTransaction(). This should fix the issues when the ErrConcurrentTransaction occurs after a default number of attempts (3). If the max. limit (10) is not enough, then it should hint on problem at the tx transaction function itself for the further debugging. For very valuable transactions in createBugForCrash(), reportCrash(), let's leave 30 attempts as it is currently. Fixes: https://github.com/google/syzkaller/issues/5441
* dashboard/app/reporting.go: highlight bug nameTaras Madan2024-07-241-1/+1
|
* all: fix up context import after go fixDmitry Vyukov2024-04-261-1/+1
|
* all: go fix everythingDmitry Vyukov2024-04-261-1/+1
|
* dashboard: wait for repro only when it makes senseAleksandr Nogikh2024-01-181-1/+2
| | | | | In case or build/boot/test errors there will never be a reproducer. It's better to report them right away, without waiting.
* dashboard: show coverage reports in per manager pagesAleksandr Nogikh2024-01-101-1/+1
| | | | There's no sense to restrict the list of build assets there.
* dashboard: include repro messages into daily limitsAleksandr Nogikh2024-01-091-9/+7
| | | | | A recent failure (#4412) could have been more constrained if our reproducer emails were included in our daily limits. Let's change that.
* dashboard: prevent infinite reporting of revoked reprosAleksandr Nogikh2024-01-091-13/+13
| | | | | | | | | | Fix a bug in the reporting of bugs with revoked reproducers. Add a test that reproduces the problematic situation. Also, ensure that we don't include the revoked reproducer into the report we send to the next reporting stage. Cc #4412.
* dashboard: remove too granular config helpersAleksandr Nogikh2023-10-121-2/+2
| | | | | Now that we mock the config as a whole and not parts of it, these functions have boiled down to 1-liners. We don't need them anymore.
* dashboard: introduce a getNsConfig() helperAleksandr Nogikh2023-10-121-6/+6
| | | | | In many cases we want to just access the namespaces's config. Introduce a special helper function to keep code shorter and more conscise.
* dashboard: access config through contextAleksandr Nogikh2023-10-121-22/+23
| | | | | | | | | | | | | | | | | | | | | We used to have a single global `config` variable and access it throughout the whole dashboard application. However, this approach has been more and more complicated test writing -- sometimes we want the config to be only slightly different, so that it's not worth it adding new namespaces, sometimes we have to test how dashboard handles config changes over time. This has already led to a number of hacky contextWithXXX methods that mocked various parts of the global variable. The rest of the code had to sometimes still use `config` directly and sometimes invoke getXXX(c) methods. This is very inconsistent and prone to errors. With more and more situations where we need to patch the config appearing (see #4118), let's refactor the application to always access config via the getConfig(c) method. This allows us to uniformly patch the config and be sure that the non-patched copy is not accessible from anywhere else.
* dashboard/app: calculate obsoletion periods differentlyAleksandr Nogikh2023-08-221-4/+16
| | | | | | | Rely on the Poisson distribution to determine the moment when we should give on a bug. We don't have to wait 100x the average time between the crashes.
* all: support cross-tree fix bisectionAleksandr Nogikh2023-07-251-0/+19
| | | | | | | | | | | | | If tree origin assessment code has identified that the bug is not reproducible in a tree from which we merge/cherry-pick commits, use fix bisection to identify that commit. This can e.g. be used to find fixing commits that were not backported from Linux kernel mainline into LTS branches. In case of bisection errors, re-do such jobs every 30 days. Remember in the Bug structure whether there's a fix candidate and return the details in the full bug info API query.
* all: use special placeholder for errorsTaras Madan2023-07-241-12/+12
|
* dashboard: fix the Config.Decommissioned raceAleksandr Nogikh2023-07-181-2/+2
| | | | | | | | | | Race detector reports a race between dashboard/app/reporting_test.go:1102 and dashboard/app/handler.go:183 Fix this by storing decommission updates in the context rather than by directly modifying the global config variable.
* dashboard/app: increase batch size to 2000Taras Madan2023-07-171-1/+1
| | | | | We have 1014 unfixed /upstream bugs. Increasing batch size 2* we'll improve answer latency for the /upstream page.
* dashboard: refactor bisection job queryingAleksandr Nogikh2023-07-171-91/+29
| | | | | | | | | | | | | | This change is necessary for further development. Query all bisection jobs for a bug and then explicitly pick the most suitable one for display on the bug page / sending a notification. Don't take any unfinished and manually invalidated jobs. Later we'll also skip all cross tree bisections to only leave the result worth displaying to the user. As a side effect of the changes, display cause/fix bisection history if there's been more than 1 attempt.
* dashboard: always return full UserSpaceArchAleksandr Nogikh2023-07-131-2/+0
| | | | | | Currently we return an empty value for amd64, so that it's not reported. Let's make the API more flexible -- return the value as is and let specific reporters decide whether to mention amd64 or not.
* dashboard: include Manager into BugReportAleksandr Nogikh2023-07-071-0/+1
| | | | | De-facto BugReport anyway refers to a specified crash and not just to the bug in general. Let's also include the Manager field there.
* dashboard: include tree origin jobs into full bug infoAleksandr Nogikh2023-05-261-0/+5
|
* dashboard: refactor handleReportNotifAleksandr Nogikh2023-05-251-42/+76
| | | | Split it into multiple functions.
* dashboard: include label message into bug reportsAleksandr Nogikh2023-05-251-2/+12
|
* dashboard: send per-label notificationsAleksandr Nogikh2023-05-251-0/+38
| | | | | | | | If the label is not user-set and the config specifies a message for it, send a bug notification. If the label is related to bug origin testing, attach the list of tested trees.
* dashboard: optionally disable bug obsoletionAleksandr Nogikh2023-05-191-2/+15
| | | | This allows us to write cleaner tests.
* dashboard: improve checkBugStatus loggingAleksandr Nogikh2023-05-121-3/+3
| | | | Currently the error message is too vague to debug the actual problem.
* dashboard: refactor currentReporting invocationsAleksandr Nogikh2023-05-121-4/+4
| | | | The method doesn't need context.Context.
* dashboard: assert repro presence against HeadReproLevelAleksandr Nogikh2023-05-051-2/+2
| | | | | These sanity checks need correction since with reproducer retesting it's possible to have the top crash not match the ReproLevel.
* dashboard: move common bug filtering to createPatchTestingJobsAleksandr Nogikh2023-05-031-0/+12
|
* dashboard: mock KernelRepo listAleksandr Nogikh2023-04-281-4/+4
| | | | | Rather than access it directly via config.Namespaces[ns], use the mocking function.
* dashboard: support bug labelsAleksandr Nogikh2023-04-271-4/+4
| | | | | | | | | | | | | | | | Let bug labels come in three flavours: 1) Bug labels with multiple values (e.g. `subsystems`). 2) Bug labels with only one value (e.g. `prio`). 3) Flags. Let users configure bug labels via email by issuing the following commands: #syz set subsystems: abc, def #syz set no-reminders #syz unset no-reminders Also let users set tags for invididual bugs in reported bug lists: #syz set <1> some-tag
* dashboard: update LastActivity only on important eventsAleksandr Nogikh2023-04-191-1/+5
| | | | | Otherwise it keeps it always fresh and prevents automatic bug obsoletion.
* dashboard: share repro level and report link in SimilarBugInfoAleksandr Nogikh2023-03-281-5/+7
| | | | This will make FullBugInfo's contents much more useful.
* dashboard/app: differentiate user-set tags in the subjectAleksandr Nogikh2023-02-241-2/+3
| | | | | | Only include the question mark sign for automatically inferred subsystems. For user-set subsystems, just put tags in the brackets: [net] [fs].
* dashboard: include subsystem links in BugReportAleksandr Nogikh2023-02-211-1/+4
| | | | Include the link to the subsystem page on the dashboard.
* dashboard/app: infer bug subsystems from crashesAleksandr Nogikh2023-02-161-1/+1
| | | | | | After each saved crash, invoke the new pkg/subsystem machinery to infer the subsystem list. Use 5 crashes with biggest priority to base the inference on.
* dashboard: include report elements in the BugReportAleksandr Nogikh2023-01-261-0/+1
| | | | | This will help optimize the detection and addition of missing fields to the existing reports.
* dashboard: factor out asset list extraction codeAleksandr Nogikh2023-01-031-38/+1
| | | | | It's useful not only during BugReporting creation, so extract it to a separate function and move to asset_storage.go.
* dashboard: adjust pollClosed behavior for decommissioned namespacesAleksandr Nogikh2022-12-191-1/+2
| | | | | Return bugs from decommissioned namespaces as closed to external reportings.
* dashboard: include dashboard link into the missing commit replyAleksandr Nogikh2022-12-161-0/+1
| | | | | If the original email thread is lost, it can be hard to get to the original bug.
* dashboard: extract subsystems for saved crashesAleksandr Nogikh2022-12-161-3/+5
| | | | | | | Invoke the extractor code at pkg/subsystem and store the result into the Bug entity. Augment the Maintainers content by per-subsystem emails.
* dashboard/app: add subsystem tags to the Bug entityAleksandr Nogikh2022-12-161-0/+3
| | | | | | | | | | They will be used properly at some later time, for now we'll just keep shortened guilty paths there. Once we have the full subsystem support, all these values will just get overridden by normal names. Return subsystems in BugReports.
* dashboard: return bisection info as BugReport objectAleksandr Nogikh2022-12-131-4/+19
| | | | | Bisection jobs can refer to other crashes/builds, so for the full bug info we need complete BugReport objects.