rust-based-os-comp2022 icon indicating copy to clipboard operation
rust-based-os-comp2022 copied to clipboard

[Bug] Lab1 未改动部分的测试失败

Open h888866j opened this issue 1 year ago • 1 comments

Describe the bug

commintID d64c592e50daa5d7af9971f18705f6d5feab6256(add vscode debug support.)之后拉取的仓库里, lab1 测试无法通过问题

To Reproduce Steps to reproduce the behavior:

  1. 拉取最新 template repo
  2. cd repo根目录
  3. cd -r os3-ref/* os3
  4. 在TCB里添加的字段syscall_times: [u32; MAX_SYSCALL_NUM],并在 TCB初始时添上这个字段syscall_times: [0;MAX_SYSCALL_NUM]

MAX_SYSCALL_NUM 是 500

  1. 这时在repo根目录下 make test3 就会出现原先应该通过的测试,变得不能通过了,测试结果如下:
python3 check/ch3.py < stdout-ch3
[PASS] found <Hello, world from user mode program!>
[PASS] found <Test power_3 OK25719!>
[PASS] found <Test power_5 OK25719!>
[PASS] found <Test power_7 OK25719!>
[FAIL] not found <get_time OK25719! (\d+)>      <<< 这里
[FAIL] not found <Test sleep OK25719!>          <<< 这里
[PASS] found <current time_msec = (\d+)>
[FAIL] not found <time_msec = (\d+) after sleeping (\d+) ticks, delta = (\d+)ms!>        <<< 这里
[FAIL] not found <Test sleep1 passed25719!>     <<< 这里
[PASS] found <Test write A OK25719!>
[PASS] found <Test write B OK25719!>
[PASS] found <Test write C OK25719!>
[FAIL] not found <string from task info test>   <<< 这里原本就是作业需要通过的测试
[FAIL] not found <Test task info OK25719!>      <<< 这里原本就是作业需要通过的测试
[PASS] not found <FAIL: T.T> 

qemu 输出中有这么两行

Panicked at src/bin/ch3b_sleep.rs:16, assertion failed: current_time > 0
current time_msec = 0

没有修改过sys_get_time()系统调用,只增加了上面提到的两处就会出现问题。原本作业应该已经完成,但是测试失败,一路回溯过来发现只添加这两行代码就会出问题

Expected behavior 基础测试通过,作业测试因未完成而不通过

Environment (please complete the following information):

  • OS: Codespace , WSL ubuntu2004 均能复现问题
  • Rust Version: required toolchain
  • QEMU Version: 7.0.0

临时解决办法 注释掉Cargo.toml 中以下三行

[profile.release]
debug = true
opt-level = 0

h888866j avatar Aug 02 '22 00:08 h888866j

TCB里面放一个500大小的数组太大了, 似乎是内存的问题, 你改成5就可以了. btw 似乎这样实现的性能比较低

Comet959 avatar Nov 01 '22 13:11 Comet959