Skip to content

Fix Re-initialization #343

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

Merged
merged 2 commits into from
Jan 31, 2017
Merged

Fix Re-initialization #343

merged 2 commits into from
Jan 31, 2017

Conversation

filmor
Copy link
Member

@filmor filmor commented Jan 30, 2017

What does this implement/fix? Explain your changes.

Fixes issue #262 by countering two memory corruption issues.

Does this close any currently open issues?

#262.

Any other comments?

Is currently based on my other PR, but doesn't strictly need it, I could rebase.

@codecov-io
Copy link

codecov-io commented Jan 30, 2017

Codecov Report

❗ No coverage uploaded for pull request head (fix-shutdown@af6d37f).


Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2d1da5d...af6d37f. Read the comment docs.

@vmuriart
Copy link
Contributor

Is this branch contain the same changes from #341? I'm reading it from my phone so hard to tell.

@vmuriart
Copy link
Contributor

To answer my own question, it is. I'm testing this now but its looking good!

@vmuriart
Copy link
Contributor

@vmuriart
Copy link
Contributor

@filmor you ok with me rebasing your work ontop of the master branch and push it here?

throw new PythonException();
}

return new PyObject(result);
Copy link
Contributor

Choose a reason for hiding this comment

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

Copy link
Member Author

Choose a reason for hiding this comment

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

I don't really see the issue here.

Copy link
Member Author

Choose a reason for hiding this comment

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

To elaborate, the link that you posted warns against relying on try {} finally {} as the finally may not be executed, but in such a case the problem has either exited already or is in the process of doing so, so we don't have to worry about dereferencing the Python resources anyhow.

Copy link
Contributor

Choose a reason for hiding this comment

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

It was more of a caveat, return statements within try statements confuse me at times.

@filmor filmor force-pushed the fix-shutdown branch 2 times, most recently from 7e26298 to 3e1a313 Compare January 31, 2017 06:44
Runtime.XDecref(py_import);
}
}

internal static void Cleanup()
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a call to Cleanup missing?

Copy link
Member Author

Choose a reason for hiding this comment

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

That part is not used anymore as there is only a single ModuleDef instance that is kept for the whole run time, I'll remove it.

Copy link
Contributor

Choose a reason for hiding this comment

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

Cool, after it's removed I'm ok merging it. This fixes the issue for Python2.7, but it still occassionally fails on Python3 but it seems to be due to a different section of code

Copy link
Member Author

Choose a reason for hiding this comment

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

Yeah, I noticed that too, I'll try to reproduce the issue, for me it happens (after these patches) not anymore on Shutdown but only on Initialize.

Keeping the PyMethodDef around like the documentation
(https://docs.python.org/3.6/c-api/module.html#c.PyModuleDef) suggests
fixes issue pythonnet#262.
@vmuriart
Copy link
Contributor

Cool, will merge after CI completes. Thanks!

@vmuriart vmuriart merged commit af6d37f into pythonnet:master Jan 31, 2017
vmuriart added a commit that referenced this pull request Jan 31, 2017
@filmor filmor deleted the fix-shutdown branch January 31, 2017 20:52
@vmuriart vmuriart changed the title Fix shutdown Fix Re-initialization Feb 8, 2017
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.

3 participants