Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
id = "1039-qperf-monolithic-perf-module"
pr = 1039
title = "qperf:单体 perf 模块与巨型输出结构体"
remote = "https://github.com/rcore-os/tgoskits.git"
base = "f0a27a0a47b0bf520a5bad2824e399616428b04a"
head = "4e6d7ecac930eec51c419eb8cea28e396fe82a39"
source = "https://github.com/rcore-os/tgoskits/pull/1039#discussion_r3585803023"
fixed_by = "0bfaa3e6a3d90d81ff7a344e434f1274673ad593"

[[expected]]
id = "qperf-perf-module-mixes-responsibilities"
path = "scripts/axbuild/src/starry/perf.rs"
line = 56
severity = "major"
description = "该 PR 将 perf.rs 从 406 行扩展到 2013 行,并把 PerfOutputs 从 6 个字段扩展到 28 个;参数、构建、QEMU/QMP 生命周期、监控、指标、analyzer、ELF 解析和报告输出被集中在同一模块和大结构体中。"
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@ path = "os/arceos/modules/axtask/src/run_queue.rs"
line = 1125
severity = "major"
description = "owner CPU 清空 deferred wake 时总是调用 kick_remote_cpu(target)。select_wake_run_queue 可能再次选择同一个 owner CPU 作为 target,而这种 self-kick 不会产生作用。因此,可运行任务会丢失原始远端唤醒者提供的 reschedule 通知,并可能在 owner 进入 idle 后一直留在队列中,直到后续 tick 才得到调度。"
match_if = "评审必须指出:deferred-wake drain 在 target 为当前或 owner CPU 时会丢失必要的调度通知,因为 kick_remote_cpu 对 self-target 无效;并要求显式触发本地 reschedule,或用等价机制保留 handoff 状态。"
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@ path = "os/StarryOS/kernel/src/syscall/net/opt.rs"
line = 521
severity = "major"
description = "新的 IPV6_RECVPKTINFO/IPV6_PKTINFO 快速路径在调用 ensure_ipv6_socket 前直接返回成功。因此,AF_INET 套接字可以成功使用 IPPROTO_IPV6 选项;这与 Linux 以及现有 IPv6 选项路径不一致,后者会对地址族不匹配返回 ENOPROTOOPT。getsockopt 路径存在同样问题。"
match_if = "评审必须指出:新接受的 IPv6 pktinfo 选项在 set 和/或 get 路径中绕过 IPv6 套接字地址族校验,导致 AF_INET 套接字被错误接受;并要求在成功返回前调用 ensure_ipv6_socket 或执行等价校验。"
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@ path = "drivers/net/realtek-rtl8125/src/hw.rs"
line = 550
severity = "major"
description = "该回归测试只检查新常量之间的关系,从未调用 hw_phy_config,也未观察 PHY 读写。因此,即使删除生产代码中的 MII_CTRL1000 和 MII_BMCR 配置,测试仍会通过,原来的自协商缺陷也会复现。"
match_if = "评审必须指出:新增测试只验证常量,而没有覆盖生产 PHY 配置行为,所以移除新增的页选择、通告和重启序列后测试仍不会失败;并要求通过记录型或 mock PHY 边界,或等价方式建立确定性的生产路径回归测试。"
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@ path = "test-suit/axvisor/normal/qemu/smoke/qemu-x86_64-svm.toml"
line = 25
severity = "major"
description = "SVM 与 VMX 嵌套虚拟化冒烟配置删掉了仅有的有限 timeout。解析后 QemuConfig.timeout 变为 None,测试运行器因而不再安装 watchdog;一旦 QEMU 启动、guest shell 或结束条件卡住,任务会无限等待。慢速 runner 已可通过提高基线值或 timeout scale 放宽,不应通过删除超时规避失败。"
match_if = "评审必须指出:SVM 和 VMX 配置删除 timeout 会使 watchdog 失效,并导致 QEMU 或 guest shell 卡住时无限等待;同时要求为两者恢复有限超时,允许调整基线值或使用 timeout scale。只泛泛建议增加超时或只讨论测试速度不算命中。"
10 changes: 4 additions & 6 deletions scripts/agent-review-bench/schemas/grade.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,12 @@
"items": {
"type": "object",
"additionalProperties": false,
"required": ["expected_id", "finding_index", "reason"],
"required": ["expected_id", "finding_indices", "reason"],
"properties": {
"expected_id": { "type": "string" },
"finding_index": {
"anyOf": [
{ "type": "integer", "minimum": 0 },
{ "type": "null" }
]
"finding_indices": {
"type": "array",
"items": { "type": "integer", "minimum": 0 }
},
"reason": { "type": "string" }
}
Expand Down
9 changes: 2 additions & 7 deletions scripts/axbuild/src/agent_review_bench/cases.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ pub(super) struct ExpectedFinding {
pub(super) line: usize,
pub(super) severity: Severity,
pub(super) description: String,
pub(super) match_if: String,
}

#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
Expand Down Expand Up @@ -226,11 +225,8 @@ fn validate_case_schema(case: &BenchCase) -> anyhow::Result<()> {
if expected.line == 0 {
bail!("finding `{}` line must be greater than zero", expected.id);
}
if expected.description.trim().is_empty() || expected.match_if.trim().is_empty() {
bail!(
"finding `{}` description and match_if must not be empty",
expected.id
);
if expected.description.trim().is_empty() {
bail!("finding `{}` description must not be empty", expected.id);
}
}
Ok(())
Expand Down Expand Up @@ -410,7 +406,6 @@ mod tests {
line: 1,
severity: Severity::Major,
description: "sample defect".into(),
match_if: "reviewer identifies sample defect".into(),
}],
}
}
Expand Down
Loading
Loading