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

[release-1.11] Avoid dropping call edges in presence of identical invoke edges #57077

Merged

Conversation

topolarity
Copy link
Member

The intermediate data structure here (used for edge de-duplication) was accidentally recording invoke edges as if they were call edges.

That bug is very frequently benign, but if there are identical call and invoke edges in the edge list and the invoke edge is scanned first, the call edge will be unsoundly dropped, leading to invalidation (#265) bugs.

Already fixed on master (by happy accident) as part of #54894

The intermediate data structure here (used for edge de-duplication)
was accidentally recording `invoke` edges as if they were `call` edges.

This bug is _very_ frequently benign, but if there are identical call
and invoke edges in the edge list and the invoke edge is scanned first,
the call edge will be unsoundly dropped, leading to invalidation (JuliaLang#265)
bugs.
@topolarity topolarity added backport 1.10 Change should be backported to the 1.10 release backport 1.11 Change should be backported to release-1.11 labels Jan 17, 2025
@topolarity topolarity requested a review from maleadt January 17, 2025 13:47
@Keno
Copy link
Member

Keno commented Jan 17, 2025

Can we get a test for this both here and on master?

@oscardssmith oscardssmith added bugfix This change fixes an existing bug compiler:latency Compiler latency compiler:inference Type inference and removed compiler:latency Compiler latency labels Jan 17, 2025
@giordano giordano added the needs tests Unit tests are required for this change label Jan 20, 2025
@topolarity topolarity removed the needs tests Unit tests are required for this change label Jan 21, 2025
@KristofferC KristofferC added the merge me PR is reviewed. Merge when all tests are passing label Jan 21, 2025
topolarity added a commit that referenced this pull request Jan 21, 2025
@topolarity topolarity removed backport 1.10 Change should be backported to the 1.10 release backport 1.11 Change should be backported to release-1.11 labels Jan 21, 2025
@topolarity topolarity merged commit 6cdafa9 into JuliaLang:release-1.11 Jan 21, 2025
9 of 10 checks passed
@topolarity topolarity added compiler:precompilation Precompilation of modules and removed merge me PR is reviewed. Merge when all tests are passing compiler:inference Type inference labels Jan 21, 2025
@topolarity topolarity deleted the ct/1.11-invalidation-bug branch January 21, 2025 19:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugfix This change fixes an existing bug compiler:precompilation Precompilation of modules
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants