To close the subject:

To force your application to be moved to FTH shim, just create 3 times a crash within an hour with

QString *heap = new QString();
delete heap;
delete heap;

then to detect your app has been moved to FTH do

QSettings winsettings( "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\FTH\\State", QSettings::NativeFormat);
QStringList fths = winsettings.childKeys();
foreach(const QString &fth, fths) {
       if(fth == qApp->applicationFilePath()) {
            /* do something*/
            break;
       }
}

Thanks again for your replies and help

-- Philippe

Le 07-09-2021 20:05, maitai a écrit :

OK, thanks. I will not attempt to modify the registry. I just want to know if that is the case and eventually display a warning.

The key for that is Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\State

Now I want to test my changes, I have already forced more than 100 crashes in the hope Windows will move me to FTH, no luck :)

--Philippe

Le 07-09-2021 17:17, Scott Bloom a écrit :

You shouldn't need it for a read of the registry, however it is possible that the IT dept of the user, or the user themselves has escalated the default privileges required to read from HKLM

You might want to code your check to allow for a security violation, so the is it enabled would be yes, no, or "I cant tell" response.

Scott

From: Interest <interest-boun...@qt-project.org> On Behalf Of maitai
Sent: Tuesday, September 7, 2021 7:36 AM
To: Interest@qt-project.org
Subject: Re: [Interest] qt and Windows tolerance heap

Thank you very much that is the way. Do you know if elevated privileges are needed to do that?

--Philippe

Le 07-09-2021 15:22, Jérôme Godbout a écrit :

You can put your aplicaiton into the exclude list, sorry though it was mentionned into the microowft page, but here is the registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\ExclusionList\myapp.exe

Change myapp.exe for your actual application.

From: Jérôme Godbout <jgodb...@dimonoff.com>
Date: Tuesday, September 7, 2021 at 9:07 AM
To: maitai <mai...@virtual-winds.org>, Interest@qt-project.org <Interest@qt-project.org>
Subject: Re: [Interest] qt and Windows tolerance heap

The tolerant heap only make workaround for actual bug. Disable the tolerant heap for your developers (this should be a system options when developer mode is enabled directly into Windows but sadly you have to do it manually). This will show where your bug is and will appear on dev workstation before they appear on the clients.

The "myth" of try to launch it again on windows is not really a myth, it come from this feature, the OS try to fix the heap allocation, but the application is still broken. You can also disable your application from using it during the installer.

To disable:

https://docs.microsoft.com/en-us/windows/win32/win7appqual/fault-tolerant-heap?redirectedfrom=MSDN

From: Interest <interest-boun...@qt-project.org> on behalf of maitai <mai...@virtual-winds.org>
Date: Tuesday, September 7, 2021 at 5:32 AM
To: Interest@qt-project.org <Interest@qt-project.org>
Subject: [Interest] qt and Windows tolerance heap

Hi,

I have some users (mainly beta testers) that are suffering from "Windows Tolerant Heap" (https://docs.microsoft.com/en-us/windows/win32/win7appqual/fault-tolerant-heap). The consequence of this being activated after some crashes is that the application becomes very slow, plus some mysterious crashes occur randomly deep inside qt event queue manager.

I know how to remove the app from Tolerant Heap with an elevated command prompt.

My question is: is there a way from inside the application to detect the app is running in this mode, so I can prompt the user to contact us for instance?

Thanks for any insight

Philippe Lelong

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

Reply via email to