facebookexperimental / facebookexperimental/hermit

Cargo test failed for two cases on bare metal

Open
#40 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Rust
Stars
1.4k
Forks
50
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
A clear and concise description of what the bug is.
I cloned hermit on the server and ran the `cargo test`. There are two failed tests.
```rust
test rdrand_rdseed_is_masked ... FAILED
test getrandom_intercepted ... FAILED

failures:

---- rdrand_rdseed_is_masked stdout ----
Expecting determinism:
Test Run 1:
thread 'rdrand_rdseed_is_masked' panicked at 'Unsupported processor with feature info: FeatureInfo { extended_family_id: 0, extended_model_id: 6, family_id: 6, model_id: 106, stepping_id: 6, brand_index: 0, cflush_cache_line_size: 8, initial_local_apic_id: 8, max_logical_processor_ids: 128, edx_ecx: SSE3 | PCLMULQDQ | DTES64 | MONITOR | DSCPL | VMX | SMX | EIST | TM2 | SSSE3 | FMA | CMPXCHG16B | PDCM | PCID | DCA | SSE41 | SSE42 | X2APIC | MOVBE | POPCNT | TSC_DEADLINE | AESNI | XSAVE | OSXSAVE | AVX | F16C | RDRAND | FPU | VME | DE | PSE | TSC | MSR | PAE | MCE | CX8 | APIC | SEP | MTRR | PGE | MCA | CMOV | PAT | PSE36 | CLFSH | DS | ACPI | MMX | FXSR | SSE | SSE2 | SS | HTT | TM | PBE | 0x4800 }
Full family_model: (6, 106)', /home/yupan/.cargo/git/checkouts/reverie-9a587e40a0d7d3be/0e08502/reverie-ptrace/src/timer.rs:75:16
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- getrandom_intercepted stdout ----
Expecting determinism:
Test Run 1:
thread 'getrandom_intercepted' panicked at 'Unsupported processor with feature info: FeatureInfo { extended_family_id: 0, extended_model_id: 6, family_id: 6, model_id: 106, stepping_id: 6, brand_index: 0, cflush_cache_line_size: 8, initial_local_apic_id: 4, max_logical_processor_ids: 128, edx_ecx: SSE3 | PCLMULQDQ | DTES64 | MONITOR | DSCPL | VMX | SMX | EIST | TM2 | SSSE3 | FMA | CMPXCHG16B | PDCM | PCID | DCA | SSE41 | SSE42 | X2APIC | MOVBE | POPCNT | TSC_DEADLINE | AESNI | XSAVE | OSXSAVE | AVX | F16C | RDRAND | FPU | VME | DE | PSE | TSC | MSR | PAE | MCE | CX8 | APIC | SEP | MTRR | PGE | MCA | CMOV | PAT | PSE36 | CLFSH | DS | ACPI | MMX | FXSR | SSE | SSE2 | SS | HTT | TM | PBE | 0x4800 }
Full family_model: (6, 106)', /home/yupan/.cargo/git/checkouts/reverie-9a587e40a0d7d3be/0e08502/reverie-ptrace/src/timer.rs:75:16

failures:
getrandom_intercepted
rdrand_rdseed_is_masked
```
Indicate any of these common scenarios that apply:

- [ ] a program hangs under hermit
- [x] hermit panics internally
- [ ] hermit runs the program but divergence (nondeterminism) occurs

**To Reproduce**
Minimal input to reproduce the behavior.

`cargo test`

**Expected behavior**
A clear and concise description of what you expected to happen.

all tests passed

**Environment**

- [x] Linux kernel version (`uname -a`): `Linux 5.14.0-rc5 #2 SMP Sat Jun 24 11:10:07 CEST 2023 x86_64 x86_64 x86_64 GNU/Linux`
- [x] CPU version (`/proce/cpuinfo`): `Intel(R) Xeon(R) Gold 6348 CPU @ 2.60GHz`
- [x] Linux distro flavor (`/etc/issue`, `/etc/redhat-release`): `Ubuntu 20.04.4 LTS`

**Additional context**
Attach the logs to this issue as a text file generated by `hermit --log=trace --log-file=FOO run`.

Add any other context about the problem here.
I saw other people having a [similar issue ](https://github.com/facebookexperimental/hermit/issues/24) but he was running hermit inside a VM. That issue was because hermit cannot intercept CPUID instruction on VMs. Here I am running on a bare metal so I wonder what might be the reason here. Is it because of some CPU features? If that's the case, is there a list of supported CPUs by hermit.
If this is a bug, I would also like to help fix it.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.