syzbot
{{if .Admin}}
Admin
{{end}}
{{- range $ns := .Namespaces}}
{{- $ns.Caption -}}
{{- end -}}
{{if not (eq .URLPath "/admin")}}
{{end}}
{{if .Message}}
{{.Message}}
{{end}}
{{end}}
{{/* List of enabled filters, invoked with *uiBugFilter */}}
{{define "bug_filter"}}
{{if .Filter.Any}}
Applied filters:
{{if .Filter.Manager}}
Manager={{.Filter.Manager}} ({{link (call .DropURL "manager" "") "drop"}})
{{end}}
{{if .Filter.OnlyManager}}
Only Manager={{.Filter.OnlyManager}} ({{link (call .DropURL "only_manager" "") "drop"}})
{{end}}
{{if .Filter.NoSubsystem}}
NoSubsystem={{.Filter.NoSubsystem}} ({{link (call .DropURL "no_subsystem" "") "drop"}})
{{end}}
{{if .Filter.WithRepro}}
WithRepro ({{link (call .DropURL "with_repro" "") "drop"}})
{{end}}
{{if .Filter.WithAIPatch}}
WithAIPatch ({{link (call .DropURL "with_ai_patch" "") "drop"}})
{{end}}
{{$drop := .DropURL}}
{{range .Filter.Labels}}
Label={{.}} ({{link (call $drop "label" .) "drop"}})
{{end}}
{{end}}
{{if or (not .Filter.WithRepro) (and .Filter.HasAI (not .Filter.WithAIPatch))}}
Extra filters:
{{if not .Filter.WithRepro}}
[{{link (call .SetURL "with_repro" "true") "With Repro"}}]
{{end}}
{{if and .Filter.HasAI (not .Filter.WithAIPatch)}}
[{{link (call .SetURL "with_ai_patch" "true") "With AI Patch Pending Review"}}]
{{end}}
{{end}}
{{end}}
{{/* List of bugs, invoked with *uiBugGroup */}}
{{define "bug_list"}}
{{if .}}
{{if .Bugs}}
{{if $.ShowNamespace}}
Kernel
{{end}}
Title
Rank
{{template "info_link" "https://github.com/google/syzkaller/blob/master/pkg/report/README.md"}}
Repro
Cause bisect
Fix bisect
Count
Last
Reported
{{if $.DispLastAct}}
Last activity
{{end}}
{{if $.DispDiscuss}}
Discussions
{{end}}
{{if $.ShowPatched}}
Patched
{{end}}
{{if $.ShowStatus}}
Status
{{end}}
{{if $.ShowPatch}}
Closed
Patch
{{end}}
{{range $b := .Bugs}}
{{if $.ShowNamespace}}{{$b.Namespace}} {{end}}
{{$b.Title}}
{{- range $b.Labels}}
{{link .Link .Name}}
{{- end}}
{{$b.ImpactScore}}
{{formatRepro $b.HasCRepro $b.HasSyzRepro}}
{{print $b.BisectCause}}
{{print $b.BisectFix}}
{{$b.NumCrashes}}{{if $b.DupNumCrashes}} (+{{$b.DupNumCrashes}}){{end}}
{{formatLateness $.Now $b.LastTime}}
{{if $b.ExternalLink}}
{{formatLateness $.Now $b.ReportedTime}}
{{else}}
{{formatLateness $.Now $b.ReportedTime}}
{{end}}
{{if $.DispLastAct}}
{{formatLateness $.Now $b.LastActivity}}
{{end}}
{{if $.DispDiscuss}}
{{$d := $b.Discussions}}
{{- if not $d.LastPatchMessage.IsZero -}}
PATCH [{{formatLateness $.Now $d.LastPatchMessage}}]
{{- else if $d.ExternalMessages -}}
💬 {{$d.ExternalMessages}} [{{formatLateness $.Now $d.LastMessage}}]
{{- end -}}
{{end}}
{{if $.ShowPatched}}
{{len $b.PatchedOn}}/{{$b.NumManagers}}
{{end}}
{{if $.ShowStatus}}
{{if $b.ExternalLink}}
{{$b.Status}}
{{else}}
{{$b.Status}}
{{end}}
{{end}}
{{if $.ShowPatch}}
{{formatLateness $.Now $b.ClosedTime}}
{{template "fix_commits" $b.Commits}}
{{end}}
{{end}}
{{end}}
{{end}}
{{end}}
{{/* List of managers, invoked with []*uiManager */}}
{{define "manager_list"}}
{{if .}}
Instances [{{link .RepoLink "tested repos"}}]:
Name
Last active
Uptime
Corpus
Coverage {{template "info_link" "https://github.com/google/syzkaller/blob/master/docs/coverage.md"}}
Crashes
Execs
Kernel build
syzkaller build
Bugs
Commit
Config
Freshness
Status
Commit
Freshness
Status
All
Only
{{range $mgr := .List}}
{{link $mgr.PageLink $mgr.Name}}
{{formatLateness $mgr.Now $mgr.LastActive}}
{{formatDuration $mgr.CurrentUpTime}}
{{formatStat $mgr.MaxCorpus}}
{{if $mgr.CoverLink}}
{{end}}
{{formatStat $mgr.MaxCover}}
{{if $mgr.CoverLink}}
{{end}}
{{formatStat $mgr.TotalCrashes}}
{{if $mgr.TotalExecsBad}}
broken
{{else}}
{{formatStat $mgr.TotalExecs}}
{{end}}
{{with $build := $mgr.CurrentBuild}}
{{link $build.KernelCommitLink (formatTagHash $build.KernelCommit)}}
{{link $build.KernelConfigLink ".config"}}
{{formatLateness $mgr.Now $build.KernelCommitDate}}
{{if $mgr.FailedBuildBugLink}}failing {{end}}
{{link $build.SyzkallerCommitLink (formatShortHash $build.SyzkallerCommit)}}
{{formatLateness $mgr.Now $build.SyzkallerCommitDate}}
{{if $mgr.FailedSyzBuildBugLink}}failing {{end}}
{{else}}
{{end}}
all
only
{{end}}
{{end}}
{{end}}
{{/* List of fixing commits, invoked with []*uiCommit */}}
{{define "fix_commits"}}
{{range $com := .}}
{{if $com.Hash}}
{{formatTagHash $com.Hash}}
{{end}}
{{link $com.Link $com.Title}}
{{end}}
{{end}}
{{/* Bisection result, invoked with *uiJob */}}
{{/* Show bisection results */}}
{{define "bisect_results"}}
{{if .}}
{{$causeJob := 1}}
{{$fixJob := 2}}
{{if .ErrorLink}}
{{if eq .Type $causeJob}}
Cause bisection: failed
{{else if eq .Type $fixJob}}
{{if .FixCandidate}}
Fix candidate bisection: failed
{{else}}
Fix bisection: failed
{{end}}
{{end}}
({{link .ErrorLink "error log"}}{{if .LogLink}}, {{link .LogLink "bisect log"}}{{end}})
{{else if .Commit}}
{{if eq .Type $causeJob}}
Cause bisection: introduced by
{{else if eq .Type $fixJob}}
{{if .FixCandidate}}
Fix commit to backport
{{else}}
Fix bisection: fixed by
{{end}}
{{end}}
({{link .LogLink "bisect log"}}) {{print .Flags}} :
{{if .FixCandidate}}tree: {{link .KernelLink .KernelAlias}} {{end}}
commit {{.Commit.Hash}}
Author: {{.Commit.Author}}
Date: {{formatKernelTime .Commit.Date}}
{{link .Commit.Link .Commit.Title}}
{{else if .Commits}}
{{if eq .Type $causeJob}}
Cause bisection: the cause commit could be any of
{{else if eq .Type $fixJob}}
{{if .FixCandidate}}Fix candidate detection{{else}}Fix bisection{{end}}
the fix commit could be any of
{{end}}
({{link .LogLink "bisect log"}}):
{{range $com := .Commits}}
{{formatTagHash $com.Hash}} {{link $com.Link $com.Title}}
{{end}}
{{else}}
{{if eq .Type $causeJob}}
Cause bisection: the issue happens on the oldest tested release
{{else if eq .Type $fixJob}}
{{if .FixCandidate}}Fix candidate detection:{{else}}Fix bisection:{{end}}
the issue occurs on the latest tested release
{{end}}
({{link .LogLink "bisect log"}})
{{end}}
{{if .CrashLogLink}}
Crash: {{link .CrashReportLink .CrashTitle}} ({{link .CrashLogLink "log"}})
Repro: {{optlink .Crash.ReproCLink "C"}}
{{optlink .Crash.ReproSyzLink "syz"}}
{{optlink .Crash.KernelConfigLink ".config"}}
{{end}}
{{if not .Reported}}[report pending]
{{end}}
{{optlink .RestartJobLink "🔄 retry this bisection"}}
{{optlink .InvalidateJobLink "❌ mark as invalid"}}
{{end}}
{{end}}
{{/* List of fixing commits, invoked with *uiCrashTable */}}
{{/* Show crashes */}}
{{define "crash_list"}}
{{if .}}
* Struck through repros no longer work on HEAD.
{{end}}
{{end}}
{{/* List of jobs, invoked with *uiJobList */}}
{{define "job_list"}}
{{if and $ $.Jobs}}
{{$.Title}}
{{if not $.PerBug}}Bug {{end}}
Created
Duration
User
Patch
Repo
{{if not $.PerBug}}Manager {{end}}
Result
{{range $job := $.Jobs}}
{{if not $.PerBug}}{{$job.BugTitle}} {{end}}
{{link $job.ExternalLink (formatTime $job.Created)}}
{{formatDuration $job.Duration}}{{if gt $job.Attempts 1}} ({{$job.Attempts}}){{end}}
{{if eq $job.Type 0}}
{{if $job.User}}{{$job.User}}
{{- else if $job.TreeOrigin}}tree origin
{{- else}}retest repro{{end}}
{{else if eq $job.Type 1}}
bisect
{{else if eq $job.Type 2}}
{{if $job.FixCandidate}}fix candidate{{else}}bisect fix{{end}}
{{end}}
{{optlink $job.PatchLink "patch"}}
{{link $job.KernelCommitLink $job.KernelAlias}}
{{if not $.PerBug}}{{$job.Manager}} {{end}}
{{if $job.ErrorLink}}
{{link $job.ErrorLink "error"}}
{{else if and $job.CrashTitle (eq $job.Type 0)}}
{{optlink $job.CrashReportLink "report"}}
{{else if formatTime $job.Finished}}
{{if and (eq $job.Type 0) (not $job.PatchLink)}}no crash{{else}}OK{{end}}
{{if ne $job.Type 0}}
({{if $job.Commit}}1{{else}}{{len $job.Commits}}{{end}})
{{end}}
{{else if formatTime $job.Started}}
running
{{else}}
pending
{{end}}
{{if $job.LogLink}}
{{link $job.LogLink "job log"}}
{{end}}
{{if $job.CrashLogLink}}
{{optlink $job.CrashLogLink "log"}}
{{end}}
{{ if $job.InvalidatedBy }}
marked invalid by {{$job.InvalidatedBy}}
{{end}}
{{if and $.PerBug (or .InvalidateJobLink .RestartJobLink)}} {{optlink .RestartJobLink "🔄 retry this bisection"}} {{optlink .InvalidateJobLink "❌ mark as invalid"}}{{end}}
{{end}}
{{end}}
{{end}}
{{/* Checkbox input, invoked with *uiCheckbox */}}
{{define "input-checkbox"}}
{{$.Caption}}
{{range .Values}}
{{if .Caption}}{{.Caption}}{{else}}{{.ID}}{{end}}
{{end}}
{{end}}
{{/* Range slider input, invoked with *uiSlider */}}
{{define "input-slider"}}
{{.Caption}}:
{{.Val}}
{{end}}
{{/* Multiple text fields */}}
{{define "input-multi-text"}}
{{end}}
{{/* List of discussions, invoked with []*uiBugDiscussion */}}
{{define "discussion_list"}}
{{if .}}
Title
Replies (including bot)
Last reply
{{range $item := .}}
{{link $item.Link $item.Subject}}
{{$item.External}} ({{$item.Total}})
{{formatTime $item.Last}}
{{end}}
{{end}}
{{end}}
{{/* List of test results, invoked with []*dashapi.JobInfo */}}
{{define "test_results"}}
{{if .}}
Date
Name
Commit
Repro
Result
{{range $item := .}}
{{formatDate $item.Finished}}
{{$item.KernelAlias}} {{if $item.OnMergeBase}}(merge base){{else}}(ToT){{end}}
{{link $item.KernelCommitLink (formatTagHash $item.KernelCommit)}}
{{if $item.ReproCLink}}C
{{else if $item.ReproSyzLink}}syz {{end}}
{{if ne $item.CrashTitle ""}}
{{link $item.CrashReportLink "[report]"}} {{$item.CrashTitle}}
{{else if ne $item.ErrorLink ""}}
Failed due to {{link $item.ErrorLink "an error"}}; will retry later
{{else}}
Didn't crash
{{end}}
{{end}}
{{end}}
{{end}}
{{/* List of failed repro attempts, invoked with []*uiReproAttempt */}}
{{define "repro_attempts"}}
{{if .}}
Time
Manager
Log
{{range $item := .}}
{{formatTime $item.Time}}
{{$item.Manager}}
{{link $item.LogLink "repro log"}}
{{end}}
{{end}}
{{end}}
{{/* List of AI patch versions, invoked with *uiBugPage */}}
{{define "patch_version_list"}}
Version
Stage
Reported
Report Link
Job
{{if .Header.AIActions}}Actions {{end}}
{{range $v := .PatchVersions}}
{{$v.Version}}
{{$v.Stage}}
{{formatTime $v.Reported}}
{{if $v.Link}}Discussion {{else}}Not reported{{end}}
{{link $v.JobLink $v.JobID}}
{{if $.Header.AIActions}}
{{if $v.CanIterate}}
{{end}}
{{end}}
{{end}}
{{end}}
{{/* List of AI jobs, invoked with []*uiAIJob */}}
{{define "ai_job_list"}}
ID
Workflow
Result
Correct
Bug
Created
Started
Finished
Revision
{{if .IsAdmin}}
Error
{{end}}
{{range $job := .GetJobs}}
{{link $job.Link (formatShortHash $job.ID)}}
{{$job.Workflow}}
{{range $res := $job.Results}}
{{if $res.IsBool}}
{{$res.Name}}: {{if $res.Value}}✅{{else}}❌{{end}}
{{end}}
{{end}}
{{if and $.ShowTestOnManager $job.CanTestOnManager}}
{{end}}
{{$job.Correct}}
{{link $job.DescriptionLink $job.Description}}
{{formatTime $job.Created}}
{{formatTime $job.Started}}
{{formatTime $job.Finished}}
{{link $job.CodeRevisionLink (formatShortHash $job.CodeRevision)}}
{{if $.IsAdmin}}
{{$job.ErrorSummary}}
{{if lt (len $job.ErrorSummary) (len $job.Error)}}
truncated to first 200 bytes; open job for full error
{{end}}
{{end}}
{{end}}
{{end}}
{{/* AI jobs pagination, invoked with *uiAIJobsPage */}}
{{define "ai_pagination"}}
{{end}}