Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
bpo-40077: Convert _csv module to use PyType_FromSpec#20974
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
corona10 left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
@vstinner
Please take a look
I locally tested with _csv module on subinterpreter and module test
And there was no leak.
(But import csv with subinterpreter still has leaks but not related to this PR)
corona10 commentedJun 19, 2020
FYI, macOS CI issue is not related to this PR |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
corona10 left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Thanks all of your reviews are applied and no memory leak was found!
vstinner left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I'm not sure that it's possible to convert static types to heap types if they have Py_TPFLAGS_BASETYPE, since currently there is no way to retrieve the module from such type.
Uh oh!
There was an error while loading.Please reload this page.
| &strict)) | ||
| returnNULL; | ||
| _csvstate*state=PyType_GetModuleState(type); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
PyType_GetModuleState() is not safe if the type has Py_TPFLAGS_BASETYPE flag, which is the case here.
Is there a way to get the defining type in tp_new?
| PyErr_Format(_csvstate_global->error_obj,"field larger than field limit (%ld)", | ||
| _csvstate_global->field_limit); | ||
| PyTypeObject*reader_type=Py_TYPE(self); | ||
| _csvstate*state=PyType_GetModuleState(reader_type); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
The Reader type has Py_TPFLAGS_BASETYPE: PyType_GetModuleState() is unsafe here.
| returnNULL; | ||
| } | ||
| self->dialect= (DialectObj*)_call_dialect(dialect,keyword_args); | ||
| _csvstate*state=get_csv_state(module); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
state can be moved at the beginning of the function, to avoid calling get_csv_state() twice.
bedevere-bot commentedJun 19, 2020
When you're done making the requested changes, leave the comment: |
vstinner commentedJun 22, 2020
I understand that this PR (if merged) would fixhttps://bugs.python.org/issue14935 |
encukou commentedDec 15, 2020
The issue is now closed via#23224. |
Uh oh!
There was an error while loading.Please reload this page.
https://bugs.python.org/issue40077