QDialog::exec() is bad and should not be used unless strictly necessary. The exec() call is blocking and anything can happen before it returns to the caller. The old workaround (which Ark uses) is to use a QPointer to guard the dialog. Yet I can reproduce a crash by calling QCoreApplication::quit() via dbus while the dialog is open.
The proper fix is to call the dialog in a non-blocking way. Nowadays this is trivial thanks to C++11 lambdas.
(Patch meant for Applications/16.04)