Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

need to child.kill() when returning Status::Timeout in runner #146

Open
bblum opened this issue Apr 17, 2019 · 0 comments
Open

need to child.kill() when returning Status::Timeout in runner #146

bblum opened this issue Apr 17, 2019 · 0 comments

Comments

@bblum
Copy link

bblum commented Apr 17, 2019

I noticed a few comments along the lines of trying to avoid mutating into infinite loops. While of course this is good to avoid too many spurious too-weak mutations, it's kind of theoretically impossible in general. The current implementation leaks processes that consume 100% CPU forever.

It's easy to fix, as described in the title.

I ran into this with the following test case.

#[mutate]
fn finite_loop() -> usize {
    let mut x = Some(true);
    let mut n = 0;
    while x.is_some() {
        if x.unwrap() { // REPLACE_WITH_TRUE here triggers it
            x = Some(false);
        } else {
            x = None;
        }
        n += 1;
    }
    n
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant