Skip to content
This repository was archived by the owner on May 10, 2023. It is now read-only.
This repository was archived by the owner on May 10, 2023. It is now read-only.

Extension compiles twice when only one Ruby version is specified #133

@ankane

Description

@ankane

Hi, I'm running into an odd issue when only one Ruby version is specified where the extension compiles twice. I'm able to reproduce with oxi-test.

Workflow - ankane/oxi-test@9f48d1a

name: debug
on: push
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: 3.2
      - uses: oxidize-rb/cross-gem-action@v7
        with:
          platform: x86_64-linux
          version: latest
          ruby-versions: "3.2"

CI output - https://github.com/ankane/oxi-test/actions/runs/3920839152/jobs/6702689640

Compiling ext v0.1.0 (/home/runner/work/oxi-test/oxi-test/ext)
Compiling rb-sys-build v0.9.54
Compiling rb-sys v0.9.54

and later...

Compiling ext v0.1.0 (/home/runner/work/oxi-test/oxi-test/ext)
Compiling rb-sys-build v0.9.54
Compiling rb-sys v0.9.54

With Tokenizers Ruby, this is also causes a crash in the generated gem, which doesn't happen when 2+ versions are specified.

thread '<unnamed>' panicked at 'internal error: entered unreachable code', /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/magnus-0.4.4/src/value.rs:200:21                                            
stack backtrace:                                             
   0:     0x7f0451013690 - std::backtrace_rs::backtrace::libunwind::trace::h1d00f3fcf4cb5ac4
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f0451013690 - std::backtrace_rs::backtrace::trace_unsynchronized::h920a6ff332484ee2
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f0451013690 - std::sys_common::backtrace::_print_fmt::hd7323920c925af6d
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x7f0451013690 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h3155a8c966b4beb5
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f045103511e - core::fmt::write::h062c617411b691df
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/core/src/fmt/mod.rs:1209:17
   5:     0x7f045100e125 - std::io::Write::write_fmt::hb61fdf1275c61e1c
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/io/mod.rs:1682:15
   6:     0x7f0451013455 - std::sys_common::backtrace::_print::hd1b4d9664ab500e0
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x7f0451013455 - std::sys_common::backtrace::print::hca896ae22beb06cb
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x7f0451014d0f - std::panicking::default_hook::{{closure}}::h0b5eeed5cf36ab5f
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/panicking.rs:267:22
   9:     0x7f0451014a4a - std::panicking::default_hook::h8932b573145a321b
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/panicking.rs:286:9
  10:     0x7f0451015408 - std::panicking::rust_panic_with_hook::h4b1447a24e3e94f8
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/panicking.rs:688:13
  11:     0x7f0451015161 - std::panicking::begin_panic_handler::{{closure}}::h8701da9995a3820c
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/panicking.rs:577:13
  12:     0x7f0451013b3c - std::sys_common::backtrace::__rust_end_short_backtrace::hb696c5ed02a01598
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/sys_common/backtrace.rs:137:18
  13:     0x7f0451014ec2 - rust_begin_unwind
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/std/src/panicking.rs:575:5
  14:     0x7f0450c0b123 - core::panicking::panic_fmt::h8aa706a976963c88
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/core/src/panicking.rs:65:14
  15:     0x7f0450c0b1fd - core::panicking::panic::h622b2a38bce78ff3
                               at /rustc/90743e7298aca107ddaa0c202a4d3604e29bfeb6/library/core/src/panicking.rs:115:5
  16:     0x7f0450c6996e - <magnus::r_string::RString as magnus::try_convert::TryConvert>::try_convert::h4cf22acec1b6d4f4
  17:     0x7f0450c68683 - <alloc::string::String as magnus::try_convert::TryConvert>::try_convert::h24f1eed74bf2a492
  18:     0x7f0450c2f794 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h0388255aefb12b21
  19:     0x7f0450c414f6 - tokenizers::init::anon::ha65ccae5cf3ffbfa

This probably isn't an issue for most production workflows (which will likely specify multiple versions), but it:

  1. slows down testing a single version
  2. could cause odd crashes like the one above

Edit: Sorry, meant to post in cross-gem-action if you want to transfer this there.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions