Hello, The sample code is attached. It segfaults at pickle.dump(). However, pickling something like QByteArray("asdf") works fine. This is with python 3. The exact same code works with python 2 (same pyqt, sip and qt versions).
A backtrace is also attached. I see a lot of "<optimized out>" in the backtrace - should I recompile python and/or sip with -O0 or something like that? Python 3 version: 3.2.2 Python 2 version: 2.7.2 Pyqt version: 4.8.6 Sip version: 4.13 Qt version: 4.7.4 Operating system: 64 bit arch linux. -- cantabile "Jayne is a girl's name." -- River
#!/usr/bin/env python3 from PyQt4.QtGui import * from PyQt4.QtCore import * import pickle img = QImage("some-image.png") tmp_bytearray = QByteArray() tmp_buffer = QBuffer(tmp_bytearray) tmp_buffer.open(QIODevice.WriteOnly) img.save(tmp_buffer, "png") tmp_buffer.close() f = open("pickle-test", "wb") pickle.dump(tmp_bytearray, f) f.close() f = open("pickle-test", "rb") another_bytearray = QByteArray() another_bytearray = pickle.load(f) f.close() another_img = QImage() another_img.loadFromData(another_bytearray, "png") another_img.save("pickle-test.png", "png")
Program received signal SIGSEGV, Segmentation fault. pickle_type (obj=<optimized out>, ignore=<optimized out>) at siplib.c:5732 5732 if (!PyTuple_Check(init_args)) (gdb) bt #0 pickle_type (obj=<optimized out>, ignore=<optimized out>) at siplib.c:5732 #1 0x00007ffff7a28916 in PyObject_Call (func=0x7ffff0c4b8c0, arg=0x7ffff7f8f050, kw=<optimized out>) at Objects/abstract.c:2149 #2 0x00007ffff7aaf7c7 in PyEval_CallObjectWithKeywords (func=0x7ffff0c4b8c0, arg=0x7ffff7f8f050, kw=<optimized out>) at Python/ceval.c:3801 #3 0x00007ffff7a6ec4b in object_reduce_ex (self=0x7ffff0cb2280, args=<optimized out>) at Objects/typeobject.c:3342 #4 0x00007ffff7a28916 in PyObject_Call (func=0x7ffff0c4b878, arg=0x7ffff0c94dd0, kw=<optimized out>) at Objects/abstract.c:2149 #5 0x00007ffff0819ba4 in _Pickler_FastCall (func=0x7ffff0c4b878, arg=<optimized out>, self=<optimized out>) at /home/asdf/builds/python/src/Python-3.2.2/Modules/_pickle.c:656 #6 0x00007ffff081eff0 in save (self=0x7ffff0cd5958, obj=0x7ffff0cb2280, pers_save=<optimized out>) at /home/asdf/builds/python/src/Python-3.2.2/Modules/_pickle.c:3186 #7 0x00007ffff082030f in dump (self=0x7ffff0cd5958, obj=0x7ffff0cb2280) at /home/asdf/builds/python/src/Python-3.2.2/Modules/_pickle.c:3250 #8 0x00007ffff0820529 in pickle_dump (self=<optimized out>, args=<optimized out>, kwds=<optimized out>) at /home/asdf/builds/python/src/Python-3.2.2/Modules/_pickle.c:5967 #9 0x00007ffff7ab6e3d in call_function (oparg=<optimized out>, pp_stack=0x7fffffffe2c8) at Python/ceval.c:3921 #10 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:2692 #11 0x00007ffff7ab80b6 in PyEval_EvalCodeEx (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0) at Python/ceval.c:3350 #12 0x00007ffff7ab832b in PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at Python/ceval.c:767 #13 0x00007ffff7ad4081 in run_mod (mod=<optimized out>, filename=<optimized out>, globals=0x66a800, locals=0x66a800, flags=<optimized out>, arena=<optimized out>) at Python/pythonrun.c:1783 #14 0x00007ffff7ad5de8 in PyRun_FileExFlags (fp=0x6e31d0, filename=0x7ffff7ea6770 "pickle-test.py", start=<optimized out>, globals=0x66a800, locals=0x66a800, closeit=1, flags=0x7fffffffe630) at Python/pythonrun.c:1740 #15 0x00007ffff7ad69d9 in PyRun_SimpleFileExFlags (fp=0x6e31d0, filename=0x7ffff7ea6770 "pickle-test.py", closeit=1, flags=0x7fffffffe630) at Python/pythonrun.c:1265 #16 0x00007ffff7ae84fd in run_file (p_cf=0x7fffffffe630, filename=0x6290c0 L"pickle-test.py", fp=0x6e31d0) at Modules/main.c:297 #17 Py_Main (argc=<optimized out>, argv=<optimized out>) at Modules/main.c:692 #18 0x00000000004009b2 in main (argc=3, argv=0x7fffffffe798) at ./Modules/python.c:59 (gdb) quit
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt