-
Notifications
You must be signed in to change notification settings - Fork 193
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
Windows: exporting a tuple leads to "A dynamic link library (DLL) initialization routine failed." #2190
Comments
Additional information about this bug:
|
It's difficult for me to debug that one as I don't have access to a windows machine. I confirm I can't reproduce on windows. Could you try the following:
I don't see why this would change the behavior (it should actually introduce a leak), just trying. |
Replacing If I comment If I comment Then, I tried to replace this line with Py_ssize_t size = 2;
PyObject* my_tuple = PyTuple_New(size); I again get the same error. Then, I tried to manually write a minimal cpp file exporting one tuple and I again get the same error, but I really don't know if it is correct. #include <Python.h>
Py_ssize_t size = 2;
PyObject* my_tuple = PyTuple_New(size);
static PyMethodDef methods[] = {
{NULL, NULL, 0, NULL} /* Sentinel */
};
static struct PyModuleDef mod_def = {
PyModuleDef_HEAD_INIT,
"my_mod",
"",
-1,
methods,
NULL,
NULL,
NULL,
NULL
};
PyObject *PyInit_my_mod(void)
{
PyObject* theModule = PyModule_Create(&mod_def);
PyModule_AddObject(theModule, "my_tuple", my_tuple);
return theModule;
} I tried to check on Linux but using |
I discovered a funny bug affecting Transonic users on Windows when using Visual Studio and clang-cl (but not MinGW, which explains why I didn't detect that with our CI on Github Actions). Pythran files written by Transonic export a tuple of strings, which usually work fine but not for this specific case.
It is quite simple to reproduce with a Windows machine (details because working on Windows is new for me):
We get:
simple.py
create the extension with
pythran simple.py
import the extension
python -c "import simple"
gives:Note: actually one can also reproduce simply with an environment based on conda-forge created with
mamba create -n env_pythran pythran clang
(in this case clang==18.1.2).Even though I guess exporting a tuple from a pythran file is not common, this bug is quite annoying for me because it affects all Pythran extensions produced through Transonic on Windows for conda-forge 🙂 Therefore, I think I'm going to quickly release a Transonic which does not export this tuple to overcome this bug.
The text was updated successfully, but these errors were encountered: