Activity log for bug #820377

Date Who What changed Old value New value Message
2011-08-03 13:46:20 shen139 bug added bug
2011-08-03 13:47:44 shen139 description A C programs crash after the second call to Py_Finalize() if lxml is used. Tested with Python 2.5, 2.7 and 3.2. (etree.LXML_VERSION: (2, 3, 0, 0)) under Ubuntu 11.04. The C code: -[ #include <Python.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int x; for(x=0;x<10;x++) { printf(" + Py_Initialize (%d)...\n", x); Py_Initialize(); printf(" + PyRun_SimpleString...\n"); PyRun_SimpleString("from lxml import etree\n" \ "print ' - etree.LXML_VERSION: ', etree.LXML_VERSION\n" \ "print ' - etree.parse()'\n" \ "tree = etree.parse('test.xml')\n" \ "print ' - ok'\n"); printf(" + Py_Finalize...\n\n"); Py_Finalize(); } return 1; } ]- Compiled with: shen139@vega:~/test$ gcc test-lxml.c -I/usr/include/python2.7 -I/usr/include/python2.7 -o test-lxml.o -L/usr/lib/python2.7/config -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions Using: Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) [GCC 4.5.2] on linux2 The output: -[ shen139@vega:~/test$ ./test-lxml.o + Py_Initialize (0)... + PyRun_SimpleString... - etree.LXML_VERSION: (2, 3, 0, 0) - etree.parse() - ok + Py_Finalize... + Py_Initialize (1)... + PyRun_SimpleString... - etree.LXML_VERSION: (2, 3, 0, 0) - etree.parse() Segmentation fault ]- Using: Version: 3.2 (r32:88445, Mar 25 2011, 19:26:27) [GCC 4.5.2] Platform: linux2 Backtrace: -[ #0 0x001ec991 in PyObject_Malloc () from /usr/lib/libpython3.2mu.so.1.0 #1 0x001ea045 in _PyObject_New () from /usr/lib/libpython3.2mu.so.1.0 #2 0x00205cda in ?? () from /usr/lib/libpython3.2mu.so.1.0 #3 0x0020f3b5 in PyUnicodeUCS4_DecodeUTF8Stateful () from /usr/lib/libpython3.2mu.so.1.0 #4 0x0020f963 in PyUnicodeUCS4_DecodeUTF8 () from /usr/lib/libpython3.2mu.so.1.0 #5 0x00213f29 in PyUnicodeUCS4_Decode () from /usr/lib/libpython3.2mu.so.1.0 #6 0x007eeca8 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #7 0x00820b6c in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #8 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so ... ... #526 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #527 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #528 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #529 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #530 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #531 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so ... ... .... many many many more...... ]- A C program crashes after the second call to Py_Finalize() if lxml is used. Tested with Python 2.5, 2.7 and 3.2. (etree.LXML_VERSION: (2, 3, 0, 0)) under Ubuntu 11.04. The C code: -[ #include <Python.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) {     int x;     for(x=0;x<10;x++)     {   printf(" + Py_Initialize (%d)...\n", x);   Py_Initialize();   printf(" + PyRun_SimpleString...\n");   PyRun_SimpleString("from lxml import etree\n" \    "print ' - etree.LXML_VERSION: ', etree.LXML_VERSION\n" \    "print ' - etree.parse()'\n" \      "tree = etree.parse('test.xml')\n" \      "print ' - ok'\n");   printf(" + Py_Finalize...\n\n");   Py_Finalize();     }     return 1; } ]- Compiled with: shen139@vega:~/test$ gcc test-lxml.c -I/usr/include/python2.7 -I/usr/include/python2.7 -o test-lxml.o -L/usr/lib/python2.7/config -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions Using: Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) [GCC 4.5.2] on linux2 The output: -[ shen139@vega:~/test$ ./test-lxml.o  + Py_Initialize (0)...  + PyRun_SimpleString...    - etree.LXML_VERSION: (2, 3, 0, 0)    - etree.parse()      - ok  + Py_Finalize...  + Py_Initialize (1)...  + PyRun_SimpleString...    - etree.LXML_VERSION: (2, 3, 0, 0)    - etree.parse() Segmentation fault ]- Using: Version: 3.2 (r32:88445, Mar 25 2011, 19:26:27) [GCC 4.5.2] Platform: linux2 Backtrace: -[ #0 0x001ec991 in PyObject_Malloc () from /usr/lib/libpython3.2mu.so.1.0 #1 0x001ea045 in _PyObject_New () from /usr/lib/libpython3.2mu.so.1.0 #2 0x00205cda in ?? () from /usr/lib/libpython3.2mu.so.1.0 #3 0x0020f3b5 in PyUnicodeUCS4_DecodeUTF8Stateful () from /usr/lib/libpython3.2mu.so.1.0 #4 0x0020f963 in PyUnicodeUCS4_DecodeUTF8 () from /usr/lib/libpython3.2mu.so.1.0 #5 0x00213f29 in PyUnicodeUCS4_Decode () from /usr/lib/libpython3.2mu.so.1.0 #6 0x007eeca8 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #7 0x00820b6c in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #8 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so ... ... #526 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #527 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #528 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #529 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #530 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so #531 0x00821210 in ?? () from /usr/lib/python3/dist-packages/lxml/etree.cpython-32mu.so ... ... .... many many many more...... ]-
2011-08-12 04:57:48 scoder lxml: importance Undecided Wishlist
2011-08-12 04:57:48 scoder lxml: status New Triaged
2020-02-26 13:10:59 scoder summary Segmentation fault after Py_Finalize Support extension module reloading