Skip to content

Explicit marshalling of Py_SetPythonHome string. #186

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

Closed
wants to merge 2 commits into from
Closed

Explicit marshalling of Py_SetPythonHome string. #186

wants to merge 2 commits into from

Conversation

leomeuk
Copy link

@leomeuk leomeuk commented Mar 13, 2016

Updates as described in #179.

I did look at calling Marshal.FreeHGlobal() in the PythonEngine.Shutdown() method after the call to shutdown Python is made, however it looks as though Python is doing the required memory tidy up.

Unit test has been created but is written to assume Python is installed at C:\Python27.

Assert.AreEqual(PythonEngine.PythonHome, homePath);
}
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

@leomeuk you can get python path using this c# code which requires python interpreter:

dynamic pyos = Py.Import("os");
string homepath = pyos.path.dirname(pyos.path.dirname(pyos.__file__));

Note that PythonEngine.PythonPath is also "broken" like PythonEngine.PythonHome:

> #r "C:\Python\Python27\Lib\site-packages\Python.Runtime.dll"
> using Python.Runtime;
> PythonEngine.Initialize()
> PythonEngine.PythonPath
Hosting process exited with exit code -1073740940.
Loading context from 'CSharpInteractive.rsp'.

Copy link
Contributor

Choose a reason for hiding this comment

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

Updating this PR and noticed this comment. I documented the issue with PythonEngine.PythonPath on #414. All the get functions were broken on 64bit python.

@den-run-ai
Copy link
Contributor

@leomeuk I added the comment inline in code, once your commit is ready please git squash it into one logical unit (commit) per contributing guidelines. Thanks!

@tonyroberts
Copy link
Contributor

Looks like this would leak the allocated string if python home was set twice? Is it safe to have Python deallocate the string allcated in .net? What happens if you deallocate it in Shutdown and set pythonhome to NULL, would that stop Python from trying to also deallocate the string?

@den-run-ai
Copy link
Contributor

@leomeuk can you please make a pull request against master branch? develop branch is deleted.

@den-run-ai
Copy link
Contributor

@tonyroberts I'm not worried about leaking just 1 or 2 strings, this fix is more important than a small leak.

@vmuriart vmuriart mentioned this pull request Mar 3, 2017
2 tasks
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.

4 participants