https://issues.apache.org/ooo/show_bug.cgi?id=124629

--- Comment #1 from Ariel Constenla-Haile <[email protected]> ---
Created attachment 83134
  --> https://issues.apache.org/ooo/attachment.cgi?id=83134&action=edit
GDB backtrace

The backtrace shows clearly what's happening:

- the code that creates the wizard dialog owns it, this means that when the
client application releases its reference to it, the wizard dialog (a C++ UNO
object, lifetime controller by reference count) should die

- but that's not the case. There is another object holding a reference to the
UNO dialog (svt::uno::Wizard): its VCL dialog (svt::uno::WizardShell).

The VCL dialog is constructed with a reference to the UNO dialog, this prevents
the UNO dialog from being deleted when the client code released its references.

In the normal case, when the UNO dialog dies, it deletes the VCL dialog, but as
its VCL dialog holds a reference to it, the VCL dialog is first deleted by the
vcl::LazyDeletor.

In this case, when the VCL dialog dies, its reference to the UNO dialog is
deleted, and the UNO dialog starts to die.

Here the cyclic bug: when the UNO dialog is being deleted it deletes the VCL
dialog, but this is already in its destructor.

-- 
You are receiving this mail because:
You are watching all issue changes.

Reply via email to