bytecodealliance / bytecodealliance/wasmtime

islec panic: Should have been caught by typechecking

Open
#5,713 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
18.6k
Forks
1.8k
Avg merge
1d 18h
Merged PRs (30d)
126

Description

I found a program that crashes islec. Details:
```sh
$ git rev-parse HEAD

43022c862a1d497f4b8c7c2fce47148775503add
```
```sh
$ cat test.isle

(type bool (primitive bool))
(type i8 (primitive i8))
(type Map extern (enum))

(decl simplify (Map) Map)

(decl pure ne (i8 i8) bool)
(extern extractor ne ne)

(decl Empty () Map)
(extern extractor Empty extr_empty)
(extern constructor Empty constr_empty)

(decl Insert (i8 i8 Map) Map)
(extern extractor Insert extr_insert)
(extern constructor Insert constr_insert)

(decl Remove (i8 Map) Map)
(extern extractor Remove extr_remove)

(rule 0
(simplify (Insert k v (Empty)))
(Insert k v (Empty)))

(rule 1
(simplify (Insert k v (Remove k m)))
(simplify (Insert k v m)))

(rule 2
(simplify (Insert k v1 (Insert k v2 m)))
(simplify (Insert k v1 m)))

(rule 3
(simplify (Insert k1 v1 (Insert k2 v2 m)))
(if (ne k1 k2))
(Insert k1 v1 (Insert k2 v2 (simplify m))))

(rule
(Remove k (Empty))
(Empty))
```
```sh
$ cargo run -- test.isle

Finished dev [unoptimized + debuginfo] target(s) in 0.09s
Running `/home/langston/code/wasmtime/target/debug/islec test.isle`
thread 'main' panicked at 'Should have been caught by typechecking', cranelift/isle/isle/src/sema.rs:783:26
stack backtrace:
0: 0x5588d0fc0850 - std::backtrace_rs::backtrace::libunwind::trace::h32eb3e08e874dd27
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x5588d0fc0850 - std::backtrace_rs::backtrace::trace_unsynchronized::haa3f451d27bc11a5
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x5588d0fc0850 - std::sys_common::backtrace::_print_fmt::h5b94a01bb4289bb5
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:66:5
3: 0x5588d0fc0850 - ::fmt::hb070b7fa7e3175df
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:45:22
4: 0x5588d0fdda7e - core::fmt::write::hd5207aebbb9a86e9ISLE
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/fmt/mod.rs:1202:17
5: 0x5588d0fbdcd5 - std::io::Write::write_fmt::h3bd699bbd129ab8a
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/io/mod.rs:1679:15
6: 0x5588d0fc1ed3 - std::sys_common::backtrace::_print::h7a21be552fdf58da
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:48:5
7: 0x5588d0fc1ed3 - std::sys_common::backtrace::print::ha85c41fe4dd80b13
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:35:9
8: 0x5588d0fc1ed3 - std::panicking::default_hook::{{closure}}::h04cca40023d0eeca
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:295:22
9: 0x5588d0fc1bbf - std::panicking::default_hook::haa3ca8c310ed5402
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:314:9
10: 0x5588d0fc257a - std::panicking::rust_panic_with_hook::h7b190ce1a948faac
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:698:17
11: 0x5588d0fc2431 - std::panicking::begin_panic_handler::{{closure}}::hbafbfdc3e1b97f68
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:586:13
12: 0x5588d0fc0cfc - std::sys_common::backtrace::__rust_end_short_backtrace::hda93e5fef243b4c0
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:138:18
13: 0x5588d0fc2192 - rust_begin_unwind
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:584:5
14: 0x5588d0b0b113 - core::panicking::panic_fmt::h8d17ca1073d9a733
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/panicking.rs:142:14
15: 0x5588d0d282a6 - cranelift_isle::sema::Expr::visit::h78e17866d60d927d
at /home/langston/code/wasmtime/cranelift/isle/isle/src/sema.rs:783:26
16: 0x5588d0d284ec - cranelift_isle::sema::Expr::visit_in_rule::{{closure}}::hde0977027dc130f4
at /home/langston/code/wasmtime/cranelift/isle/isle/src/sema.rs:801:20
17: 0x5588d0d421f7 - ::add_expr::hed65b425a5a91bad
at /home/langston/code/wasmtime/cranelift/isle/isle/src/trie_again.rs:665:9
18: 0x5588d0d283d6 - cranelift_isle::sema::Expr::visit_in_rule::h5e39eb43e84c3c96
at /home/langston/code/wasmtime/cranelift/isle/isle/src/sema.rs:799:9
19: 0x5588d0d28932 - cranelift_isle::sema::Rule::visit::h893bc3c075cbe6d9
at /home/langston/code/wasmtime/cranelift/isle/isle/src/sema.rs:876:27
20: 0x5588d0dc40f7 - cranelift_isle::trie_again::RuleSetBuilder::add_rule::hce133ad78b5f9338
at /home/langston/code/wasmtime/cranelift/isle/isle/src/trie_again.rs:385:36
21: 0x5588d0dc3407 - cranelift_isle::trie_again::build::h2d99db94c20d37b4
at /home/langston/code/wasmtime/cranelift/isle/isle/src/trie_again.rs:216:9
22: 0x5588d0dcacae - cranelift_isle::overlap::check::h3c7602f0aefa0221
at /home/langston/code/wasmtime/cranelift/isle/isle/src/overlap.rs:16:31
23: 0x5588d0d3da54 - cranelift_isle::compile::compile::h80ee996e2ab2b494
at /home/langston/code/wasmtime/cranelift/isle/isle/src/compile.rs:12:17
24: 0x5588d0b133ef - cranelift_isle::compile::from_files::h531abe844c59cf17
at /home/langston/code/wasmtime/cranelift/isle/isle/src/compile.rs:23:5
25: 0x5588d0b0eb35 - islec::main::h204180e4f764a747
at /home/langston/code/wasmtime/cranelift/isle/islec/src/main.rs:27:16
26: 0x5588d0b10122 - core::ops::function::FnOnce::call_once::haeba8a3e3015b018
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ops/function.rs:248:5
27: 0x5588d0b0c795 - std::sys_common::backtrace::__rust_begin_short_backtrace::he495da2ee4c5c6c7
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:122:18
28: 0x5588d0b150e6 - std::rt::lang_start::{{closure}}::h62a6b89bd67457e9
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:166:18
29: 0x5588d0fb927f - core::ops::function::impls:: for &F>::call_once::hb69be6e0857c6cfb
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ops/function.rs:283:13
30: 0x5588d0fb927f - std::panicking::try::do_call::h39|6dfc441ee9c786
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:492:40
31: 0x5588d0fb927f - std::panicking::try::h6cdda972d28b3a4f
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:456:19
32: 0x5588d0fb927f - std::panic::catch_unwind::h376039ec264e8ef9
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panic.rs:137:14
33: 0x5588d0fb927f - std::rt::lang_start_internal::{{closure}}::hc94720ca3d4cb727
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:148:48
34: 0x5588d0fb927f - std::panicking::try::do_call::h2422fb95933fa2d5
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:492:40
35: 0x5588d0fb927f - std::panicking::try::h488286b5ec8333ff
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:456:19
36: 0x5588d0fb927f - std::panic::catch_unwind::h81636549836d2a25
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panic.rs:137:14
37: 0x5588d0fb927f - std::rt::lang_start_internal::h6ba1bb743c1e9df9
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:148:20
38: 0x5588d0b150ba - std::rt::lang_start::h858f0a28ab63a77d
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:165:17
39: 0x5588d0b0fe61 - main
40: 0x7fc5de7f3237 - __libc_start_call_main
41: 0x7fc5de7f32f5 - __libc_start_main_impl
42: 0x5588d0b0b3e1 - _start
at /build/glibc-2.34/csu/../sysdeps/x86_64/start.S:116
43: 0x0 -
```

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.