Skip to content

Fix serialization of redefined nodes - #7413

Merged
msullivan merged 2 commits into
masterfrom
class-redef-crash
Aug 29, 2019
Merged

msullivan merged 2 commits into
masterfrom
class-redef-crash

Conversation

@msullivan

Copy link
Copy Markdown
Collaborator

Currently they will get incorrectly serialized as xrefs because
the symbol table name doesn't match the fullname.

Fix this. (Though I don't love the way I've fixed it, if somebody has
a suggestion for something nicer.)

This could cause nondeterministc crashes under python 3.5 when it led
to crossrefs to crossrefs, since random dict iteration order meant
that the referenced crossref might not be resolved. Add some asserts
to catch these things earlier.

Currently they will get incorrectly serialized as xrefs because
the symbol table name doesn't match the fullname.

Fix this. (Though I don't love the way I've fixed it, if somebody has
a suggestion for something nicer.)

This could cause nondeterministc crashes under python 3.5 when it led
to crossrefs to crossrefs, since random dict iteration order meant
that the referenced crossref might not be resolved. Add some asserts
to catch these things earlier.

@JukkaL JukkaL left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for fixing this! I wonder if this could happen with --allow-redefinition, which adds ' suffixes to names.

@msullivan
msullivan merged commit 811c201 into master Aug 29, 2019
@msullivan
msullivan deleted the class-redef-crash branch August 29, 2019 19:37
msullivan added a commit that referenced this pull request Sep 11, 2019
Redefined nodes sometimes have busted internal references (like a self
argument that has the class as its type even though it won't be able
to look it up) which can cause crashes. Since they can't have
references from outside themselves, we don't lose anything by not
serializing them.

Fixes a crash I observed at Dropbox.

This partially reverts #7413, which introduced this crash (while
fixing another), but leaves the test case it added.
JukkaL pushed a commit that referenced this pull request Sep 12, 2019
Redefined nodes sometimes have busted internal references (like a self
argument that has the class as its type even though it won't be able
to look it up) which can cause crashes. Since they can't have
references from outside themselves, we don't lose anything by not
serializing them.

Fixes a crash I observed at Dropbox.

This partially reverts #7413, which introduced this crash (while
fixing another), but leaves the test case it added.
JukkaL pushed a commit that referenced this pull request Sep 12, 2019
Redefined nodes sometimes have busted internal references (like a self
argument that has the class as its type even though it won't be able
to look it up) which can cause crashes. Since they can't have
references from outside themselves, we don't lose anything by not
serializing them.

Fixes a crash I observed at Dropbox.

This partially reverts #7413, which introduced this crash (while
fixing another), but leaves the test case it added.
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

Successfully merging this pull request may close these issues.

2 participants