Thanks for the answers; I almost missed them because of GMane changes.

> Sorry, it's a bug in the application code.

I was beginning to think as much.

> QCoreApplication keep s a reference to argc. Since main() has exited, the
> reference is now dangling

I suppose this depends on the runtime, but at some point the memory will indeed 
be freed.

> this reason and many others,) QCoreApplication should have been destroyed
> before main() returned.

Hmmm, this happened in a style plugin called from the MuseScore application 
which allocates the application instance using `new`; I think I triggered this 
codepath where main() indeed exits without deallocating the instance first:

```
      if (MScore::noGui) {
#ifdef Q_OS_MAC
            // see issue #28706: Hangup in converter mode with MusicXML source
            qApp->processEvents();
#endif
            exit(processNonGui(argv) ? 0 : EXIT_FAILURE);
            }
      else {
```

So you're suggesting I should report this as an issue in their code?

BTW, does qApp get reset to NULL/nullptr when the QCoreApplication instance is 
destroyed, IOW, is testing qApp safe even during global destruction (under 
normal circumstances)?

> And if your code is a plugin, you
> must also deal with the case where the application modifies argv or passes
> something completely different to QCoreApplication.

Theoretically I should, but in practice this code is just to special-case 
specific applications, and for now we can do that using the argv[0] value at 
the time the plugin is loaded (because the apps needing the special-casing 
don't pull tricks in this department).


R.
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to