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

Fixing a Bug in PyPy's Incremental GC | PyPy #113

Open
utterances-bot opened this issue Mar 27, 2024 · 4 comments
Open

Fixing a Bug in PyPy's Incremental GC | PyPy #113

utterances-bot opened this issue Mar 27, 2024 · 4 comments

Comments

@utterances-bot
Copy link

Fixing a Bug in PyPy's Incremental GC | PyPy

https://www.pypy.org/posts/2024/03/fixing-bug-incremental-gc.html

Copy link

rejones commented Mar 27, 2024

Interesting account of GC bug hunting. Thanks for sharing.

One question you raised was the use of formal approaches to checking the correctness of GC code. When we built the Transactional Sapphire GC (https://doi.org/10.1145/3226225), we found model checking with SPIN to be very helpful. TS is a fully concurrent GC (no pauses) so has lots of opportunities for getting things wrong.

We found model checking with SPIN to be fairly straightforward and gave us confidence in our algorithms, and I’ve used it again to check concurrent algorithms. However, there are things to be borne in mind when using it.

  1. You need to write a model for each scenario you want to check. There may be many. But we simply checked those that we had concerns about……

  2. SPIN checks the model (written in Promela), not the actual source code.

Copy link
Member

cfbolz commented Mar 28, 2024

@rejones thanks a lot for your comment, Richard! The paper looks interesting, thanks for the reference!

Copy link

rejones commented Mar 28, 2024

There’s also a tech report with more about our SPIN modelling on my GitHub. Can’t remember if we mentioned that in the paper

Copy link

jws1837 commented Apr 14, 2024

This has broadened my understanding of PYPY's GC.

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

4 participants