Skip to content

Miri test fails because of neon intrinsic in aho_corasick #138

@domenukk

Description

@domenukk

We are using the Regex crate in LibAFL and when running a miri test on Mac M1, the tests fail due to a neon intrinsic. They work fine on Linux/x86.
See AFLplusplus/LibAFL#1762

test inputs::encoded::tests::test_input ... error: unsupported operation: can't call foreign function `llvm.aarch64.neon.tbl1.v16i8` on OS `macos`
    --> /Users/dmnk/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/neon/mod.rs:2438:15
     |
2438 |     transmute(vqtbl1q(transmute(t), transmute(idx)))
     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't call foreign function `llvm.aarch64.neon.tbl1.v16i8` on OS `macos`
     |
     = help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support
     = note: BACKTRACE:
     = note: inside `core::arch::aarch64::vqtbl1q_u8` at /Users/dmnk/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/neon/mod.rs:2438:15: 2438:52
     = note: inside `aho_corasick::packed::vector::aarch64_neon::<impl aho_corasick::packed::vector::Vector for core::arch::aarch64::uint8x16_t>::shuffle_bytes` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aho-corasick-1.1.2/src/packed/vector.rs:665:13: 665:38
     = note: inside `aho_corasick::packed::teddy::generic::Mask::<core::arch::aarch64::uint8x16_t>::members2` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aho-corasick-1.1.2/src/packed/teddy/generic.rs:1071:23: 1071:53
     = note: inside `aho_corasick::packed::teddy::generic::Slim::<core::arch::aarch64::uint8x16_t, 2>::candidate` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aho-corasick-1.1.2/src/packed/teddy/generic.rs:230:28: 230:61
     = note: inside `aho_corasick::packed::teddy::generic::Slim::<core::arch::aarch64::uint8x16_t, 2>::find_one` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aho-corasick-1.1.2/src/packed/teddy/generic.rs:217:17: 217:43
     = note: inside `aho_corasick::packed::teddy::generic::Slim::<core::arch::aarch64::uint8x16_t, 2>::find` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aho-corasick-1.1.2/src/packed/teddy/generic.rs:194:30: 194:65
     = note: inside `<aho_corasick::packed::teddy::builder::aarch64::SlimNeon<2> as aho_corasick::packed::teddy::builder::SearcherT>::find` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aho-corasick-1.1.2/src/packed/teddy/builder.rs:770:21: 770:50
     = note: inside `aho_corasick::packed::teddy::builder::Searcher::find` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aho-corasick-1.1.2/src/packed/teddy/builder.rs:355:13: 355:70
     = note: inside `aho_corasick::packed::api::Searcher::find_in::<&[u8]>` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/aho-corasick-1.1.2/src/packed/api.rs:540:17: 540:62
     = note: inside `<regex_automata::util::prefilter::teddy::Teddy as regex_automata::util::prefilter::PrefilterI>::find` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/teddy.rs:93:13: 94:44
     = note: inside `<std::sync::Arc<dyn regex_automata::util::prefilter::PrefilterI> as regex_automata::util::prefilter::PrefilterI>::find` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/mod.rs:481:9: 481:39
     = note: inside `regex_automata::util::prefilter::Prefilter::find` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/prefilter/mod.rs:347:13: 347:42
     = note: inside `regex_automata::hybrid::search::find_fwd_imp` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/hybrid/search.rs:74:15: 74:47
     = note: inside `regex_automata::hybrid::search::find_fwd` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/hybrid/search.rs:38:13: 38:56
     = note: inside `regex_automata::hybrid::dfa::DFA::try_search_fwd` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/hybrid/dfa.rs:595:24: 595:60
     = note: inside `regex_automata::hybrid::regex::Regex::try_search` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/hybrid/regex.rs:448:25: 448:69
     = note: inside `regex_automata::meta::wrappers::HybridEngine::try_search` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/meta/wrappers.rs:649:13: 649:44
     = note: inside `<regex_automata::meta::strategy::Core as regex_automata::meta::strategy::Strategy>::search` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/meta/strategy.rs:720:19: 720:57
     = note: inside `regex_automata::meta::regex::Regex::search_with` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/meta/regex.rs:1248:9: 1248:44
     = note: inside closure at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/meta/regex.rs:2079:31: 2079:59
     = note: inside `regex_automata::util::iter::Searcher::<'_>::try_advance::<{closure@<regex_automata::meta::regex::FindMatches<'_, '_> as core::iter::Iterator>::next::{closure#0}}>` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/iter.rs:431:27: 431:46
     = note: inside `regex_automata::util::iter::Searcher::<'_>::advance::<{closure@<regex_automata::meta::regex::FindMatches<'_, '_> as core::iter::Iterator>::next::{closure#0}}>` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/util/iter.rs:380:15: 380:39
     = note: inside `<regex_automata::meta::regex::FindMatches<'_, '_> as core::iter::Iterator>::next` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-automata-0.4.3/src/meta/regex.rs:2079:9: 2079:61
     = note: inside `<regex::Matches<'_, '_> as core::iter::Iterator>::next` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-1.10.2/src/regex/string.rs:2160:9: 2161:20
     = note: inside `<core::iter::Enumerate<regex::Matches<'_, '_>> as core::iter::Iterator>::next` at /Users/dmnk/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/enumerate.rs:47:17: 47:33
     = note: inside closure at /Users/dmnk/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/peekable.rs:217:43: 217:54
     = note: inside `core::option::Option::<core::option::Option<(usize, regex::Match<'_>)>>::get_or_insert_with::<{closure@core::iter::Peekable<core::iter::Enumerate<regex::Matches<'_, '_>>>::peek::{closure#0}}>` at /Users/dmnk/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/option.rs:1658:26: 1658:29
     = note: inside `core::iter::Peekable::<core::iter::Enumerate<regex::Matches<'_, '_>>>::peek` at /Users/dmnk/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/peekable.rs:217:9: 217:55
     = note: inside `regex::Regex::replacen::<&str>` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-1.10.2/src/regex/string.rs:907:16: 907:25
     = note: inside `regex::Regex::replace_all::<&str>` at /Users/dmnk/.cargo/registry/src/index.crates.io-6f17d22bba15001f/regex-1.10.2/src/regex/string.rs:837:9: 837:40
note: inside `<inputs::encoded::NaiveTokenizer as inputs::encoded::Tokenizer>::tokenize`
    --> libafl/src/inputs/encoded.rs:156:22
     |
156  |         let string = self.comment_re.replace_all(string, "").to_string();
     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `<inputs::encoded::TokenInputEncoderDecoder as inputs::encoded::InputEncoder<inputs::encoded::NaiveTokenizer>>::encode`
    --> libafl/src/inputs/encoded.rs:64:22
     |
64   |         let tokens = tokenizer.tokenize(bytes)?;
     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `inputs::encoded::tests::test_input`
    --> libafl/src/inputs/encoded.rs:277:21
     |
277  |           let input = ed
     |  _____________________^
278  | |             .encode("/* test */a = 'pippo baudo'; b=c+a\n".as_bytes(), &mut t)
     | |______________________________________________________________________________^
note: inside closure
    --> libafl/src/inputs/encoded.rs:274:20
     |
273  |     #[test]
     |     ------- in this procedural macro expansion
274  |     fn test_input() {
     |                    ^
     = note: this error originates in the attribute macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions