QtWebEngine is fairly buggy and crash prone. I have written several applications using it (see my github profile for iv and vise) and in my opinion it is not really ready for production use. I have experienced lots of crashes and rendering bugs with it. And on top of everything else, there were a large number of regressions introduced into it in Qt 5.8.0 that still have not had a fix released, months later (search the Qt bug database for bugs against webengine in 5.8.0).
All in all, I have been pretty disappointed with web engine. I have shelved my plans for replacing webkit with it for atleast another year.
Note that there is a new community supported version of qt webkit with more up-to-date webkit versions. At least on my Arch system it is called qt-webkit-ng and I was able to use it as a drop in replacement for the old qt webkit in calibre (although the binary calibre releases still use the old qt webkit and will likely continue to do so for a while as the ng version is still in beta and it remains to be seen how viable it is in the long term).
Whether there is a race in the qupzilla code or not, depends on how runJvascript() is implemented. If it uses the event loop to dispatch the JS to the webengine process, then there is no race. If it does not, then there is a race. You can eliminate the race by using QTimer to call runJavascript after loop::exec() is called. Though that will probably make the code ungainly again.
|