Closed MichaelSnowden closed 11 months ago
Hi @MichaelSnowden. The CI on the project has been running successfully so you might check the setup there for github actions. To build it and run you need x86_64 Linux machine. It won't work on WSL. (VMs might work but I'm not sure, it depends)
We're not actively developing hermit at the moment but you might get success with your use case as this is something we've been testing.
Thatnks for the pointers. I was looking at that, but it's difficult because GHA's ubuntu-latest
image isn't a Docker image. However, act
has some Docker images which are pretty close to the GHA ones. Based on that, I came up with this Dockerfile, which builds successfully for me. However, there are quite a few warnings, and cargo test
is failing.
# Use the closest thing to the GHA Ubuntu image
FROM catthehacker/ubuntu:act-latest
# Set the working directory (optional, for clarity and organization)
WORKDIR /workspace
# Install dependencies
RUN apt-get update && apt-get install -y \
build-essential \
curl \
libunwind-dev \
# Clean up to reduce image size
&& rm -rf /var/lib/apt/lists/*
# Install Rust
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
# Set the environment variable so that cargo is in the PATH
ENV PATH="/root/.cargo/bin:${PATH}"
# Clone the repository
RUN git clone https://github.com/facebookexperimental/hermit
# Change to the repository directory
WORKDIR /workspace/hermit
# Build the project
RUN cargo update \
&& cargo build
# Set the default command to execute
ENTRYPOINT ["/bin/bash"]
I build and run it with --platform linux/amd64
.
However, I do get some test errors:
Compiling hermetic_infra_hermit_flaky-tests v0.0.0 (/workspace/hermit/flaky-tests)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
Finished test [unoptimized + debuginfo] target(s) in 1m 50s
Running unittests src/lib.rs (target/debug/deps/detcore-0b67f0e05996fff3)
running 43 tests
test cpuid::tests::cpuid_leaf_count ... ok
test detlog::tests::test_detlog ... ok
test dirents::test::dents_can_deserialize_serialize ... ok
test dirents::test::dents64_can_deserialize_serialize ... ok
test dirents::test::dents64_can_serialize_sort_deserialize ... ok
test dirents::test::dents_can_serialize_sort_deserialize ... ok
test ivar::tests::test_ivar_simple1 ... ok
test ivar::tests::test_ivar_concurrent_put_get2 ... ok
test ivar::tests::test_ivar_concurrent_put_get1 ... ok
test ivar::tests::test_ivar_multi_put - should panic ... ok
test logdiff::test::test_compare_with_no_color ... ok
test logdiff::test::test_compare_with_color ... ok
test logdiff::test::test_filter_infos ... ok
test logdiff::test::test_filter_deterministic_with_filter ... ok
test logdiff::test::test_filter_deterministic ... ok
test logdiff::test::test_extract_log_messages ... ok
test mvar::tests::test_mvar_as_channel ... ok
test mvar::tests::test_mvar_as_channel_concurrent_readers ... ok
test logdiff::test::test_strip_log ... ok
test mvar::tests::test_mvar_as_channel_spsc ... ok
test mvar::tests::test_mvar_concurrent_put_get1 ... ok
test mvar::tests::test_mvar_concurrent_put_get2 ... ok
test mvar::tests::test_mvar_as_channel_try_spsc ... ok
test mvar::tests::test_mvar_simple1 ... ok
test preemptions::tests::normalize_preemption_record ... ok
test preemptions::tests::print_preemptionrecord ... ok
test preemptions::tests::round_trip_vec_representations ... ok
test preemptions::tests::with_latest_preempt_removed::removes_entire_history_for_last_tid_if_no_non_default_priority_changes ... ok
test preemptions::tests::test_split_map ... ok
test preemptions::tests::with_latest_preempt_removed::removes_latest_priority_change_and_coalesces_into_final_priority ... ok
test preemptions::tests::with_latest_preempt_removed::removes_only_priority_change_and_coalesces_into_final_priority ... ok
test scheduler::replayer::tests::test_context_switch_pre_hook ... ok
test scheduler::replayer::tests::test_context_switch_post_hook ... ok
test scheduler::replayer::tests::test_continue_ ... ok
test scheduler::replayer::tests::test_respect_branch_context_switch ... ok
test scheduler::replayer::tests::test_respect_branch_count ... ok
test scheduler::replayer::tests::test_fast_forward ... ok
test scheduler::test::test_my_thread_group2 ... ok
test scheduler::test::test_my_thread_group1 ... ok
test syscalls::files::test::linux_flags_assumptions ... ok
test logdiff::test::test_log_diff_compares_detlog ... ok
test logdiff::test::test_log_diff_with_color ... ok
test logdiff::test::test_log_diff_syscalls ... ok
test result: ok. 43 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s
Running unittests scripts/syscaller.rs (target/debug/deps/syscaller-0be6ad9abf4ca025)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/misc/mod.rs (target/debug/deps/tests_misc-25551cd143127094)
running 3 tests
test has_rdrand_without_detcore ... FAILED
2023-11-11T02:22:30.337825Z INFO detcore::scheduler::runqueue: DETLOG SCHEDRAND: seeding scheduler runqueue with seed 0
2023-11-11T02:22:30.338097Z INFO detcore::scheduler::runqueue: DETLOG SCHEDRAND: seeding scheduler runqueue with seed 0
2023-11-11T02:22:30.662566Z INFO detcore::tool_global: detcore shut down, destroying global state
test rdrand_rdseed_is_masked ... FAILED
2023-11-11T02:22:30.768979Z INFO detcore::tool_global: detcore shut down, destroying global state
test getrandom_intercepted ... FAILED
failures:
---- has_rdrand_without_detcore stdout ----
thread 'has_rdrand_without_detcore' panicked at detcore/tests/misc/mod.rs:60:9:
assertion failed: feature_ext.has_rdseed()
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- rdrand_rdseed_is_masked stdout ----
Expecting determinism:
Test Run 1:
thread 'rdrand_rdseed_is_masked' panicked at /root/.cargo/git/checkouts/reverie-9a587e40a0d7d3be/dd1490f/safeptrace/src/lib.rs:317:22:
InvalidState(Wait(Exited(Pid(2469), Exited(0))))
---- getrandom_intercepted stdout ----
Expecting determinism:
Test Run 1:
thread 'getrandom_intercepted' panicked at /root/.cargo/git/checkouts/reverie-9a587e40a0d7d3be/dd1490f/safeptrace/src/lib.rs:317:22:
InvalidState(Wait(Exited(Pid(2471), Exited(0))))
failures:
getrandom_intercepted
has_rdrand_without_detcore
rdrand_rdseed_is_masked
test result: FAILED. 0 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.11s
error: test failed, to rerun pass `-p detcore --test tests_misc`
I installed Go on the above Docker image and ran it on a hello world script, but it doesn't seem to be working:
root@fc53f076289f:/workspace/hermit# cat main.go
package main
func main() {
println("Hello")
}
root@fc53f076289f:/workspace/hermit# go version
go version go1.18.1 linux/amd64
root@fc53f076289f:/workspace/hermit# cargo run --bin hermit run go run main.go
warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
warning: use of deprecated method `chrono::DateTime::<Tz>::timestamp_nanos`: use `timestamp_nanos_opt()` instead
--> detcore/src/tool_global.rs:859:52
|
859 | LogicalTime::from_nanos(self.cfg.epoch.timestamp_nanos() as u64),
| ^^^^^^^^^^^^^^^
|
= note: `#[warn(deprecated)]` on by default
warning: use of deprecated method `chrono::DateTime::<Tz>::timestamp_nanos`: use `timestamp_nanos_opt()` instead
--> detcore/src/tool_global.rs:883:40
|
883 | LogicalTime::from_nanos(dt.timestamp_nanos() as u64)
| ^^^^^^^^^^^^^^^
warning: use of deprecated method `chrono::DateTime::<Tz>::timestamp_nanos`: use `timestamp_nanos_opt()` instead
--> detcore/src/tool_global.rs:899:56
|
899 | LogicalTime::from_nanos(self.cfg.epoch.timestamp_nanos() as u64),
| ^^^^^^^^^^^^^^^
warning: use of deprecated method `chrono::DateTime::<Tz>::timestamp_nanos`: use `timestamp_nanos_opt()` instead
--> detcore/src/tool_global.rs:293:67
|
293 | let epoch_ns = LogicalTime::from_nanos(self.cfg.epoch.timestamp_nanos() as u64);
| ^^^^^^^^^^^^^^^
warning: `detcore` (lib) generated 4 warnings
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
<jemalloc>: MADV_DONTNEED does not work (memset will be used instead)
<jemalloc>: (This is the expected behaviour if you are running under QEMU)
warning: unused import: `types::Report`
--> hermit-cli/src/bin/hermit/analyze/mod.rs:18:9
|
18 | pub use types::Report;
| ^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: `hermit` (bin "hermit") generated 1 warning (run `cargo fix --bin "hermit"` to apply 1 suggestion)
Finished dev [unoptimized + debuginfo] target(s) in 0.85s
Running `target/debug/hermit run go run main.go`
thread 'main' panicked at /root/.cargo/git/checkouts/reverie-9a587e40a0d7d3be/dd1490f/reverie-ptrace/src/perf.rs:532:19:
Unexpected error during perf feature check: -38 ENOSYS (Invalid system call number)
stack backtrace:
0: 0x40016e855c - std::backtrace_rs::backtrace::libunwind::trace::h206c2e1d04e474d4
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
1: 0x40016e855c - std::backtrace_rs::backtrace::trace_unsynchronized::hc91330a2f9cb0edd
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x40016e855c - std::sys_common::backtrace::_print_fmt::hf8a6e54358fb19c2
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/sys_common/backtrace.rs:67:5
3: 0x40016e855c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h08d26c1388c2b6a3
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/sys_common/backtrace.rs:44:22
4: 0x4001716af0 - core::fmt::rt::Argument::fmt::h6268e01944893dd0
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/core/src/fmt/rt.rs:142:9
5: 0x4001716af0 - core::fmt::write::h1e713169a270f87f
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/core/src/fmt/mod.rs:1120:17
6: 0x40016e574f - std::io::Write::write_fmt::he8c1854af06dcd8b
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/io/mod.rs:1762:15
7: 0x40016e8344 - std::sys_common::backtrace::_print::h876a12bb8bba31bc
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/sys_common/backtrace.rs:47:5
8: 0x40016e8344 - std::sys_common::backtrace::print::haedd53d9d4f81818
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/sys_common/backtrace.rs:34:9
9: 0x40016e9947 - std::panicking::default_hook::{{closure}}::h493d2159d3a9f9d3
10: 0x40016e96af - std::panicking::default_hook::h41ff4235acc4826e
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panicking.rs:292:9
11: 0x40016e9dc8 - std::panicking::rust_panic_with_hook::ha89d3c5444f60fc1
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panicking.rs:779:13
12: 0x40016e9cae - std::panicking::begin_panic_handler::{{closure}}::hf9042243d7e46e84
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panicking.rs:657:13
13: 0x40016e8a26 - std::sys_common::backtrace::__rust_end_short_backtrace::h59fbef882d171ed7
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/sys_common/backtrace.rs:170:18
14: 0x40016e9a12 - rust_begin_unwind
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panicking.rs:645:5
15: 0x40001e8a95 - core::panicking::panic_fmt::ha4da013019e6a486
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/core/src/panicking.rs:72:14
16: 0x4000969929 - reverie_ptrace::perf::test_perf_pmu_support::h0dad8500265a4bd8
at /root/.cargo/git/checkouts/reverie-9a587e40a0d7d3be/dd1490f/reverie-ptrace/src/perf.rs:532:19
17: 0x400096b8a6 - <reverie_ptrace::perf::IS_PERF_SUPPORTED as core::ops::deref::Deref>::deref::__static_ref_initialize::hca39f1a4497e5521
at /root/.cargo/git/checkouts/reverie-9a587e40a0d7d3be/dd1490f/reverie-ptrace/src/perf.rs:538:42
18: 0x400096b8a6 - core::ops::function::FnOnce::call_once::ha121322390aed6e4
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/core/src/ops/function.rs:250:5
19: 0x400094fb5f - lazy_static::lazy::Lazy<T>::get::{{closure}}::h497f7a42f717fc46
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lazy_static-1.4.0/src/inline_lazy.rs:31:29
20: 0x4000934a87 - std::sync::once::Once::call_once::{{closure}}::h80b2512c816d6f28
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/sync/once.rs:149:41
21: 0x4000971bb1 - std::sys_common::once::futex::Once::call::h69060700763dd713
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/sys_common/once/futex.rs:124:21
22: 0x40009347bf - std::sync::once::Once::call_once::h3dc8c297df76ed66
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/sync/once.rs:149:9
23: 0x400096b3a6 - lazy_static::lazy::Lazy<T>::get::he6223a9f56771bac
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lazy_static-1.4.0/src/inline_lazy.rs:30:9
24: 0x400096b3a6 - <reverie_ptrace::perf::IS_PERF_SUPPORTED as core::ops::deref::Deref>::deref::__stability::h6f6ce42e7dd2022d
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lazy_static-1.4.0/src/lib.rs:142:21
25: 0x400096b3a6 - <reverie_ptrace::perf::IS_PERF_SUPPORTED as core::ops::deref::Deref>::deref::h7facecbd45c16660
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lazy_static-1.4.0/src/lib.rs:144:17
26: 0x400096a68e - reverie_ptrace::perf::is_perf_supported::h7035150dbd0dbbd8
at /root/.cargo/git/checkouts/reverie-9a587e40a0d7d3be/dd1490f/reverie-ptrace/src/perf.rs:544:5
27: 0x40002f4a84 - hermit::run::RunOpts::validate_args::h610aeb3e954ae2ac
at /workspace/hermit/hermit-cli/src/bin/hermit/run.rs:558:52
28: 0x40002f4868 - hermit::run::RunOpts::main::h4d271d12298cc03a
at /workspace/hermit/hermit-cli/src/bin/hermit/run.rs:518:9
29: 0x40002d683d - hermit::Subcommand::main::hea1198d4c76f3ab7
at /workspace/hermit/hermit-cli/src/bin/hermit/main.rs:82:35
30: 0x40002d84bf - hermit::main::h60d43cd6065498a6
at /workspace/hermit/hermit-cli/src/bin/hermit/main.rs:98:5
31: 0x400028717b - core::ops::function::FnOnce::call_once::h127f17e563adbaf3
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/core/src/ops/function.rs:250:5
32: 0x40002cbe1e - std::sys_common::backtrace::__rust_begin_short_backtrace::hfcc2d214824d9129
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/sys_common/backtrace.rs:154:18
33: 0x4000230f71 - std::rt::lang_start::{{closure}}::hf4a77cc60f32bab5
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/rt.rs:167:18
34: 0x40016deb07 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h76fbd0d643b236b8
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/core/src/ops/function.rs:284:13
35: 0x40016deb07 - std::panicking::try::do_call::h3f074eb441dc2e73
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panicking.rs:552:40
36: 0x40016deb07 - std::panicking::try::hf6ee24bcb846028c
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panicking.rs:516:19
37: 0x40016deb07 - std::panic::catch_unwind::h1e400aad52315802
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panic.rs:142:14
38: 0x40016deb07 - std::rt::lang_start_internal::{{closure}}::h8a0df2fc86ce15e9
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/rt.rs:148:48
39: 0x40016deb07 - std::panicking::try::do_call::ha795027ae0e07650
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panicking.rs:552:40
40: 0x40016deb07 - std::panicking::try::hfd92e957f86dfff0
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panicking.rs:516:19
41: 0x40016deb07 - std::panic::catch_unwind::hd9362754ce98d7d7
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/panic.rs:142:14
42: 0x40016deb07 - std::rt::lang_start_internal::h3cc6e598a17e32c8
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/rt.rs:148:20
43: 0x4000230f4a - std::rt::lang_start::h50d89f00f21c72f0
at /rustc/edf0b1db0a7f29d71ee82cfc53bdc170fe74e501/library/std/src/rt.rs:166:17
44: 0x40002d85ae - main
45: 0x40036a4d90 - <unknown>
46: 0x40036a4e40 - __libc_start_main
47: 0x40001e93c5 - _start
root@fc53f076289f:/workspace/hermit#
@MichaelSnowden we never tested this in Docker and it might not work at all since Hermit is somewhat of Docker itself. I ran cargo test
using nightly compiler on our Linux server that we use for development and didn't observe errors you saw and it succeeded. Before open sourcing this I remember installing latest stable Ubuntu on a Lenovo laptop and it worked there as well.
The errors also indicate that you might be running it in x86 emulator, this might not work since hermit relies on certain hardware features. The best way to get started is to run it on pure x86 Linux machine without any virtualization/containerisation going on. You might get success with a virtual machine too but there are more factors that can affect it.
As I mentioned we're not actively developing hermit anymore but we run all e2e tests in our CI system so you might get something useful out of this repo. You can find those tests under "tests" directory with Buck based setup (which we haven't gotten to get working in OSS repo, but you can get the idea what they do)
Gotcha, I'll try running without Docker. Thanks!
Feature Description
I'd like some instructions on what prerequisites are needed to build Hermit. The documentation only mentions running
cargo build
, but that does not work for me out of the box on therust
Docker image. I've also tried using the Dockerfile in thedocker
branch here, but that doesn't even havecargo
.Here's what the output looks like if I try building on the latest
rust
Docker image:Feature purpose and use cases I actually don't know how to build and use this repo. I'm currently trying to use it to see if I can make some Go race conditions we have in my app more reproducible.