Eugene-Usachev
@Eugene-Usachev

По каким причинам тест может «падать» именно в github actions?

Написал rust.yml

name: Rust

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

env:
  CARGO_TERM_COLOR: always

jobs:
  build-debug:
    name: Build Debug
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Build Debug
      run: cargo build --verbose

  test-debug:
    name: Test Debug
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Build Debug
      run: cargo build --verbose
    - name: Run Tests Debug
      run: cargo test --verbose


Тесты постоянно проваливаются с ошибкой (signal: 11, SIGSEGV: invalid memory reference). Проблема в том, что github не помечает, на каком именно тесте он лёг. Поэтому я даже не знаю, куда смотреть. Сам разрабатываю на Ubuntu, и все тесты у меня проходят.

Вывод github

Run cargo test --verbose
       Fresh libc v0.2.161
       Fresh autocfg v1.4.0
       Fresh cfg-if v1.0.0
       Fresh unicode-ident v1.0.13
       Fresh crossbeam-utils v0.8.20
       Fresh proc-macro2 v1.0.88
       Fresh getrandom v0.2.15
       Fresh cfg_aliases v0.2.1
       Fresh version_check v0.9.5
       Fresh scopeguard v1.2.0
       Fresh lock_api v0.4.12
       Fresh quote v1.0.37
       Fresh crossbeam-epoch v0.9.18
       Fresh bitflags v2.6.0
       Fresh crossbeam-deque v0.8.5
       Fresh memoffset v0.9.1
       Fresh syn v2.0.82
       Fresh spin v0.9.8
       Fresh nanorand v0.7.0
       Fresh crossbeam-queue v0.3.11
       Fresh crossbeam-channel v0.5.13
       Fresh num_cpus v1.16.0
       Fresh once_cell v1.20.2
       Fresh zerocopy v0.7.35
       Fresh futures-sink v0.3.31
       Fresh futures-core v0.3.31
       Fresh crossbeam v0.8.4
       Fresh ahash v0.8.11
       Fresh flume v0.11.1
       Fresh core_affinity v0.8.1
       Fresh nix v0.29.0
       Fresh io-uring v0.7.1
       Fresh orengine-macros v2.0.0 (/home/runner/work/orengine/orengine/orengine-macros)
       Fresh socket2 v0.5.7
       Fresh fastrand v2.1.1
       Fresh smallvec v2.0.0-alpha.7
   Compiling orengine v0.4.0-unstable (/home/runner/work/orengine/orengine)
     Running `/home/runner/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/rustc --crate-name orengine --edition=2021 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test --check-cfg 'cfg(docsrs)' --check-cfg 'cfg(feature, values())' -C metadata=3df080d3568801d4 -C extra-filename=-3df080d3568801d4 --out-dir /home/runner/work/orengine/orengine/target/debug/deps -C incremental=/home/runner/work/orengine/orengine/target/debug/incremental -L dependency=/home/runner/work/orengine/orengine/target/debug/deps --extern ahash=/home/runner/work/orengine/orengine/target/debug/deps/libahash-d2f8b00339272b31.rlib --extern core_affinity=/home/runner/work/orengine/orengine/target/debug/deps/libcore_affinity-2bba5e24b5a10516.rlib --extern crossbeam=/home/runner/work/orengine/orengine/target/debug/deps/libcrossbeam-2cf157d5941126e0.rlib --extern fastrand=/home/runner/work/orengine/orengine/target/debug/deps/libfastrand-42826cb8e3d3a20a.rlib --extern flume=/home/runner/work/orengine/orengine/target/debug/deps/libflume-41920447e35a6fc1.rlib --extern io_uring=/home/runner/work/orengine/orengine/target/debug/deps/libio_uring-aa1e9cf086b5ad8a.rlib --extern nix=/home/runner/work/orengine/orengine/target/debug/deps/libnix-e435e9930f958c40.rlib --extern orengine_macros=/home/runner/work/orengine/orengine/target/debug/deps/liborengine_macros-d957f3b1a30dafd7.so --extern smallvec=/home/runner/work/orengine/orengine/target/debug/deps/libsmallvec-7d2c07de46ae86e0.rlib --extern socket2=/home/runner/work/orengine/orengine/target/debug/deps/libsocket2-9a122f393c1b08f4.rlib`
    Finished `test` profile [unoptimized + debuginfo] target(s) in 4.89s
     Running `/home/runner/work/orengine/orengine/target/debug/deps/orengine-3df080d3568801d4`

running 108 tests
test buf::buf_pool::tests::test_buf_pool ... ok
test buf::buffer::tests::test_from ... ok
test buf::buffer::tests::test_append_and_clear ... ok
test buf::buffer::tests::test_add_len_and_set_len_to_cap ... ok
test buf::buffer::tests::test_new ... ok
test buf::buffer::tests::test_len_and_cap ... ok
test buf::buffer::tests::test_index ... ok
test buf::buffer::tests::test_is_empty_and_is_full ... ok
test buf::buffer::tests::test_resize ... ok
test fs::dir_builder::tests::test_dir_builder ... ok
test fs::dir_builder::tests::test_dir_builder_create ... ok
test fs::shortcuts::tests::test_remove_dir ... ok
test local::pool::tests::test_new_local_pool ... ok
error: test failed, to rerun pass `--lib`

Caused by:
  process didn't exit successfully: `/home/runner/work/orengine/orengine/target/debug/deps/orengine-3df080d3568801d4` (signal: 11, SIGSEGV: invalid memory reference)



Есть ли мысли, почему тесты падают именно там, или как посмотреть, на каком?
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
@historydev
Редактирую файлы с непонятными расширениями
Попробуй собрать в виртуалке, предварительно подготовив окружение, возможно проблема в том что всё это запускается в виртуалке.
Можно докер, vbox, qemu - что угодно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
1) советую сравнить версии Rust у вас и в github runner
2) попробуйте добавить флаг

cargo test --no-fail-fast

3) у вас наверняка больше памяти, чем у дефолтного github runner (7GB).
Возможно, для какого-то теста это критично.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы