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
importing "ctypes" immediately causes a segmentation fault #79531
Comments
~Environment Cross compiled Python 2.7.15 for ARM Cortex-A7 target, Linux Kernel 4.18 uname -a: Linux Test-0002 4.18.13 #1 SMP Wed Oct 31 11:20:07 CET 2018 armv7l GNU/Linux ~Description of the problem Importing the "ctypes" module in order to load shared libraries causes a segmentation fault: root [ /tmpfs/root ] $ python
Python 2.7.15 (default, Nov 29 2018, 13:57:56)
[GCC 8.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
Segmentation fault I have found a similiar issue here: Here is the GDB output similiar to the link I posted: (gdb) file python2.7 Program received signal SIGSEGV, Segmentation fault. From what I can see it tries to use the path from the host I cross compiled for the callbacks.c. Is this the cause of the segmentation fault? If yes, how can I correct the path during compilation? I also attached the strace log of the command 'python -c "import ctypes"' Thank you in advance! |
Small update: After commenting out Py_XDECREF(self->restype) in function CThunkObject_dealloc(PyObject *_self), I can import ctypes without getting a segmentation fault. static void
CThunkObject_dealloc(PyObject *_self)
{
CThunkObject *self = (CThunkObject *)_self;
PyObject_GC_UnTrack(self);
Py_XDECREF(self->converters);
Py_XDECREF(self->callable);
//Py_XDECREF(self->restype);
if (self->pcl_write)
ffi_closure_free(self->pcl_write);
PyObject_GC_Del(self);
} But I'm afraid I don't know what other effects could result with this change. |
Another small update: After I recompiled Python with the commented out statement, I did a small test if loading a shared library works. I compiled the following test function to testib.so: #include <stdio.h>
void test_func(void);
void test_func(void) {
printf("hello world\n");
} After that I used ctypes to load this library and execute the test_func(): (gdb) file python2.7 Program received signal SIGSEGV, Segmentation fault. It prints the expected output, but again I get a segmentation fault, this time in PyCFuncPtr_call function. |
Python 2.7 has reached its end of lifetime. Please re-open the bug if you can reproduce the issue on Python 3.8 or newer. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: