Author Topic: Qt6 Application Testing  (Read 404229 times)

Dariusz Piatkowski

  • Hero Member
  • *****
  • Posts: 1428
  • Karma: +28/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #780 on: January 20, 2025, 05:03:20 pm »
Hello Remy,

Ok, read it.
I don't understand why when adding this switch, Dooble is more stable while it should have no effect but it has here !
(adding this switch, I'm able to use Dooble without setting priorities. Without it, I need to add priorities settings)
 
May it be possible this constant isn't well taken into some parts of the codes ?

Could it be that this SET statement impacts other apps on your system which in turn have an impact on the QT stuff?

I have a few apps here that would fit the bill:
1) FF - where I no longer have this set, while in earlier versions I did
2) PUMONITOR - by default I'm using the hires timer to gether runtime statistics
3) DISKIO - the version I am currently working on is using this approach

Now of course if you are running/testing the QT apps w/o anything else on your OS/2 box currently running, that would at least limit that spillover effect that other apps might have.

Remy

  • Hero Member
  • *****
  • Posts: 877
  • Karma: +14/-1
    • View Profile
Re: Qt6 Application Testing
« Reply #781 on: January 20, 2025, 08:43:56 pm »
Hello Remy,

Ok, read it.
I don't understand why when adding this switch, Dooble is more stable while it should have no effect but it has here !
(adding this switch, I'm able to use Dooble without setting priorities. Without it, I need to add priorities settings)
 
May it be possible this constant isn't well taken into some parts of the codes ?

Could it be that this SET statement impacts other apps on your system which in turn have an impact on the QT stuff?

I have a few apps here that would fit the bill:
1) FF - where I no longer have this set, while in earlier versions I did
2) PUMONITOR - by default I'm using the hires timer to gether runtime statistics
3) DISKIO - the version I am currently working on is using this approach

Now of course if you are running/testing the QT apps w/o anything else on your OS/2 box currently running, that would at least limit that spillover effect that other apps might have.

Hi Dariusz,

I did a try removing auto started application and just left as is from a new install.
Same Dooble result here!

One time, I could see a blocked named pipe established by webengine (Theseus) just before system hung (reboot required)
Many troubles about sound (sound no more working, sound issued into a short loop etc... uniaudio installed)

 :-\       

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2509
  • Karma: +190/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #782 on: January 20, 2025, 08:59:44 pm »
May it be possible this constant isn't well taken into some parts of the codes ?

I searched the entire code base, that link I posted is the only place where webengine flags are interpreted, and the timer variable is only interpreted on Windows.

I have no idea how this could possibly make any difference, other than the placebo effect.

Cheers,

Paul

Dave Yeo

  • Hero Member
  • *****
  • Posts: 5352
  • Karma: +127/-1
    • View Profile
Re: Qt6 Application Testing
« Reply #783 on: January 20, 2025, 09:40:22 pm »
Timing? One thread wasting time trying to figure out the parameter and starting slightly later. Remy's experiments with priority might do the same thing, namely change timing slightly. The joy of multi-threading on SMP.

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2509
  • Karma: +190/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #784 on: January 21, 2025, 07:56:50 am »
Glad to be able to do something useful to help get QT 6 the best it can be.

https://smedley.id.au/tmp/qt6-6.8.1-os2-20250121.zip should address the DLL name issues. I've also committed these changes to the various 6.8.x branches, and tried to remove the old, incorrect DLLs.

I haven't had time yet to test and see if this changes anything.

Edit: Dooble does not start with this build - it's missing symbols in qmlplugn.dll - those symbols it's looking for are in qt6qml.dll (which doesn't exist in 6.2.x) hmmmm. I think the functionality in this DLL has been split up
« Last Edit: January 21, 2025, 08:06:37 am by Paul Smedley »

Remy

  • Hero Member
  • *****
  • Posts: 877
  • Karma: +14/-1
    • View Profile
Re: Qt6 Application Testing
« Reply #785 on: January 21, 2025, 11:23:08 am »
May it be possible this constant isn't well taken into some parts of the codes ?

I searched the entire code base, that link I posted is the only place where webengine flags are interpreted, and the timer variable is only interpreted on Windows.

I have no idea how this could possibly make any difference, other than the placebo effect.

Cheers,

Paul

Hi Paul,

You have checked where the setting is used but is there no code using hires while it should not ? (setting ignored, missing code to ignore the const  ::))
Placebo  ::)  just tell it to my system which I have to reboot 2 or 3 times per day using Dooble.... (frozen, hung)

* Firefox is outdated for many sites *

Regards

Note: I have no skills into this code. Doing several searches on internet, I found some qt developers using webengine having resolved hires timing issues using process cycles instead (is it possible ?)   
« Last Edit: January 21, 2025, 11:31:22 am by Remy »

David McKenna

  • Hero Member
  • *****
  • Posts: 875
  • Karma: +30/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #786 on: January 21, 2025, 12:57:25 pm »
 Thanks Paul,

 Did a quick test, but unfortunately doesn't seem to be any better than the last one - same apps still don't start and qml examples don't all work - but they seem to fail a little differently. I am getting a lot of entries in POPUPLOG I didn't get before like:

01-21-2025  06:19:48  SYS2070  PID 006b  TID 0001  Slot 0089
C:\JUNK\DL\TETZLE-3.0.0-OS2-QT6210\TETZLE\BIN\TETZLE.EXE
TETZLE->QT6WIDGE.__Z12qt_blurImageP8QPainterR6QImagedbbi
127
------------------------------------------------------------

01-21-2025  06:20:15  SYS2070  PID 006c  TID 0001  Slot 0089
C:\QT6.8\EXAMPLES\CHARTS\QMLCHARTSGALLERY\QMLCHARTSGALLERY.EXE
QMLCHARTSGALLERY->QMLPLUGN.__ZN10QQmlEngine13addImportPathERK7QString
127
------------------------------------------------------------

01-21-2025  06:20:30  SYS2070  PID 006e  TID 0001  Slot 0089
C:\QT6.8\EXAMPLES\CHARTS\QMLWEATHER\QMLWEATHER.EXE
QMLWEATHER->QMLPLUGN.__ZN10QQmlEngine13addImportPathERK7QString
127
------------------------------------------------------------

01-21-2025  06:20:32  SYS2070  PID 006f  TID 0001  Slot 0089
C:\QT6.8\EXAMPLES\CHARTS\QMLWEATHER\QMLWEATHER.EXE
QMLWEATHER->QMLPLUGN.__ZN10QQmlEngine13addImportPathERK7QString
127

Regards,

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2509
  • Karma: +190/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #787 on: January 21, 2025, 09:43:01 pm »
Thanks Paul,

 Did a quick test, but unfortunately doesn't seem to be any better than the last one - same apps still don't start and qml examples don't all work - but they seem to fail a little differently. I am getting a lot of entries in POPUPLOG I didn't get before like:

The ones that reference qmlplugn make sense now I think about it - the DLL has been renamed and it can't find the right exports. I'll rebuild the affect qt modules - hopefully tonight.

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2509
  • Karma: +190/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #788 on: January 21, 2025, 09:48:55 pm »
You have checked where the setting is used but is there no code using hires while it should not ? (setting ignored, missing code to ignore the const  ::))
Placebo  ::)  just tell it to my system which I have to reboot 2 or 3 times per day using Dooble.... (frozen, hung)

* Firefox is outdated for many sites *

Regards

Note: I have no skills into this code. Doing several searches on internet, I found some qt developers using webengine having resolved hires timing issues using process cycles instead (is it possible ?)   

Even if qt6 on OS/2 *is* using hires timing (I have NFI) I cannot understand how that webengine flag is making any difference. The link I posted is where qtwebengine interprets flags - it cannot interpret the flag on OS/2, so the flag is ignored.

I am also *not* a programmer. I can barely write a hello world in C without googling it. How about you inject a deliberate typo into the flag you;'re using with hires and see if you still see the same 'improvements' - that might confirm Dave's thoughts on timing.

Remy

  • Hero Member
  • *****
  • Posts: 877
  • Karma: +14/-1
    • View Profile
Re: Qt6 Application Testing
« Reply #789 on: January 21, 2025, 10:52:31 pm »
You have checked where the setting is used but is there no code using hires while it should not ? (setting ignored, missing code to ignore the const  ::))
Placebo  ::)  just tell it to my system which I have to reboot 2 or 3 times per day using Dooble.... (frozen, hung)

* Firefox is outdated for many sites *

Regards

Note: I have no skills into this code. Doing several searches on internet, I found some qt developers using webengine having resolved hires timing issues using process cycles instead (is it possible ?)   

Even if qt6 on OS/2 *is* using hires timing (I have NFI) I cannot understand how that webengine flag is making any difference. The link I posted is where qtwebengine interprets flags - it cannot interpret the flag on OS/2, so the flag is ignored.

I am also *not* a programmer. I can barely write a hello world in C without googling it. How about you inject a deliberate typo into the flag you;'re using with hires and see if you still see the same 'improvements' - that might confirm Dave's thoughts on timing.

Will give it a try and post back

Dave Yeo

  • Hero Member
  • *****
  • Posts: 5352
  • Karma: +127/-1
    • View Profile
Re: Qt6 Application Testing
« Reply #790 on: January 21, 2025, 10:57:50 pm »
Qt-base-os2 issue #53 does talk about using the high-res timer. dmik pointed out that libcn supports clock_gettime(CLOCK_MONOTONIC) which interfaces with the high-res timer directly and planned to enable the UNIX implementation (qelapsedtimer_unix.cpp). Might be worth looking at.
As for NSPR, which uses the environment variable NSPR_OS2_NO_HIRES_TIMER=1 to turn it off, no command line parameter as far as I know. ArcaOS does (did?) add the environment variable to config.sys
I tried yum remove nspr to see the dependencies.
Code: [Select]
---> Package adobe-source-code-pro-fonts.noarch 0:2.030.1.050-1.oc00 will be erased
---> Package adobe-source-sans-pro-fonts.noarch 0:2.020-1.oc00 will be erased
---> Package dbus-common.noarch 1:1.13.12-1.oc00 will be erased
---> Package lzlib-devel.pentium4 0:1.14-1.oc00 will be erased
---> Package os2-base-fhs.i686 0:0.0.0-19.oc00 will be erased
---> Package os2-base-unixtools-path.pentium4 0:0.0.1-3.oc00 will be erased
---> Package pci-ids.noarch 0:2023.11.11-0.oc00 will be erased
---> Package sgml-common.noarch 0:0.6.3-45.oc00 will be erased
---> Package xml-common.noarch 0:0.6.3-45.oc00 will be erased
--> Finished Dependency Resolution
Error: Trying to remove "yum", which is protected

So a couple of dependencies, dbus perhaps xml might use NSPR. Though some of the dependencies look weird, fonts?
At one time it was common for computers to have a BIOS option to turn off the hi-res timer, shame this one doesn't.

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2509
  • Karma: +190/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #791 on: January 22, 2025, 02:34:58 am »
Qt-base-os2 issue #53 does talk about using the high-res timer. dmik pointed out that libcn supports clock_gettime(CLOCK_MONOTONIC) which interfaces with the high-res timer directly and planned to enable the UNIX implementation (qelapsedtimer_unix.cpp). Might be worth looking at.

Yeah https://github.com/bitwiseworks/qtbase-os2/issues/53 is interesting. I will definitely look in to this. Now whether the webenginewidget code uses the qttimer is another issue. Enhancing the resolution of the timer in qtbase may actually make zero change to webengine if the timing issues are within chromium.

Edit: https://smedley.id.au/tmp/Qt6Core-6.2.11-os2-qelapsedtimer_unix-20250122.zip uses qelapsedtimer_unix.cpp instead of qelapsedtimer_generic.cpp. NB: Minimally tested this (lack of time) - YMMV.... but dooble still loads pages :)
« Last Edit: January 22, 2025, 09:35:58 am by Paul Smedley »

David McKenna

  • Hero Member
  • *****
  • Posts: 875
  • Karma: +30/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #792 on: January 22, 2025, 10:21:57 pm »
Paul,

  Been running Dooble with this QT6Core.dll and Unix timer, but don't see any change good or bad. No change in any examples I've tried either...

Regards,

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2509
  • Karma: +190/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #793 on: January 23, 2025, 12:07:20 am »
Thanks - that was my quick observation too. I'll get the timer tests working that Dmitry alludes to, and see if they've improved test results. I suspect that even if it is timer issues driving issues with Dooble, that those issues are in the chromium code, not the qt code.

Dave Yeo

  • Hero Member
  • *****
  • Posts: 5352
  • Karma: +127/-1
    • View Profile
Re: Qt6 Application Testing
« Reply #794 on: January 23, 2025, 01:16:57 am »
Possibly a similar fix could be made in the webengine, also wonder about the various multimedia libraries. I'd assume the ones with a good configure such as FFmpeg will enable clock_gettime(CLOCK_MONOTONIC)