[Development] Backporting the "stop unloading plugins" change to 5.6
Thiago Macieira
thiago.macieira at intel.com
Wed Oct 12 22:41:41 CEST 2016
Em quarta-feira, 12 de outubro de 2016, às 22:28:33 CEST, André Pönitz
escreveu:
> On Wed, Oct 12, 2016 at 09:59:06PM +0200, Thiago Macieira wrote:
> > Hello
> >
> > We've got a number of issues that got fixed in 5.7 by the change that made
> > QFactoryLoader stop unloading plugins (notably,
>
> Not unloading plugins is not a fix.
No, it's a workaround. But I'm at a loss to fix the current issue.
The issue at hand is that the plugin was unloaded between a slot being invoked
in a queued connection and the object that would receive the event getting
deleted. When deleting the object, the events queued to it are deleted. When
metacall events are deleted, the parameters stored in it are destroyed. In
order for QMetaType to destroy such a type, it needs to call the destroying
functions registered with it.
Since we do allow breaking of ODR because of hidden visibility / DLLs, the
functions in question may have belonged to the plugin that was unloaded, even
if the type wasn't exclusive to that plugin.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development
mailing list