-
Notifications
You must be signed in to change notification settings - Fork 748
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
Conversation
…is explicit and will not be freed automatically.
Assert.AreEqual(PythonEngine.PythonHome, homePath); | ||
} | ||
} | ||
} |
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.
@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'.
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.
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.
@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! |
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? |
@leomeuk can you please make a pull request against master branch? develop branch is deleted. |
@tonyroberts I'm not worried about leaking just 1 or 2 strings, this fix is more important than a small leak. |
Updates as described in #179.
I did look at calling
Marshal.FreeHGlobal()
in thePythonEngine.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.