Devolutions / Devolutions/UniGetUI

[BUG] vcpkg packages shouldn't be updated in parallel

Open
#4,141 0 comments 0 reactions 1 assignee Claimed by @marticliment View on GitHub
bug ready-to-go vcpkg
Dominant language
C#
Stars
26.1k
Forks
924
Avg merge
15h 52m
Merged PRs (30d)
52

Description

### Please confirm these before moving forward

- [x] I have searched for my issue and have not found a work-in-progress/duplicate/resolved issue.
- [x] I have tested that this issue has not been fixed in the latest [(beta or stable) release](https://github.com/marticliment/WingetUI/releases/).
- [x] I have checked the [FAQ](https://github.com/marticliment/WingetUI#frequently-asked-questions) section for solutions.
- [x] This issue is about a bug (if it is not, please use the [correct template](https://github.com/marticliment/WingetUI/issues/new/choose)).

### UniGetUI Version

3.3.5

### Windows version, edition, and architecture

Windows 11 Pro

### Describe your issue

If I enable parallel updating of packages, `UniGetUI` will try to update multiple `vcpkg` packages at once which isn't supported.

From ChatGPT:
```
How vcpkg handles updates

vcpkg builds and installs packages into a central installed/ tree (unless you use manifest mode with an isolated build).

The build process for a single package is not parallelizable across multiple invocations of vcpkg. If you try to run vcpkg install or vcpkg upgrade in parallel processes against the same vcpkg instance, you risk:

File corruption in the buildtrees/, packages/, or installed/ directories.

Lock contention — recent vcpkg versions use a filesystem-based lock (.vcpkg-root/vcpkg.lock) to prevent simultaneous modifications. One process will wait, or fail, if another is already modifying the state.
```
Installing packages one by one is working fine but parallel processing yields errors (or potentially `vcpkg` corruptions).

### Steps to reproduce the issue

1. Have at least 2 `vcpkg` packages installed that aren't updated
2. Configure `UniGetUI` to use at least 2 operation in parallel under "Package operation preferences" -> "Choose how many operations should be performed in parallel"
3. Start all `vcpkg` updates at once in the UI
4. Observe how `UniGetUI` starts both or multiple vcpkg installs at once when it shouldn't do that (only 1 vcpkg update at the same time)

### UniGetUI Log

```text
Not necessary
```

### Package Managers Logs

```text
Package update operation for Package=abseil:x64-windows with Manager=vcpkg
Installation options:
Overriden options:
Version: 20250127.1#4 -> 20250512.1
Starting operation...
Executing process with StartInfo:
- FileName: "C:\vcpkg\vcpkg.exe"
- Arguments: "upgrade abseil:x64-windows --no-dry-run"
Start Time: "23/09/2025 19:07:25"
The following packages will be rebuilt:
* abseil:x64-windows@20250512.1
* opencv4[calib3d,core,directml,dnn,dshow,fs,gapi,highgui,intrinsics,jpeg,msmf,png,quirc,thread,tiff,webp,win32ui]:x64-windows@4.11.0#4
* opencv4[calib3d,core,directml,dnn,dshow,fs,gapi,highgui,intrinsics,jpeg,msmf,png,quirc,thread,tiff,webp,win32ui]:x64-windows-static@4.11.0#4
* protobuf:x64-windows@5.29.5#2
* protobuf:x64-windows-static@5.29.5#2
* re2:x64-windows@2025-08-12
* utf8-range:x64-windows@5.29.5
Additional packages (*) will be modified to complete this operation.
Detecting compiler hash for triplet x64-windows...
open_for_write("C:\vcpkg\buildtrees\detect_compiler\stdout-x64-windows.log"): permission denied
End Time: "23/09/2025 19:07:28"
Process return value: "1" (0x1)
Abseil could not be updated
```

### Relevant information

_No response_

### Screenshots and videos

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.