GithubHelp home page GithubHelp logo

glacier's Introduction

Glacier

A big ‘ol pile of ICE.

Build Status

This repository is used to test internal compiler errors (also known as ICEs) in Rust. An ICE means that something went wrong, something unexpected. As such, sometimes, ICEs get randomly fixed. A compiler refactoring will remove the odd code path, even if the point of the change wasn’t to fix the bug.

As such, this repository is a collection of these bugs, and it runs on Rust nightly, once a day, through GitHub Actions. If any of the ICEs stop happening, the build will fail, and we can close the associated bug.

Helping out

Contributing to Glacier is fairly easy:

  1. Check out this list of bugs on the Rust issue tracker.
  2. Pick one.
  3. Create a file in ices/ with the same number as the issue reporting the ICE.
  4. Copy the code that causes the ICE into your new file.
  5. (optional) Verify it works by running rustup update nightly, then cargo run $ISSUE_NUMBER to run your ICE.
  6. Send a pull request!

Note: Running this on Windows may give false positives and report some ICEs as fixed, use either WSL or Linux for better accuracy.

License

MIT/Apache2, just like Rust.

glacier's People

Contributors

abhijeetbhagat avatar alexendoo avatar araruna avatar aug2uag avatar bgr360 avatar bltavares avatar camelid avatar dependabot[bot] avatar elinvynia avatar emoon avatar euclio avatar fanninpm avatar github-actions[bot] avatar johntitor avatar julian-wollersberger avatar kamilaborowska avatar langston-barrett avatar light4 avatar matthiaskrgr avatar mibac138 avatar oliviacrain avatar patrick-poitras avatar pietroalbini avatar rgardner avatar rustbot avatar steveklabnik avatar ville-h avatar wheals avatar workingjubilee avatar zhangzhuosjtu 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  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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

glacier's Issues

don't remove fixed ICES

Snippets that no longer crash rustc might still be useful for testing other tools (rustfmt, clippy, rust-analyer etc) to see if they cause crashes there.

Maybe we could have a subcrate where fixed ICEs are moved to?

Automatically add a `glacier` label to tested issues

It would be nice if this repository's CI automatically managed a glacier label for tested ICEs in the rust-lang/rust repo, that way a search for "label:I-ICE -label:glacier` would show up ICEs that still need to be added.

How to add cargo projects

I wanted to add issue 54960, but it has a crate dependency (binary_macros) and thus needs a cargo project. How should I add it to this repo?

I tested if the macro expanded code from cargo expand would recreate the ICE, but unfortunately it doesn't, so the crate dependency is needed.

Also that specific ICE is fixed on current sable and nightly anyway, so I would have added it to the fixed directory. Or should I propose to just close it?

Automatically add a testcase via a comment

Just like @rustbot can be pinged, why not using the same with @rust-lang-glacier-bot?

I would suggest something like this:


Hey, I found a mcve for this ICE. With this mcve it works.

fn main() { panic!() }

@rust-lang-glacier-bot add ICE https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=34dc5c9d1e14ff10ff8be22be265e7ef


Then the bot can try the playgroundand see if it ICEs and automatically adds it.

If we don't want an automatism, something like @rust-lang-glacier-bot +r can be used, similar to @bors.

What do you think?

Detect if an issue is closed

Glacier doen't report anything even if an issue is already closed. It should be, however, since we have to triage it and deal with that ICE (remove, change issue number, re-open, etc.).

Track linker errors

For example, this returns a linker error, "final link failed: bad value" on rustc 1.53.0-nightly (3709ae324 2021-04-25) but glacier doesn't catch it as ICE i.e. bad status. Ideally, we should catch and track it.

automatically label beta/stable regression

Just an idea:

Glacier could check ICEs with a nightly, beta and stable and old-stable compiler.
If a tracked issue also crashes the latest stable compiler but not old-stable, automatically add the regression-from-stable-to-stable label, etc.

Automatically handle fixed ICEs

There should be automation in this repository to automatically handle fixed ICEs. This automation could do:

  • Open a PR to remove the fixed ICE from the repository, so a team member can remove it in one click
  • Post a comment on the issue notifying users the ICE has been fixed. Closing the issue automatically could also be investigated

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.