aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/manager/http.go
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2025-08-21 19:00:20 +0200
committerTaras Madan <tarasmadan@google.com>2025-08-28 11:36:44 +0000
commitd401b9d77980e7469e1c6eaa282f33df0fcfb3df (patch)
tree4a3f1285ece64120bbe75e5f336056adc77ef3dc /pkg/manager/http.go
parent030f691787a240a447c5ec1491804160afa4050d (diff)
pkg/manager: add Rank column with tooltips to the main page
Diffstat (limited to 'pkg/manager/http.go')
-rw-r--r--pkg/manager/http.go41
1 files changed, 32 insertions, 9 deletions
diff --git a/pkg/manager/http.go b/pkg/manager/http.go
index e6a7d6b46..61d208f41 100644
--- a/pkg/manager/http.go
+++ b/pkg/manager/http.go
@@ -29,6 +29,7 @@ import (
"github.com/google/syzkaller/pkg/html/pages"
"github.com/google/syzkaller/pkg/log"
"github.com/google/syzkaller/pkg/mgrconfig"
+ "github.com/google/syzkaller/pkg/report"
"github.com/google/syzkaller/pkg/stat"
"github.com/google/syzkaller/pkg/vcs"
"github.com/google/syzkaller/pkg/vminfo"
@@ -355,12 +356,33 @@ func makeUICrashType(info *BugInfo, startTime time.Time, repros map[string]bool)
triaged := reproStatus(info.HasRepro, info.HasCRepro, repros[info.Title],
info.ReproAttempts >= MaxReproAttempts)
return UICrashType{
- BugInfo: *info,
- New: info.FirstTime.After(startTime),
- Active: info.LastTime.After(startTime),
- Triaged: triaged,
- Crashes: crashes,
+ BugInfo: *info,
+ RankTooltip: higherRankTooltip(info.Title, info.TailTitles),
+ New: info.FirstTime.After(startTime),
+ Active: info.LastTime.After(startTime),
+ Triaged: triaged,
+ Crashes: crashes,
+ }
+}
+
+// higherRankTooltip generates the prioritized list of the titles with higher Rank
+// than the firstTitle has.
+func higherRankTooltip(firstTitle string, titlesInfo []*report.TitleFreqRank) string {
+ baseRank := report.TitlesToImpact(firstTitle)
+ res := ""
+ for _, ti := range titlesInfo {
+ if ti.Rank <= baseRank {
+ continue
+ }
+ res += fmt.Sprintf("[rank %2v, freq %5.1f%%] %s\n",
+ ti.Rank,
+ 100*float32(ti.Count)/float32(ti.Total),
+ ti.Title)
+ }
+ if res != "" {
+ return fmt.Sprintf("[rank %2v, originally] %s\n%s", baseRank, firstTitle, res)
}
+ return res
}
var crashIDRe = regexp.MustCompile(`^\w+$`)
@@ -1024,10 +1046,11 @@ type UICrashPage struct {
type UICrashType struct {
BugInfo
- New bool // was first found in the current run
- Active bool // was found in the current run
- Triaged string
- Crashes []UICrash
+ RankTooltip string
+ New bool // was first found in the current run
+ Active bool // was found in the current run
+ Triaged string
+ Crashes []UICrash
}
type UICrash struct {