| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
The function returned incorrect result when the reporting stage of
interest was completely skipped and never reported.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
| |
./tools/syz-env bin/golangci-lint run ./... --fix
|
| |
|
|
| |
New code will be limited to max 7 function params.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
| |
They are shorter, more readable, and don't require temp vars.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
In case or build/boot/test errors there will never be a reproducer.
It's better to report them right away, without waiting.
|
| |
|
|
| |
There's no sense to restrict the list of build assets there.
|
| |
|
|
|
| |
A recent failure (#4412) could have been more constrained if our
reproducer emails were included in our daily limits. Let's change that.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
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.
|
| |
|
|
|
| |
In many cases we want to just access the namespaces's config.
Introduce a special helper function to keep code shorter and more conscise.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
We have 1014 unfixed /upstream bugs.
Increasing batch size 2* we'll improve answer latency for the /upstream page.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
| |
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.
|
| | |
|
| |
|
|
| |
Split it into multiple functions.
|
| | |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
| |
This allows us to write cleaner tests.
|
| |
|
|
| |
Currently the error message is too vague to debug the actual problem.
|
| |
|
|
| |
The method doesn't need context.Context.
|
| |
|
|
|
| |
These sanity checks need correction since with reproducer retesting it's
possible to have the top crash not match the ReproLevel.
|
| | |
|
| |
|
|
|
| |
Rather than access it directly via config.Namespaces[ns], use the
mocking function.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
| |
Otherwise it keeps it always fresh and prevents automatic bug
obsoletion.
|
| |
|
|
| |
This will make FullBugInfo's contents much more useful.
|
| |
|
|
|
|
| |
Only include the question mark sign for automatically inferred
subsystems. For user-set subsystems, just put tags in the brackets:
[net] [fs].
|
| |
|
|
| |
Include the link to the subsystem page on the dashboard.
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
| |
This will help optimize the detection and addition of missing fields to
the existing reports.
|
| |
|
|
|
| |
It's useful not only during BugReporting creation, so extract it to a
separate function and move to asset_storage.go.
|
| |
|
|
|
| |
Return bugs from decommissioned namespaces as closed to external
reportings.
|
| |
|
|
|
| |
If the original email thread is lost, it can be hard to get to the
original bug.
|
| |
|
|
|
|
|
| |
Invoke the extractor code at pkg/subsystem and store the result into the
Bug entity.
Augment the Maintainers content by per-subsystem emails.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
Bisection jobs can refer to other crashes/builds, so for the full bug
info we need complete BugReport objects.
|