[SOLVED] QtSingleApplication crashes on Windows (Qt 5.4)
-
The latest (updated about a year ago) QtSingleApplication from Qt Extras repository crashes on Windows on program startup. The crash occurs pretty often - like every 5th startup. Has anyone encountered this problem, is there a solution?
I couldn't really debug it because it only crashes in release build. I see where it crashes, but don't understand why. It's a memory management issue (invalid pointers). -
Hi,
Does the break happen in your code or in Qt's ?
-
Hi,
It happens in qtsingleapplication.cpp
-
Can you give more details ?
-
Not much more, I'm afraid. There is a method
QtSingleApplication::activateWindow()
. It's a slot, and it's sometimes called on invalid pointer, i. e.QtSingleApplication
'sthis
is garbage whenactivateWindow
is called. I've tried replacing regular good oldconnect
calls with the new compile-time ones (that take a method pointer instead of a method name), then it started crashing when calling other slots (that I didn't yet touch).
This is all during normal startup - in absence of another instance of the application. -
Not even a stack trace ?
-
Sure, I'll post a trace (for whatever it's worth in release build) tomorrow.
-
I've found the problem! It was a user error, not a QtSingleApplication bug.
My application is doing some deinitialization work after the main window is closed andapp.exec()
returns. If another instance attempts to start while this work is being done, it will attempt to activate the first instance's window that's no longer being processed in the event loop. I'm not sure exactly why or how, but it causes crash. Solution: callapp.setActivationWindow(nullptr);
right afterapp.exec()
. Or better yet, call it in theQMainWindow::closeEvent
.