Instead of relying on timer events processed after startup completed, the application’s startupCompleted() signal should be used instead.
There can be many other places where event processing before application startup may cause problems, so probably it would be better to delay the extension update check (gatherExtensionsHistoryInformationOnStartup): it should be started after application startup is completed.
It is also very odd that extension update check is performed at every startup. If extension update check is successfully completed then it should not be performed again within 10-20 hours.