[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