boinc icon indicating copy to clipboard operation
boinc copied to clipboard

Protected application execution no longer used in favor of Service Install

Open Ageless93 opened this issue 8 years ago • 11 comments

Going through the source code, I find:. In https://github.com/BOINC/boinc/blob/f83c2527db0be7c111ccdb042e0ba512648ecb0d/sched/handle_request.cpp#L1149 it says "Unable to send work to Vista with BOINC installed in protected mode. Please reinstall BOINC and uncheck 'Protected application execution'"

The 'Protected application execution' part has been 'Service Install' for all of BOINC 7. As an aside, the check only happens for Windows Vista? Not 7, 8, 8.1, or 10?

Ageless93 avatar Aug 24 '17 09:08 Ageless93

I can fix the message to save Service Install, but it . Looking through the code I see that the bool is defined in sched_config.h, but it is not initialized anywhere, nor is it modified anywhere. Besides wondering if this is needed for other versions of Windows, I don't see how this message would ever be generated.

@davidpanderson , would you happen to know what may be missing?

Vulpine05 avatar Jul 03 '22 22:07 Vulpine05

@Vulpine05, this option can come from the cc_config.xml as far as I see, that's why you don't see it's ever set in the code (expect initialized to the default value).

AenBleidd avatar Jul 03 '22 22:07 AenBleidd

Because of alt_platform? Even if it comes from cc_config, shouldn't it tell the code to do something with it?

I was looking to just work on a simple fix (i.e., changing the message). As much as I'm curious how this works, I don't want to use up your time explaining server code that I am by no means familiar with. It does seem odd that this error message is only for Vista. If it should apply to other OSes, then perhaps a new issue should be opened to scale up the code?

Vulpine05 avatar Jul 03 '22 23:07 Vulpine05

From the changelog:

David  1 Oct 2008
    - scheduler: add <no_vista_sandbox> option.
        If set, don't send work to sandboxed Vista clients
        (e.g., because of CUDA issue)

Assuming that we don't support Vista anymore, I doubt we should keep this code, and it might be better to remove it entirely. Also, IIRC, when BOINC installed as a service on Windows, it has no access to any GPU, so mentioned issues with CUDA can't happen by design (no GPU tasks - no issues).

AenBleidd avatar Jul 03 '22 23:07 AenBleidd

Ah, I didn't check the changelong. I just searched for all references.

I see your point about CUDA, and that makes sense. Vista is available as both 32 and 64 bit. I would assume the 64 bit version would still be supported? I haven't been paying close attention to Vista if it had been mentioned before. Regardless, I'll leave this alone for now.

Vulpine05 avatar Jul 04 '22 00:07 Vulpine05

I would assume the 64 bit version would still be supported?

Technically, BOINC can be installed on WIndows Vista. Not sure anybody still uses it to run BOINC. According to this statistics, number of Windows VIsta users is less than 0.25%: https://gs.statcounter.com/windows-version-market-share/desktop/worldwide/#monthly-202106-202206-bar

AenBleidd avatar Jul 04 '22 01:07 AenBleidd

This issue arose because of changes made with the introduction of the WDDM with Windows Vista - specifically, the move of large parts of the WDDM architecture from kernel mode to user mode.

As such, it's a generic change and a permanent change (as much as anything is permanent in software development): it shouldn't be associated with any single Windows version, any single hardware manufacturer, or any single programming environment. It applies just as much to OpenCL software running on AMD or iGPU hardware under Windows 11 as it ever did to CUDA on NVidia under Vista.

BOINC's programming approach and documentation (including code comments and user messages) should reflect that.

RichardHaselgrove avatar Jul 04 '22 08:07 RichardHaselgrove

@RichardHaselgrove, are you sure this is still true? IIRC, if you install BOINC client as a service on Windows, it doesn't recognize any GPU, so it won't request any tasks for GPU.

AenBleidd avatar Jul 04 '22 08:07 AenBleidd

You can use GPUs in service mode in Windows XP and Windows 2000, but nothing later.

RichardHaselgrove avatar Jul 04 '22 08:07 RichardHaselgrove

So this is exactly what I'm talking about: we do not support Windows XP and Windows 2000 anymore, so from my POV this is smth that is not used anymore and could be safely removed. Of course, we can monitor OS usage and keep this check until the last client with Windows XP/2000.

AenBleidd avatar Jul 04 '22 08:07 AenBleidd

This function is only called once, at https://github.com/BOINC/boinc/blob/master/sched/handle_request.cpp#L1371, in the context of resending lost work.

I haven't followed the spaghetti all the way back, but it should only have been invoked if the work in question had been destined to be run on a GPU: work for CPUs runs fine in service mode on all versions of Windows.

The test should have been invoked when the work in question was first allocated (maybe it is, but with different wording). As it is, I imagine it only gets called if the machine owner has re-installed BOINC, changing from user to service mode, without flushing work in progress correctly, or has upgraded their OS from pre-Vista to - specifically and precisely - Vista. That's a pretty niche use case.

RichardHaselgrove avatar Jul 04 '22 08:07 RichardHaselgrove