Repository navigation
Embedded python crashed on 4th run, if "ctypes" is used #51118
Description
Activity
When embedding python from C, and importing "ctypes" module in embedded
script, it always crashes on Py_Finalize() on 4th cycle.
Tested with both PyRun_SimpleString(...) and PyRun_String(...).
Platform: Windows XP
IDE's: LabWindows/CVI 8.5 and Code::Blocks/gccCode:
--------------------------#include <stdio.h> #include <python.h> int main() { int i; for (i=0; i<10; i++) { printf("--- %d ---\n", i); Py_Initialize(); PyRun_SimpleString("import ctypes"); Py_Finalize(); } return 0; }
Output:
--------------------------------
--- 0 ---
--- 1 ---
--- 2 ---
--- 3 ---Process returned -1073741819 (0xC0000005) execution time : 3.109 s
Press any key to continue.
--------------------------------- addedtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump
on Sep 9, 2009 Tested obj=PyImport_ImportModule("ctypes"); Py_DECREF(obj); instead of PyRun_SimpleString(...) - same result
on python2.5 / mac os x 10.5.7:
$ cat main.c #include <stdio.h> #include <python.h> int main() { int i; for (i=0; i<10; i++) { printf("--- %d ---\n", i); Py_Initialize(); PyRun_SimpleString("import ctypes"); Py_Finalize(); } return 0; }
$ gcc -I/usr/include/python2.5/ -L/usr/lib/python2.5/ -lpython main.c $ ./a.out --- 0
--- 1 ---
--- 2 ---
--- 3 ---
Assertion failed: (type->tp_flags & Py_TPFLAGS_HEAPTYPE), function
type_dealloc, file Objects/typeobject.c, line 2148.
Abort trap
$ uname -mprsv
Darwin 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009;
root:xnu-1228.12.14~1/RELEASE_I386 i386 i386I hope attached patch will fix this issue.
niklutzgmailcom commented
on Apr 5, 2010 niklutzgmailcommannequinMannequinMore actionsI can confirm that the patch fix this issue. I adapted the patch (variable names changed):
5523a5524
Py_INCREF(&Struct_Type);5529a5531
Py_INCREF(&Union_Type);5535a5538
Py_INCREF(&Pointer_Type);5541a5545
Py_INCREF(&Array_Type);5547a5552
Py_INCREF(&Simple_Type);5553a5559
Py_INCREF(&CFuncPtr_Type);Platform: Linux (kubuntu 9.10 x64)
Python: 2.6.4-0ubuntu3Fixed in rev 83841 (py3k), rev 83842 (release31-maint), and rev 83843 (release27-maint).
Thanks for the patch.
I found another refcount bug in Python3.x.
Fixed in r84741(py3k), r84742(release31-maint).
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: