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

Do not serialize symbol table nodes added by 'add_submodules_to_parent_modules' #5094

Merged
merged 2 commits into from May 22, 2018

Conversation

Projects
None yet
2 participants
@ilevkivskyi
Collaborator

ilevkivskyi commented May 22, 2018

A hot fix for a complicated crash due to a poisoned cache (discovered internally).

Ivan Levkivskyi added some commits May 22, 2018

@gvanrossum

It's a pretty mysterious fix, I hope Jukka understands it.

@@ -2500,6 +2500,7 @@ class SymbolTableNode:
'implicit',
'is_aliasing',
'alias_name',
'no_serialize'

This comment has been minimized.

@gvanrossum

gvanrossum May 22, 2018

Member

Trailing comma. Also add a comment to the end of the docstring about it please.

This comment has been minimized.

@ilevkivskyi

ilevkivskyi May 22, 2018

Collaborator

Sorry, already merged before seeing your comment. Will fix this later.

@ilevkivskyi ilevkivskyi merged commit 61f7dd2 into master May 22, 2018

4 checks passed

continuous-integration/appveyor/branch AppVeyor build succeeded
Details
continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
continuous-integration/travis-ci/push The Travis CI build passed
Details

@ilevkivskyi ilevkivskyi deleted the child-crash branch May 22, 2018

ilevkivskyi added a commit that referenced this pull request May 22, 2018

Do not serialize symbol table nodes added by 'add_submodules_to_paren…
…t_modules' (#5094)

A hot fix for a complicated crash due to a poisoned cache (discovered internally).

msullivan added a commit that referenced this pull request May 23, 2018

Add a test case for the bug fixed by #5094
It looks like what happened is that since d.k.e doesn't exist, d.k.v
doesn't depend on d or d.k. However, it still performs parent patching
on them. Since there isn't a dependency, this can occur *before* d is
processed, which causes the parent patched symbol table entries to be
present when serialization occurs. This causes bogus cache entries to
be written.

msullivan added a commit that referenced this pull request May 24, 2018

Add a test case for the bug fixed by #5094 (#5100)
It looks like what happened is that since d.k.e doesn't exist, d.k.v
doesn't depend on d or d.k. However, it still performs parent patching
on them. Since there isn't a dependency, this can occur *before* d is
processed, which causes the parent patched symbol table entries to be
present when serialization occurs. This causes bogus cache entries to
be written.

ilevkivskyi pushed a commit to ilevkivskyi/mypy that referenced this pull request May 24, 2018

gvanrossum added a commit that referenced this pull request May 24, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment