Git Product home page Git Product logo

tree-splicer's Introduction

tree-splicer

tree-splicer is a simple grammar-based test case generator. It parses a number of input files using tree-sitter grammars, and produces new files formed by splicing together their ASTs.

tree-splicer generates test cases in the tree-crasher fuzzer and in icemaker, though it can also be used as a standalone tool.

tree-sitter grammars are resistant to syntax errors. Therefore, tree-splicer can even mutate syntactically-invalid inputs! You can also use tree-splicer with an incomplete grammar.

Example

Given this simple Rust program:

use std::env;

fn even(x: usize) -> bool {
    if x % 2 == 0 {
        return true;
    } else {
        return false;
    }
}

fn main() -> () {
    let argc = env::args().len();
    println!("Hello, world!");
    if even(argc) {
        println!("Even!");
    } else {
        println!("Odd!");
    }
    return ();
}

Here are a few candidates created by tree-splicer-rust:

use even::env;

fn even() -> bool {
    if even(argc) {
        println!("Even!");
    } else {
        println!("Odd!");
    }
}

fn std() -> () {
    return true;
}
use args::env;

fn argc(main: usize) -> bool {
    return true;
}

fn even(x: usize) -> bool {
    if x % 2 == 0 {
        return true;
    } else {
        return false;
    }
}
use std::env;

fn x(x: usize) -> bool {
    return true;
}

fn x(x: usize) -> () {
    return false;
}

Supported languages

Languages are easy to add, see PR #3 for an example.

  • JavaScript
  • Rust
  • TypeScript

Bugs found

boa

#2717 #2718 #2719

clang

#61635 #61666 #61667 #61746 #61747

deno

#18338

rustc

#109066 #109071 #109072 #109078 #109079 #109090 #109129 #109141 #109143 #109144 #109146 #109147 #109148 #109152 #109178 #109188 #109191 #109204 #109232 #109239 #109296 #109297 #109298 #109299 #109300 #109304 #109305

rustfmt

#5716 #5738 #5739

Installation

Pre-compiled binaries

Pre-compiled binaries are available on the releases page.

Build from source

To install from source, you'll need to install Rust and Cargo. Follow the instructions on the Rust installation page.

From a release on crates.io

You can build a released version from crates.io. To install the latest release of tree-splicer for the language <LANG>, run:

cargo install tree-splicer-<LANG>

This will automatically download the source from crates.io, build it, and install it in Cargo's global binary directory (~/.cargo/bin/ by default).

From the latest unreleased version on Github

To build and install the very latest unreleased version, run:

cargo install --git https://github.com/langston-barrett/tree-splicer.git tree-splicer-LANG

Uninstalling

To uninstall, run cargo uninstall tree-splicer-<LANG>.

Build

To build from source, you'll need to install Rust and Cargo. Follow the instructions on the Rust installation page. Then, get the source:

git clone https://github.com/langston-barrett/tree-splicer
cd tree-splicer

Finally, build everything:

cargo build --release

You can find binaries in target/release. Run tests with cargo test.

tree-splicer's People

Contributors

dependabot[bot] avatar langston-barrett avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

tree-splicer's Issues

Intra-file splicing

tree-splicer always splices in subtrees from any of its input files, it would be nice to have an option to control how often it performs intra-file splices.

Hoisting

tree-splicer could take a page from the test-case reduction literature and perform hoisting, where an AST node is replaced by one of its subtrees. This is more likely to produce valid mutants, because of variable scoping.

Splice in compatible subtrees

tree-splicer currently splices only subtrees that have the exact same node kind. This is suboptimal, the trees only need to have compatible kinds for the result to be syntactically valid.

unwrap of None

Hi, I just upgraded and it looks like I'm hitting a None sometimes:

thread '<unnamed>' panicked at 'called `Option::unwrap()` on a `None` value', /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.3.0/src/splice.rs:170:50
stack backtrace:
   0:     0x557a8bbee5da - std::backtrace_rs::backtrace::libunwind::trace::h3973f51617998fc6
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x557a8bbee5da - std::backtrace_rs::backtrace::trace_unsynchronized::hc880f45678a36b06
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x557a8bbee5da - std::sys_common::backtrace::_print_fmt::h0c5a990bb8ef31fa
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x557a8bbee5da - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h55a8e98b4c6161da
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x557a8bc14bfe - core::fmt::write::h4c40d77c4903afa0
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/fmt/mod.rs:1254:17
   5:     0x557a8bbe9e75 - std::io::Write::write_fmt::ha3b362d3dcfb999f
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/io/mod.rs:1698:15
   6:     0x557a8bbee3a5 - std::sys_common::backtrace::_print::h8269abb9d4b9ac2e
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x557a8bbee3a5 - std::sys_common::backtrace::print::h475ddad52d027480
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x557a8bbefddf - std::panicking::default_hook::{{closure}}::hdb1a9b91764be170
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:271:22
   9:     0x557a8bbefb1b - std::panicking::default_hook::hb3624b5fb0dd82aa
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:290:9
  10:     0x557a8bbf03e8 - std::panicking::rust_panic_with_hook::h34c77a71befec972
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:692:13
  11:     0x557a8bbf02a2 - std::panicking::begin_panic_handler::{{closure}}::hb5ae8193b4163d8b
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:581:13
  12:     0x557a8bbeea46 - std::sys_common::backtrace::__rust_end_short_backtrace::h53bbfcb82ab0fc3b
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/sys_common/backtrace.rs:150:18
  13:     0x557a8bbefff2 - rust_begin_unwind
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:579:5
  14:     0x557a8bc13093 - core::panicking::panic_fmt::h712e519910af2aa1
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/panicking.rs:64:14
  15:     0x557a8bc1312d - core::panicking::panic::h7c5f6c047dc85cd8
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/panicking.rs:114:5
  16:     0x557a8b8b17e0 - core::option::Option<T>::unwrap::h9cb6e9fc48740dd2
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/option.rs:952:21
  17:     0x557a8b8d1522 - tree_splicer::splice::Splicer::splice_node::h4e9c6fd8f475db72
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.3.0/src/splice.rs:170:17
  18:     0x557a8b8d1c7b - tree_splicer::splice::Splicer::splice_tree::h0cc0bdf127f11bc6
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.3.0/src/splice.rs:197:17
  19:     0x557a8b8d2239 - <tree_splicer::splice::Splicer as core::iter::traits::iterator::Iterator>::next::hd4cb1e3aeb6c99bc
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.3.0/src/splice.rs:227:9
  20:     0x557a8b6a2db2 - <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next::ha343e3fdcbbb4976
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/iter/adapters/map.rs:103:9
  21:     0x557a8b6579d8 - alloc::vec::Vec<T,A>::extend_desugared::h23b86eb7448b9eba
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/alloc/src/vec/mod.rs:2815:35
  22:     0x557a8b66336a - <alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend::ha5a4d44e95721fb2
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/alloc/src/vec/spec_extend.rs:17:9
  23:     0x557a8b6467f6 - <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter::h79cd4aaf0566e8b6
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/alloc/src/vec/spec_from_iter_nested.rs:43:9
  24:     0x557a8b663f1d - <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter::h56cf5a32f43dc6e6
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/alloc/src/vec/spec_from_iter.rs:33:9
  25:     0x557a8b662068 - <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter::ha2975bc5118949f4
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/alloc/src/vec/mod.rs:2715:9
  26:     0x557a8b6a5b3d - core::iter::traits::iterator::Iterator::collect::h9807e3792bdbf160
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/iter/traits/iterator.rs:1896:9
  27:     0x557a8b63e3e8 - icemaker::fuzz_tree_splicer::splice_file::hcf984e9ffc5e3e57
                               at /home/matthias/vcs/github/icemaker/src/fuzz_tree_splicer.rs:41:5
  28:     0x557a8b729218 - icemaker::codegen_tree_splicer::{{closure}}::h026d66a949cadddf
                               at /home/matthias/vcs/github/icemaker/src/main.rs:2029:13
  29:     0x557a8b71ddc2 - core::ops::function::impls::<impl core::ops::function::FnMut<A> for &F>::call_mut::h116ddece1527887d
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/ops/function.rs:274:13
  30:     0x557a8b71e0ff - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once::h1f1d55357a0611a2
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/ops/function.rs:310:13
  31:     0x557a8b70f2e1 - core::option::Option<T>::map::h8b05576e975d7b54
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/option.rs:1101:29
  32:     0x557a8b6a2f6b - <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next::hb439ae4dab217733
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/iter/adapters/map.rs:103:9
  33:     0x557a8b56c090 - rayon::iter::plumbing::Folder::consume_iter::ha49d082ed4e2b8f7
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:178:21
  34:     0x557a8b6d028a - <rayon::iter::map::MapFolder<C,F> as rayon::iter::plumbing::Folder<T>>::consume_iter::hb92ba8cea0270f03
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/map.rs:248:21
  35:     0x557a8b594bf5 - rayon::iter::plumbing::Producer::fold_with::hb17384f1915af082
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:110:9
  36:     0x557a8b6082b9 - rayon::iter::plumbing::bridge_producer_consumer::helper::hd1bfc40a5dc693aa
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:438:13
  37:     0x557a8b60c662 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::hd5344c492e9438f9
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  38:     0x557a8b6238ec - rayon_core::join::join_context::call_a::{{closure}}::h50f11c3c4745d62d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  39:     0x557a8b6e2220 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hc2c8bd3bec1065ef
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/panic/unwind_safe.rs:271:9
  40:     0x557a8b573d85 - std::panicking::try::do_call::h3e950bc0b724bcc0
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:487:40
  41:     0x557a8b5790bb - __rust_try
  42:     0x557a8b5723a2 - std::panicking::try::hdd31d71c6a96e2a1
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:451:19
  43:     0x557a8b57b8e6 - std::panic::catch_unwind::h01817161d2564fcb
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panic.rs:140:14
  44:     0x557a8b63f533 - rayon_core::unwind::halt_unwinding::h6de2f4292e117723
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  45:     0x557a8b61f647 - rayon_core::join::join_context::{{closure}}::he61397b982448c7d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  46:     0x557a8b683832 - rayon_core::registry::in_worker::h9105430fe65c3507
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:984:13
  47:     0x557a8b617b1a - rayon_core::join::join_context::h24aa7ea6c9c886c4
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:132:5
  48:     0x557a8b608160 - rayon::iter::plumbing::bridge_producer_consumer::helper::hd1bfc40a5dc693aa
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:416:47
  49:     0x557a8b60c662 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::hd5344c492e9438f9
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  50:     0x557a8b6238ec - rayon_core::join::join_context::call_a::{{closure}}::h50f11c3c4745d62d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  51:     0x557a8b6e2220 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hc2c8bd3bec1065ef
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/panic/unwind_safe.rs:271:9
  52:     0x557a8b573d85 - std::panicking::try::do_call::h3e950bc0b724bcc0
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:487:40
  53:     0x557a8b5790bb - __rust_try
  54:     0x557a8b5723a2 - std::panicking::try::hdd31d71c6a96e2a1
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:451:19
  55:     0x557a8b57b8e6 - std::panic::catch_unwind::h01817161d2564fcb
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panic.rs:140:14
  56:     0x557a8b63f533 - rayon_core::unwind::halt_unwinding::h6de2f4292e117723
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  57:     0x557a8b61f647 - rayon_core::join::join_context::{{closure}}::he61397b982448c7d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  58:     0x557a8b683832 - rayon_core::registry::in_worker::h9105430fe65c3507
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:984:13
  59:     0x557a8b617b1a - rayon_core::join::join_context::h24aa7ea6c9c886c4
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:132:5
  60:     0x557a8b608160 - rayon::iter::plumbing::bridge_producer_consumer::helper::hd1bfc40a5dc693aa
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:416:47
  61:     0x557a8b60c662 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::hd5344c492e9438f9
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  62:     0x557a8b6238ec - rayon_core::join::join_context::call_a::{{closure}}::h50f11c3c4745d62d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  63:     0x557a8b6e2220 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hc2c8bd3bec1065ef
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/panic/unwind_safe.rs:271:9
  64:     0x557a8b573d85 - std::panicking::try::do_call::h3e950bc0b724bcc0
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:487:40
  65:     0x557a8b5790bb - __rust_try
  66:     0x557a8b5723a2 - std::panicking::try::hdd31d71c6a96e2a1
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:451:19
  67:     0x557a8b57b8e6 - std::panic::catch_unwind::h01817161d2564fcb
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panic.rs:140:14
  68:     0x557a8b63f533 - rayon_core::unwind::halt_unwinding::h6de2f4292e117723
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  69:     0x557a8b61f647 - rayon_core::join::join_context::{{closure}}::he61397b982448c7d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  70:     0x557a8b676c62 - rayon_core::registry::Registry::in_worker_cold::{{closure}}::{{closure}}::h65b4baf778c03c7d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:541:21
  71:     0x557a8b689a21 - rayon_core::job::JobResult<T>::call::{{closure}}::h0d42b297e3f601c4
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:218:41
  72:     0x557a8b6e1670 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h388d57225f3552df
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/panic/unwind_safe.rs:271:9
  73:     0x557a8b573761 - std::panicking::try::do_call::h2218fd6db97a4960
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:487:40
  74:     0x557a8b5790bb - __rust_try
  75:     0x557a8b56efc2 - std::panicking::try::h6697bef99f857bbf
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:451:19
  76:     0x557a8b57c3d6 - std::panic::catch_unwind::hec8a9da4b19f0c57
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panic.rs:140:14
  77:     0x557a8b6403c7 - rayon_core::unwind::halt_unwinding::hff1087b432ef692d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  78:     0x557a8b686a99 - rayon_core::job::JobResult<T>::call::h274ffa3eab6db20f
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:218:15
  79:     0x557a8b698f84 - <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute::h7a7376f17c1fcc7c
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:120:32
  80:     0x557a8b81eff0 - rayon_core::job::JobRef::execute::h805c2d4e30b97193
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:64:9
  81:     0x557a8b831080 - rayon_core::registry::WorkerThread::execute::hab7226ab1d30f8e1
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:874:9
  82:     0x557a8b830de9 - rayon_core::registry::WorkerThread::wait_until_cold::hc3b9554880e18a53
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:820:17
  83:     0x557a8b830bd2 - rayon_core::registry::WorkerThread::wait_until::h58bce0f1d33c6a84
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:803:13
  84:     0x557a8b831641 - rayon_core::registry::main_loop::h78be0e65456a45ad
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:948:5
  85:     0x557a8b82c896 - rayon_core::registry::ThreadBuilder::run::h3f656c057cfc8c00
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:54:18
  86:     0x557a8b82ccfd - <rayon_core::registry::DefaultSpawn as rayon_core::registry::ThreadSpawn>::spawn::{{closure}}::h2e22ba63d1f4048f
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:99:20
  87:     0x557a8b8455d9 - std::sys_common::backtrace::__rust_begin_short_backtrace::hbb6074fe7e703186
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/sys_common/backtrace.rs:134:18
  88:     0x557a8b81a6bd - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hc153e616e5970e41
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/thread/mod.rs:525:17
  89:     0x557a8b83f531 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h0746b9e057a2aff7
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/panic/unwind_safe.rs:271:9
  90:     0x557a8b846c62 - std::panicking::try::do_call::haf9f3779d7d56aa1
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:487:40
  91:     0x557a8b8488bb - __rust_try
  92:     0x557a8b8469d2 - std::panicking::try::h9c71e0cebf6c2de6
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panicking.rs:451:19
  93:     0x557a8b815d4a - std::panic::catch_unwind::h9dc97c800101d3e5
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/panic.rs:140:14
  94:     0x557a8b81a435 - std::thread::Builder::spawn_unchecked_::{{closure}}::ha875271c990945e0
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/thread/mod.rs:524:30
  95:     0x557a8b80546f - core::ops::function::FnOnce::call_once{{vtable.shim}}::h676e1e723da72acb
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/core/src/ops/function.rs:250:5
  96:     0x557a8bbf5e43 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h5465857e83d6d8ca
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/alloc/src/boxed.rs:1988:9
  97:     0x557a8bbf5e43 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::ha9ee3b71411efa49
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/alloc/src/boxed.rs:1988:9
  98:     0x557a8bbf5e43 - std::sys::unix::thread::Thread::new::thread_start::hade30c6a6cbcfe88
                               at /rustc/1459b3128e288a85fcc4dd1fee7ada2cdcf28794/library/std/src/sys/unix/thread.rs:108:17
  99:     0x7fc55ef2ebb5 - <unknown>
 100:     0x7fc55efb0d90 - <unknown>
 101:                0x0 - <unknown>

high number of inner_splices / tests cause panic

when I used

const SPLICER_CFG: Config = Config {
    inter_splices: 100,
    seed: 0,
    tests: 100,
};

I ran into a bunch of crashes

thread '<unnamed>' panicked at 'cannot sample empty range', /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rand-0.8.5/src/rng.rs:134:9
stack backtrace:
   0:     0x555f29061a8c - std::backtrace_rs::backtrace::libunwind::trace::h1ac6254167c780d9
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x555f29061a8c - std::backtrace_rs::backtrace::trace_unsynchronized::hec2af85915e24f36
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x555f29061a8c - std::sys_common::backtrace::_print_fmt::h58a4e3535fcce206
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x555f29061a8c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h5107e13758b8321c
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x555f28efe7ce - core::fmt::write::h2e851dc027730d81
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/fmt/mod.rs:1232:17
   5:     0x555f2905d853 - std::io::Write::write_fmt::hca00074de9f85084
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/io/mod.rs:1684:15
   6:     0x555f29061855 - std::sys_common::backtrace::_print::h870053c845cddf24
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x555f29061855 - std::sys_common::backtrace::print::hb56add862f96c5fd
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x555f2906324d - std::panicking::default_hook::{{closure}}::h636d4ba3ff8fdc46
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:271:22
   9:     0x555f29062fb4 - std::panicking::default_hook::hf29b58145ee6e43c
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:290:9
  10:     0x555f2906380f - std::panicking::rust_panic_with_hook::hbf9ef936d990c16f
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:692:13
  11:     0x555f290636e5 - std::panicking::begin_panic_handler::{{closure}}::h6be6433dcb901f4b
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:581:13
  12:     0x555f29061f86 - std::sys_common::backtrace::__rust_end_short_backtrace::h802b6104a4d80829
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:150:18
  13:     0x555f29063452 - rust_begin_unwind
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:579:5
  14:     0x555f28efcec3 - core::panicking::panic_fmt::hf7a8a88b9669732e
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panicking.rs:64:14
  15:     0x555f28efcf5d - core::panicking::panic::h23010f9a5cb8b3d2
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panicking.rs:114:5
  16:     0x555f2907be4e - rand::rng::Rng::gen_range::h2b8563150ea30a83
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rand-0.8.5/src/rng.rs:134:9
  17:     0x555f2907f1fb - tree_splicer::splice::Splicer::pick_usize::h2a2f8833361ecac9
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.2.0/src/splice.rs:83:9
  18:     0x555f2907f1fb - tree_splicer::splice::Splicer::pick_idx::he6b69b1cd54f0ae9
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.2.0/src/splice.rs:87:9
  19:     0x555f2907f1fb - tree_splicer::splice::Splicer::pick_node::h137c29b6f45973e7
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.2.0/src/splice.rs:109:24
  20:     0x555f2907f4f5 - <tree_splicer::splice::Splicer as core::iter::traits::iterator::Iterator>::next::h45ae62469d9cdddd
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.2.0/src/splice.rs:127:28
  21:     0x555f28f432b4 - <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next::hc4795454d775856b
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/iter/adapters/map.rs:103:9
  22:     0x555f28f432b4 - alloc::vec::Vec<T,A>::extend_desugared::h388c2e3cdd37395d
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/mod.rs:2824:35
  23:     0x555f28f432b4 - <alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend::hf5f1416e4d584e50
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/spec_extend.rs:17:9
  24:     0x555f28f432b4 - <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter::he2fb42928fa8521e
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/spec_from_iter_nested.rs:43:9
  25:     0x555f28f432b4 - <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter::he507ed8b350af5ac
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/spec_from_iter.rs:33:9
  26:     0x555f28f432b4 - <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter::h0544f92bc23053a6
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/mod.rs:2724:9
  27:     0x555f28f432b4 - core::iter::traits::iterator::Iterator::collect::h12417f8aef80e7df
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/iter/traits/iterator.rs:1891:9
  28:     0x555f28f432b4 - icemaker::fuzz_tree_splicer::splice_file::h65f0b945b2577b3e
                               at /home/matthias/vcs/github/icemaker/src/fuzz_tree_splicer.rs:38:10
  29:     0x555f28f432b4 - icemaker::codegen_tree_splicer::{{closure}}::h8bce0c9f35af9211
                               at /home/matthias/vcs/github/icemaker/src/main.rs:1975:13
  30:     0x555f28f432b4 - core::ops::function::impls::<impl core::ops::function::FnMut<A> for &F>::call_mut::h0d0e1b2830e8bf97
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/ops/function.rs:274:13
  31:     0x555f28f432b4 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once::h33f995629ae98097
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/ops/function.rs:310:13
  32:     0x555f28f432b4 - core::option::Option<T>::map::h0823a28a58d40a1c
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/option.rs:1137:29
  33:     0x555f28f432b4 - <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next::h73453388456bb158
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/iter/adapters/map.rs:103:9
  34:     0x555f28f432b4 - rayon::iter::plumbing::Folder::consume_iter::h8fb487819bd2e9a4
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:178:21
  35:     0x555f28f432b4 - <rayon::iter::map::MapFolder<C,F> as rayon::iter::plumbing::Folder<T>>::consume_iter::h077692ad23091a24
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/map.rs:248:21
  36:     0x555f28f432b4 - rayon::iter::plumbing::Producer::fold_with::h66ed914a4e61df5f
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:110:9
  37:     0x555f28f432b4 - rayon::iter::plumbing::bridge_producer_consumer::helper::h54a94e4ec018ef67
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:438:13
  38:     0x555f28f127e5 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::h99aa95945a79717d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  39:     0x555f28f127e5 - rayon_core::join::join_context::call_a::{{closure}}::h77ca464e9b51eafd
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  40:     0x555f28f127e5 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h93a7219d79f93939
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  41:     0x555f28f127e5 - std::panicking::try::do_call::ha3888ba26b1ad4cd
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  42:     0x555f28f127e5 - std::panicking::try::h511664a2e10f5a62
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  43:     0x555f28f127e5 - std::panic::catch_unwind::hefc3d7628fe68161
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  44:     0x555f28f127e5 - rayon_core::unwind::halt_unwinding::hc2c84e7abcd37bea
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  45:     0x555f28f127e5 - rayon_core::join::join_context::{{closure}}::h659ff64568adb3ac
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  46:     0x555f28f436b6 - rayon_core::registry::in_worker::hff724e12e5e595c4
  47:     0x555f28f436b6 - rayon_core::join::join_context::h3cdd8ca7b549499d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:132:5
  48:     0x555f28f436b6 - rayon::iter::plumbing::bridge_producer_consumer::helper::h54a94e4ec018ef67
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:416:47
  49:     0x555f28f127e5 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::h99aa95945a79717d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  50:     0x555f28f127e5 - rayon_core::join::join_context::call_a::{{closure}}::h77ca464e9b51eafd
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  51:     0x555f28f127e5 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h93a7219d79f93939
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  52:     0x555f28f127e5 - std::panicking::try::do_call::ha3888ba26b1ad4cd
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  53:     0x555f28f127e5 - std::panicking::try::h511664a2e10f5a62
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  54:     0x555f28f127e5 - std::panic::catch_unwind::hefc3d7628fe68161
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  55:     0x555f28f127e5 - rayon_core::unwind::halt_unwinding::hc2c84e7abcd37bea
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  56:     0x555f28f127e5 - rayon_core::join::join_context::{{closure}}::h659ff64568adb3ac
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  57:     0x555f28f436b6 - rayon_core::registry::in_worker::hff724e12e5e595c4
  58:     0x555f28f436b6 - rayon_core::join::join_context::h3cdd8ca7b549499d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:132:5
  59:     0x555f28f436b6 - rayon::iter::plumbing::bridge_producer_consumer::helper::h54a94e4ec018ef67
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:416:47
  60:     0x555f28f127e5 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::h99aa95945a79717d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  61:     0x555f28f127e5 - rayon_core::join::join_context::call_a::{{closure}}::h77ca464e9b51eafd
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  62:     0x555f28f127e5 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h93a7219d79f93939
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  63:     0x555f28f127e5 - std::panicking::try::do_call::ha3888ba26b1ad4cd
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  64:     0x555f28f127e5 - std::panicking::try::h511664a2e10f5a62
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  65:     0x555f28f127e5 - std::panic::catch_unwind::hefc3d7628fe68161
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  66:     0x555f28f127e5 - rayon_core::unwind::halt_unwinding::hc2c84e7abcd37bea
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  67:     0x555f28f127e5 - rayon_core::join::join_context::{{closure}}::h659ff64568adb3ac
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  68:     0x555f28f51346 - rayon_core::registry::Registry::in_worker_cold::{{closure}}::{{closure}}::h6b681c54ce22db63
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:541:21
  69:     0x555f28f51346 - rayon_core::job::JobResult<T>::call::{{closure}}::h088af3137b335a33
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:218:41
  70:     0x555f28f51346 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h9f2c5fb156fc88cc
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  71:     0x555f28f51346 - std::panicking::try::do_call::h55136e97b0ebb6f1
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  72:     0x555f28f51346 - std::panicking::try::hf06677b9380e8bd0
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  73:     0x555f28f51346 - std::panic::catch_unwind::h3b8c0f61f2d8188c
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  74:     0x555f28f51346 - rayon_core::unwind::halt_unwinding::h3d35c271201b39d2
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  75:     0x555f28f51346 - rayon_core::job::JobResult<T>::call::h9158890a56ab3862
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:218:15
  76:     0x555f28f51346 - <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute::h5d310a11168679ef
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:120:32
  77:     0x555f28fcae42 - rayon_core::job::JobRef::execute::hab0ac10f42c55809
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:64:9
  78:     0x555f28fcae42 - rayon_core::registry::WorkerThread::execute::habadded12450ead0
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:874:13
  79:     0x555f28fcae42 - rayon_core::registry::WorkerThread::wait_until_cold::hc9a6449d6367014e
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:820:22
  80:     0x555f28fc9ece - rayon_core::registry::WorkerThread::wait_until::h25314cc75ccf8941
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:803:13
  81:     0x555f28fc9ece - rayon_core::registry::main_loop::h3e9a8ffe486c589a
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:948:5
  82:     0x555f28fc9ece - rayon_core::registry::ThreadBuilder::run::hd3b1e1788ae7777a
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:54:18
  83:     0x555f28fc6b38 - <rayon_core::registry::DefaultSpawn as rayon_core::registry::ThreadSpawn>::spawn::{{closure}}::h3be0a1bc013b6fc0
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:99:20
  84:     0x555f28fc6b38 - std::sys_common::backtrace::__rust_begin_short_backtrace::h2b327806758af508
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:134:18
  85:     0x555f28fc7179 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h6cb00b65ee3d2678
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/thread/mod.rs:525:17
  86:     0x555f28fc7179 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h9635907c1203a441
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  87:     0x555f28fc7179 - std::panicking::try::do_call::ha91f209c1fe4d63f
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  88:     0x555f28fc7179 - std::panicking::try::hc9594638cd4df575
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  89:     0x555f28fc7179 - std::panic::catch_unwind::hbcccbce368a3e483
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  90:     0x555f28fc7179 - std::thread::Builder::spawn_unchecked_::{{closure}}::h522a8d767dfd70b5
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/thread/mod.rs:524:30
  91:     0x555f28fc7179 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h08b27371df15190a
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/ops/function.rs:250:5
  92:     0x555f290683a3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7e0474dd3b8659fa
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/boxed.rs:1988:9
  93:     0x555f290683a3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::heb8c41cf543a5c11
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/boxed.rs:1988:9
  94:     0x555f290683a3 - std::sys::unix::thread::Thread::new::thread_start::hc791abe67253fe06
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys/unix/thread.rs:108:17
  95:     0x7fa80206dbb5 - <unknown>
  96:     0x7fa8020efd90 - <unknown>
  97:                0x0 - <unknown>
thread '<unnamed>' panicked at 'cannot sample empty range', /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rand-0.8.5/src/rng.rs:134:9
stack backtrace:
   0:     0x555f29061a8c - std::backtrace_rs::backtrace::libunwind::trace::h1ac6254167c780d9
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x555f29061a8c - std::backtrace_rs::backtrace::trace_unsynchronized::hec2af85915e24f36
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x555f29061a8c - std::sys_common::backtrace::_print_fmt::h58a4e3535fcce206
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x555f29061a8c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h5107e13758b8321c
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x555f28efe7ce - core::fmt::write::h2e851dc027730d81
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/fmt/mod.rs:1232:17
   5:     0x555f2905d853 - std::io::Write::write_fmt::hca00074de9f85084
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/io/mod.rs:1684:15
   6:     0x555f29061855 - std::sys_common::backtrace::_print::h870053c845cddf24
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x555f29061855 - std::sys_common::backtrace::print::hb56add862f96c5fd
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x555f2906324d - std::panicking::default_hook::{{closure}}::h636d4ba3ff8fdc46
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:271:22
   9:     0x555f29062fb4 - std::panicking::default_hook::hf29b58145ee6e43c
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:290:9
  10:     0x555f2906380f - std::panicking::rust_panic_with_hook::hbf9ef936d990c16f
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:692:13
  11:     0x555f290636e5 - std::panicking::begin_panic_handler::{{closure}}::h6be6433dcb901f4b
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:581:13
  12:     0x555f29061f86 - std::sys_common::backtrace::__rust_end_short_backtrace::h802b6104a4d80829
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:150:18
  13:     0x555f29063452 - rust_begin_unwind
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:579:5
  14:     0x555f28efcec3 - core::panicking::panic_fmt::hf7a8a88b9669732e
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panicking.rs:64:14
  15:     0x555f28efcf5d - core::panicking::panic::h23010f9a5cb8b3d2
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panicking.rs:114:5
  16:     0x555f2907be4e - rand::rng::Rng::gen_range::h2b8563150ea30a83
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rand-0.8.5/src/rng.rs:134:9
  17:     0x555f2907f1fb - tree_splicer::splice::Splicer::pick_usize::h2a2f8833361ecac9
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.2.0/src/splice.rs:83:9
  18:     0x555f2907f1fb - tree_splicer::splice::Splicer::pick_idx::he6b69b1cd54f0ae9
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.2.0/src/splice.rs:87:9
  19:     0x555f2907f1fb - tree_splicer::splice::Splicer::pick_node::h137c29b6f45973e7
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.2.0/src/splice.rs:109:24
  20:     0x555f2907f4f5 - <tree_splicer::splice::Splicer as core::iter::traits::iterator::Iterator>::next::h45ae62469d9cdddd
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tree-splicer-0.2.0/src/splice.rs:127:28
  21:     0x555f28f432b4 - <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next::hc4795454d775856b
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/iter/adapters/map.rs:103:9
  22:     0x555f28f432b4 - alloc::vec::Vec<T,A>::extend_desugared::h388c2e3cdd37395d
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/mod.rs:2824:35
  23:     0x555f28f432b4 - <alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend::hf5f1416e4d584e50
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/spec_extend.rs:17:9
  24:     0x555f28f432b4 - <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter::he2fb42928fa8521e
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/spec_from_iter_nested.rs:43:9
  25:     0x555f28f432b4 - <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter::he507ed8b350af5ac
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/spec_from_iter.rs:33:9
  26:     0x555f28f432b4 - <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter::h0544f92bc23053a6
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/vec/mod.rs:2724:9
  27:     0x555f28f432b4 - core::iter::traits::iterator::Iterator::collect::h12417f8aef80e7df
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/iter/traits/iterator.rs:1891:9
  28:     0x555f28f432b4 - icemaker::fuzz_tree_splicer::splice_file::h65f0b945b2577b3e
                               at /home/matthias/vcs/github/icemaker/src/fuzz_tree_splicer.rs:38:10
  29:     0x555f28f432b4 - icemaker::codegen_tree_splicer::{{closure}}::h8bce0c9f35af9211
                               at /home/matthias/vcs/github/icemaker/src/main.rs:1975:13
  30:     0x555f28f432b4 - core::ops::function::impls::<impl core::ops::function::FnMut<A> for &F>::call_mut::h0d0e1b2830e8bf97
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/ops/function.rs:274:13
  31:     0x555f28f432b4 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once::h33f995629ae98097
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/ops/function.rs:310:13
  32:     0x555f28f432b4 - core::option::Option<T>::map::h0823a28a58d40a1c
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/option.rs:1137:29
  33:     0x555f28f432b4 - <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next::h73453388456bb158
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/iter/adapters/map.rs:103:9
  34:     0x555f28f432b4 - rayon::iter::plumbing::Folder::consume_iter::h8fb487819bd2e9a4
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:178:21
  35:     0x555f28f432b4 - <rayon::iter::map::MapFolder<C,F> as rayon::iter::plumbing::Folder<T>>::consume_iter::h077692ad23091a24
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/map.rs:248:21
  36:     0x555f28f432b4 - rayon::iter::plumbing::Producer::fold_with::h66ed914a4e61df5f
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:110:9
  37:     0x555f28f432b4 - rayon::iter::plumbing::bridge_producer_consumer::helper::h54a94e4ec018ef67
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:438:13
  38:     0x555f28f127e5 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::h99aa95945a79717d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  39:     0x555f28f127e5 - rayon_core::join::join_context::call_a::{{closure}}::h77ca464e9b51eafd
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  40:     0x555f28f127e5 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h93a7219d79f93939
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  41:     0x555f28f127e5 - std::panicking::try::do_call::ha3888ba26b1ad4cd
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  42:     0x555f28f127e5 - std::panicking::try::h511664a2e10f5a62
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  43:     0x555f28f127e5 - std::panic::catch_unwind::hefc3d7628fe68161
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  44:     0x555f28f127e5 - rayon_core::unwind::halt_unwinding::hc2c84e7abcd37bea
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  45:     0x555f28f127e5 - rayon_core::join::join_context::{{closure}}::h659ff64568adb3ac
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  46:     0x555f28f436b6 - rayon_core::registry::in_worker::hff724e12e5e595c4
  47:     0x555f28f436b6 - rayon_core::join::join_context::h3cdd8ca7b549499d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:132:5
  48:     0x555f28f436b6 - rayon::iter::plumbing::bridge_producer_consumer::helper::h54a94e4ec018ef67
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:416:47
  49:     0x555f28f127e5 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::h99aa95945a79717d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  50:     0x555f28f127e5 - rayon_core::join::join_context::call_a::{{closure}}::h77ca464e9b51eafd
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  51:     0x555f28f127e5 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h93a7219d79f93939
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  52:     0x555f28f127e5 - std::panicking::try::do_call::ha3888ba26b1ad4cd
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  53:     0x555f28f127e5 - std::panicking::try::h511664a2e10f5a62
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  54:     0x555f28f127e5 - std::panic::catch_unwind::hefc3d7628fe68161
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  55:     0x555f28f127e5 - rayon_core::unwind::halt_unwinding::hc2c84e7abcd37bea
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  56:     0x555f28f127e5 - rayon_core::join::join_context::{{closure}}::h659ff64568adb3ac
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  57:     0x555f28f436b6 - rayon_core::registry::in_worker::hff724e12e5e595c4
  58:     0x555f28f436b6 - rayon_core::join::join_context::h3cdd8ca7b549499d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:132:5
  59:     0x555f28f436b6 - rayon::iter::plumbing::bridge_producer_consumer::helper::h54a94e4ec018ef67
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:416:47
  60:     0x555f28f51e65 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::hce6eb3281cd74feb
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:427:21
  61:     0x555f28f51e65 - rayon_core::join::join_context::call_b::{{closure}}::h9c4e326482d15c49
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:129:25
  62:     0x555f28f51e65 - rayon_core::job::JobResult<T>::call::{{closure}}::hbd9740f9e37706d5
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:218:41
  63:     0x555f28f51e65 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h89a75dbe3ba4c82c
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  64:     0x555f28f51e65 - std::panicking::try::do_call::h0f47ac03c770eb47
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  65:     0x555f28f51e65 - std::panicking::try::h338be391a7541860
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  66:     0x555f28f51e65 - std::panic::catch_unwind::h2beffc61409d4fb6
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  67:     0x555f28f51e65 - rayon_core::unwind::halt_unwinding::h1d1a65fd24ac2af7
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  68:     0x555f28f51e65 - rayon_core::job::JobResult<T>::call::hf54f75564bad4611
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:218:15
  69:     0x555f28f51e65 - <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute::h6912e5cdbfb327d1
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:120:32
  70:     0x555f28fcae42 - rayon_core::job::JobRef::execute::hab0ac10f42c55809
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:64:9
  71:     0x555f28fcae42 - rayon_core::registry::WorkerThread::execute::habadded12450ead0
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:874:13
  72:     0x555f28fcae42 - rayon_core::registry::WorkerThread::wait_until_cold::hc9a6449d6367014e
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:820:22
  73:     0x555f28fc978d - rayon_core::registry::WorkerThread::wait_until::h36f987ad9a6daa63
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:803:13
  74:     0x555f28fc978d - rayon_core::join::join_recover_from_panic::hb70522f0dcbe4b06
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:186:5
  75:     0x555f28f129bc - rayon_core::join::join_context::{{closure}}::h659ff64568adb3ac
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:145:25
  76:     0x555f28f436b6 - rayon_core::registry::in_worker::hff724e12e5e595c4
  77:     0x555f28f436b6 - rayon_core::join::join_context::h3cdd8ca7b549499d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:132:5
  78:     0x555f28f436b6 - rayon::iter::plumbing::bridge_producer_consumer::helper::h54a94e4ec018ef67
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:416:47
  79:     0x555f28f127e5 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::h99aa95945a79717d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  80:     0x555f28f127e5 - rayon_core::join::join_context::call_a::{{closure}}::h77ca464e9b51eafd
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  81:     0x555f28f127e5 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h93a7219d79f93939
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  82:     0x555f28f127e5 - std::panicking::try::do_call::ha3888ba26b1ad4cd
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  83:     0x555f28f127e5 - std::panicking::try::h511664a2e10f5a62
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  84:     0x555f28f127e5 - std::panic::catch_unwind::hefc3d7628fe68161
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  85:     0x555f28f127e5 - rayon_core::unwind::halt_unwinding::hc2c84e7abcd37bea
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  86:     0x555f28f127e5 - rayon_core::join::join_context::{{closure}}::h659ff64568adb3ac
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  87:     0x555f28f436b6 - rayon_core::registry::in_worker::hff724e12e5e595c4
  88:     0x555f28f436b6 - rayon_core::join::join_context::h3cdd8ca7b549499d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:132:5
  89:     0x555f28f436b6 - rayon::iter::plumbing::bridge_producer_consumer::helper::h54a94e4ec018ef67
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:416:47
  90:     0x555f28f127e5 - rayon::iter::plumbing::bridge_producer_consumer::helper::{{closure}}::h99aa95945a79717d
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.7.0/src/iter/plumbing/mod.rs:418:21
  91:     0x555f28f127e5 - rayon_core::join::join_context::call_a::{{closure}}::h77ca464e9b51eafd
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:124:17
  92:     0x555f28f127e5 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h93a7219d79f93939
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
  93:     0x555f28f127e5 - std::panicking::try::do_call::ha3888ba26b1ad4cd
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
  94:     0x555f28f127e5 - std::panicking::try::h511664a2e10f5a62
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
  95:     0x555f28f127e5 - std::panic::catch_unwind::hefc3d7628fe68161
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
  96:     0x555f28f127e5 - rayon_core::unwind::halt_unwinding::hc2c84e7abcd37bea
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
  97:     0x555f28f127e5 - rayon_core::join::join_context::{{closure}}::h659ff64568adb3ac
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/join/mod.rs:142:24
  98:     0x555f28f51346 - rayon_core::registry::Registry::in_worker_cold::{{closure}}::{{closure}}::h6b681c54ce22db63
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:541:21
  99:     0x555f28f51346 - rayon_core::job::JobResult<T>::call::{{closure}}::h088af3137b335a33
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:218:41
 100:     0x555f28f51346 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h9f2c5fb156fc88cc
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
 101:     0x555f28f51346 - std::panicking::try::do_call::h55136e97b0ebb6f1
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
 102:     0x555f28f51346 - std::panicking::try::hf06677b9380e8bd0
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
 103:     0x555f28f51346 - std::panic::catch_unwind::h3b8c0f61f2d8188c
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
 104:     0x555f28f51346 - rayon_core::unwind::halt_unwinding::h3d35c271201b39d2
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/unwind.rs:17:5
 105:     0x555f28f51346 - rayon_core::job::JobResult<T>::call::h9158890a56ab3862
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:218:15
 106:     0x555f28f51346 - <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute::h5d310a11168679ef
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:120:32
 107:     0x555f28fcae42 - rayon_core::job::JobRef::execute::hab0ac10f42c55809
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/job.rs:64:9
 108:     0x555f28fcae42 - rayon_core::registry::WorkerThread::execute::habadded12450ead0
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:874:13
 109:     0x555f28fcae42 - rayon_core::registry::WorkerThread::wait_until_cold::hc9a6449d6367014e
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:820:22
 110:     0x555f28fc9ece - rayon_core::registry::WorkerThread::wait_until::h25314cc75ccf8941
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:803:13
 111:     0x555f28fc9ece - rayon_core::registry::main_loop::h3e9a8ffe486c589a
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:948:5
 112:     0x555f28fc9ece - rayon_core::registry::ThreadBuilder::run::hd3b1e1788ae7777a
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:54:18
 113:     0x555f28fc6b38 - <rayon_core::registry::DefaultSpawn as rayon_core::registry::ThreadSpawn>::spawn::{{closure}}::h3be0a1bc013b6fc0
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.11.0/src/registry.rs:99:20
 114:     0x555f28fc6b38 - std::sys_common::backtrace::__rust_begin_short_backtrace::h2b327806758af508
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys_common/backtrace.rs:134:18
 115:     0x555f28fc7179 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h6cb00b65ee3d2678
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/thread/mod.rs:525:17
 116:     0x555f28fc7179 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h9635907c1203a441
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/panic/unwind_safe.rs:271:9
 117:     0x555f28fc7179 - std::panicking::try::do_call::ha91f209c1fe4d63f
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:487:40
 118:     0x555f28fc7179 - std::panicking::try::hc9594638cd4df575
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panicking.rs:451:19
 119:     0x555f28fc7179 - std::panic::catch_unwind::hbcccbce368a3e483
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/panic.rs:140:14
 120:     0x555f28fc7179 - std::thread::Builder::spawn_unchecked_::{{closure}}::h522a8d767dfd70b5
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/thread/mod.rs:524:30
 121:     0x555f28fc7179 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h08b27371df15190a
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/core/src/ops/function.rs:250:5
 122:     0x555f290683a3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7e0474dd3b8659fa
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/boxed.rs:1988:9
 123:     0x555f290683a3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::heb8c41cf543a5c11
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/alloc/src/boxed.rs:1988:9
 124:     0x555f290683a3 - std::sys::unix::thread::Thread::new::thread_start::hc791abe67253fe06
                               at /rustc/22f247c6f3ed388cb702d01c2ff27da658a8b353/library/std/src/sys/unix/thread.rs:108:17
 125:     0x7fa80206dbb5 - <unknown>
 126:     0x7fa8020efd90 - <unknown>
 127:                0x0 - <unknown>

Maximum size

There should be a configurable maximum file size.

very cool!

Hey, just wanted to say hi! :D
Very cool crate!
I have hooked this up into icemaker to automatically generate code from a set of input which then can be checked (I already tried something similar previously by feeding everything into a markov chain (lol) and looking what pops out.

Two small things I noticed:
It might be nice if the splice function would not take the hashmap by reference so that it is possible to have a function that takes a path, creates the hashmap, feeds it into splice and then returns an Iterator , right now I think the iterator would outlive the ref to the HashMap and thus it would not work (I've worked around with a Vec right now, meh...)

I have not gotten to debug this in detail but when I processed rustc tests/ui/issues/issue-74564-if-expr-stack-overflow.rs I ran into a stack overflow. (yay, for fuzzing the fuzzer!), but I could not reproduce this when running the splicer binary directly on it so far...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.