[PyQt] Segfault on exit with Python 3.5

Phil Thompson phil at riverbankcomputing.com
Sun Dec 20 17:21:16 GMT 2015


On 20 Dec 2015, at 5:03 pm, Dmitry Shachnev <mitya57 at ubuntu.com> wrote:
> 
> Hi all,
> 
> In my application I get a strange segfault on exit only when using Python
> 3.5.1 (does not happen with Python 3.4.4rc1).
> 
> Segfault happens in this code:
> 
> 808   int QMetaObjectPrivate::signalOffset(const QMetaObject *m)
> 809   {
> 810       Q_ASSERT(m != 0);
> 811       int offset = 0;
> 812       for (m = m->d.superdata; m; m = m->d.superdata)
> 813 >>        offset += priv(m->d.data)->signalCount;
> 814       return offset;
> 815   }
> 
> The full traceback is attached. Valgrind says that this code is trying to
> access address 0x30, which is (obviously) not mapped.
> 
> I quickly figured out that reverting an innocently-looking commit [1] fixes
> this. While trying to provide a minimal example I also figured out that almost
> any minor change to the code makes the segfault disappear (thus I was not able
> to provide a minimal example).
> 
> Has anybody else seen this? What component should I blame?
> 
> [1]: https://github.com/retext-project/retext/commit/64fdbcb62d0c3155

Could you try rebuilding PyQt5 with the current SIP snapshot?

Phil


More information about the PyQt mailing list