Repository navigation
Fix UniversalBGTask crash and gracefully handle CoCreateInstance failures - #6507
Merged
Godly T.Alias (godlytalias) merged 1 commit intoJun 12, 2026
Merged
Conversation
Jon Wiswall (jonwis)
approved these changes
May 26, 2026
Contributor
Author
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Godly T.Alias (godlytalias)
enabled auto-merge (squash)
June 11, 2026 20:25
…ures UniversalBGTask::Task::Run could crash backgroundTaskHost.exe in two scenarios: 1. When LocalSettings has no entry for the task's TaskId, ApplicationDataContainerSettings::Lookup returns S_OK with a null IInspectable. The subsequent unbox_value<guid> then throws hresult_no_interface, and because the broker treats the failure as transient it re-fires the trigger forever. 2. When CoCreateInstance fails (e.g. the COM class isn't registered against the package), the wrapped THROW_IF_FAILED produced no diagnostic context. Fix: - If LocalSettings.Lookup returns null, log via wil and unregister the orphaned OS task so the broker stops re-firing it. - If CoCreateInstance fails, log the HR with the CLSID and TaskId and return cleanly. The registration is left in place so the broker can retry on the next trigger in case the failure is transient. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Godly T.Alias (godlytalias)
force-pushed
the
user/godlytalias/fix-universalbgtask-crash
branch
from
June 11, 2026 20:26
b0f3681 to
ca38516
Compare
Contributor
Author
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Godly T.Alias (godlytalias)
deleted the
user/godlytalias/fix-universalbgtask-crash
branch
June 12, 2026 03:51
Godly T.Alias (godlytalias)
added a commit
that referenced
this pull request
Jun 30, 2026
…ateInstance failures (#6568) * Fix UniversalBGTask crash and gracefully handle CoCreateInstance failures (#6507) UniversalBGTask::Task::Run could crash backgroundTaskHost.exe in two scenarios: 1. When LocalSettings has no entry for the task's TaskId, ApplicationDataContainerSettings::Lookup returns S_OK with a null IInspectable. The subsequent unbox_value<guid> then throws hresult_no_interface, and because the broker treats the failure as transient it re-fires the trigger forever. 2. When CoCreateInstance fails (e.g. the COM class isn't registered against the package), the wrapped THROW_IF_FAILED produced no diagnostic context. Fix: - If LocalSettings.Lookup returns null, log via wil and unregister the orphaned OS task so the broker stops re-firing it. - If CoCreateInstance fails, log the HR with the CLSID and TaskId and return cleanly. The registration is left in place so the broker can retry on the next trigger in case the failure is transient. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * [2.0 Servicing] Add containment for UniversalBGTask::Task::Run crash fix (bug 62755661) Wrap the crash-hardening behavior behind WINAPPSDK_CHANGEID_62755661 (WinAppSDK_2_2_2) and add the RuntimeCompatibilityChange.UniversalBGTask_RunCrash enum entry so apps can opt out via RuntimeCompatibilityOptions. * Update dev/WindowsAppRuntime_UniversalBGTaskDLL/Task.cpp Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> * [2.0 Servicing] Fix build break: import FrameworkUdk targets in UniversalBGTaskDLL Task.cpp now includes <FrameworkUdk/Containment.h> for the containment fix, but WindowsAppRuntime_UniversalBGTaskDLL.vcxproj did not import the Microsoft.FrameworkUdk targets, so the FrameworkUdk include directory was missing from the compiler command line, causing: Task.cpp(10,10): error C1083: Cannot open include file: 'FrameworkUdk/Containment.h': No such file or directory Import Microsoft.FrameworkUdk.targets (which adds the include path and the Microsoft.Internal.FrameworkUdk.lib link dependency) plus the matching package-restore Error check, mirroring the existing pattern used by Microsoft.Windows.ApplicationModel.Resources.vcxproj and other Containment consumers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com>
Kyaw Thant (kythant)
added a commit
that referenced
this pull request
Oct 2, 2026
….0-stable (#6830) * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260622.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1030.260622-0700.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.16-stable-Rolling.20260622.2 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260629.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1031.260629-0710.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.16-stable-Rolling.20260629.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260630.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1032.260629-2200.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.16-stable-Rolling.20260630.1 * [2.0 Servicing] Fix UniversalBGTask crash and gracefully handle CoCreateInstance failures (#6568) * Fix UniversalBGTask crash and gracefully handle CoCreateInstance failures (#6507) UniversalBGTask::Task::Run could crash backgroundTaskHost.exe in two scenarios: 1. When LocalSettings has no entry for the task's TaskId, ApplicationDataContainerSettings::Lookup returns S_OK with a null IInspectable. The subsequent unbox_value<guid> then throws hresult_no_interface, and because the broker treats the failure as transient it re-fires the trigger forever. 2. When CoCreateInstance fails (e.g. the COM class isn't registered against the package), the wrapped THROW_IF_FAILED produced no diagnostic context. Fix: - If LocalSettings.Lookup returns null, log via wil and unregister the orphaned OS task so the broker stops re-firing it. - If CoCreateInstance fails, log the HR with the CLSID and TaskId and return cleanly. The registration is left in place so the broker can retry on the next trigger in case the failure is transient. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * [2.0 Servicing] Add containment for UniversalBGTask::Task::Run crash fix (bug 62755661) Wrap the crash-hardening behavior behind WINAPPSDK_CHANGEID_62755661 (WinAppSDK_2_2_2) and add the RuntimeCompatibilityChange.UniversalBGTask_RunCrash enum entry so apps can opt out via RuntimeCompatibilityOptions. * Update dev/WindowsAppRuntime_UniversalBGTaskDLL/Task.cpp Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> * [2.0 Servicing] Fix build break: import FrameworkUdk targets in UniversalBGTaskDLL Task.cpp now includes <FrameworkUdk/Containment.h> for the containment fix, but WindowsAppRuntime_UniversalBGTaskDLL.vcxproj did not import the Microsoft.FrameworkUdk targets, so the FrameworkUdk include directory was missing from the compiler command line, causing: Task.cpp(10,10): error C1083: Cannot open include file: 'FrameworkUdk/Containment.h': No such file or directory Import Microsoft.FrameworkUdk.targets (which adds the include path and the Microsoft.Internal.FrameworkUdk.lib link dependency) plus the matching package-restore Error check, mirroring the existing pattern used by Microsoft.Windows.ApplicationModel.Resources.vcxproj and other Containment consumers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260701.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1033.260630-2330.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.16-stable-Rolling.20260701.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260701.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1033.260630-2330.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-stable-Rolling.20260617.1 -> To Version 2.0.17 * [release/2.0-stable] Revert DCPP dependency updates to restore Version.Details.xml to #6513 state (#6592) * Revert "Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260617.1" This reverts commit 78720cd. * Revert "Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260609.1" This reverts commit 7a2bed8. * Revert "Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260605.2" This reverts commit 85f0069. * Revert "Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260602.3" This reverts commit b9c6dc6. * Keep Microsoft.FrameworkUdk at post-bump 260616-0840.3 so 1-arg IsChangeEnabled callsites compile The revert to #6513 downgraded FrameworkUdk to the pre-bump build, whose IsChangeEnabled template lacks the defaulted patchVersion param, breaking the 1-arg callsites in Helper.cpp and Task.cpp (C2672). Keep FrameworkUdk post-bump while leaving InteractiveExperiences reverted to 2.0.15 to fix the NuGet restore failure. * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260705.3 On relative base path root Microsoft.FrameworkUdk From Version 2.0.0-stable-27200.1029.260616-0840.3 -> To Version 2.0.0-stable-27200.1034.260705-0915.2 Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1024.260527-1035.1 -> To Version 2.0.0-stable-27200.1034.260705-0915.2 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.15 -> To Version 2.0.17-stable-Rolling.20260705.3 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP (#6594) Microsoft.FrameworkUdk: 2.0.0-stable-27200.1029.260616-0840.3 -> 2.0.0-stable-27200.1033.260630-2330.1 Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage: 2.0.0-stable-27200.1024.260527-1035.1 -> 2.0.0-stable-27200.1033.260630-2330.1 Microsoft.WindowsAppSDK.InteractiveExperiences: 2.0.15 -> 2.0.17 * 230 enums * add CompositionEngine_API enum (62917618) * add 4 winui sweep enums * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260708.3 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1033.260630-2330.1 -> To Version 2.0.0-stable-27200.1036.260708-1000.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.17 -> To Version 2.0.17-stable-Rolling.20260708.3 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260708.4 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1033.260630-2330.1 -> To Version 2.0.0-stable-27200.1036.260708-1000.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.17 -> To Version 2.0.17-stable-Rolling.20260708.4 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260709.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-stable-27200.1033.260630-2330.1 -> To Version 2.1.0-stable-27200.1036.260708-1000.3 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.17 -> To Version 2.1.1 * Update dependencies from https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed build 2.0.0-stable.20260709.4 On relative base path root Microsoft.WindowsAppSDK.AppLicensingInternal.TransportPackage From Version 2.0.0-stable.20260423.1 -> To Version 2.0.0-stable.20260709.4 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260712.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1036.260708-1000.3 -> To Version 2.1.0-stable-27200.1037.260712-1330.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.1 -> To Version 2.1.1-stable-Rolling.20260712.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260715.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1036.260708-1000.3 -> To Version 2.1.0-stable-27200.1038.260715-1144.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.1 -> To Version 2.1.1-stable-Rolling.20260715.1 * Add WindowsServices_GetKeyboardModifiersStateRace enum (62927180) WinUI PR 16052384 (bug 62927180) merged the GetKeyboardModifiersState race fix into release/2.0-stable with containment gate WINAPPSDK_CHANGEID_62927180, but the corresponding RuntimeCompatibilityChange enum was missing from Foundation, leaving apps unable to opt out of the change. Add the enum in numeric order. * Add 62927180 to s_changes_2_3_0 catalog group Containment v2 (2.0 train) requires the catalog entry alongside the IDL enum. Fold WindowsServices_GetKeyboardModifiersStateRace (62927180) into s_changes_2_3_0[] in ascending order so RuntimeCompatibilityOptions::Apply's pre-prune walk covers it. * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260716.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1036.260708-1000.3 -> To Version 2.1.0-stable-27200.1038.260715-1144.2 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.1 -> To Version 2.1.3 * [2.0-stable] Gated cherry-pick: MrmGetFilePathFromName S_OK fallback (#6603) (#6612) * Cherry-pick MrmGetFilePathFromName S_OK fallback (gated) into release/2.0-stable Cherry-picks PR #6603 into release/2.0-stable, but gates the behavior change behind a RuntimeCompatibilityOptions containment check so apps can disable it. MrmGetFilePathFromName is documented to always succeed and return a best-effort path even when no PRI file exists. On 2.0-stable it fails with ERROR_FILE_NOT_FOUND, which makes `new ResourceManager()` throw when there is no resources.pri (the XAML-island / no-PRI scenario). Because this changes an HRESULT from a failure to S_OK, the change is contained under WINAPPSDK_CHANGEID_63048673: - Enabled (default): MrmGetFilePathFromName returns S_OK with a non-null best-effort path (the provided filename, else resources.pri) under the base directory (if set) otherwise the module directory. - Disabled (via RuntimeCompatibilityOptions): behavior reverts byte-for-byte to the current 2.0-stable behavior (ERROR_FILE_NOT_FOUND). Both terminal search passes jump to Final, skipping the DefaultFallback pass. Changes: - MRM.cpp: gate the reachable DefaultFallback pass + S_OK return on IsChangeEnabled<WINAPPSDK_CHANGEID_63048673>(). Add #include <FrameworkUdk/Containment.h> and an inline #define for the change ID, following the existing 62382643 precedent in Helper.cpp. Preserve the module directory since the parent-folder search mutates exeDir in place. - MRM.vcxproj: link the FrameworkUdk Containment worker (targets import + EnsureNuGetPackageBuildImports). - MrmUnitTest.vcxproj: deploy Microsoft.Internal.FrameworkUdk.dll next to the test host (mrm.dll now imports it). - Helper.cpp (GetDefaultPriFile): inside the existing 62382643 block, gate the sparse-packaged [modulename].pri fallback on actual file existence (CheckFile) so it still fires once MrmGetFilePathFromName returns S_OK. Correct whether 63048673 is enabled or disabled; preserves 62382643 behavior. - MrmTests.cpp: strengthen GetFilePath to assert the fallback path is under the module directory. - BypassTests.json: remove the now-passing UnitTest::BasicTest::GetFilePath and MrtCoreUnpackagedTests.TestClass.DefaultResourceManager entries so they gate. Note for release engineering: per the ContainmentV2 model this PR only defines and gates the change ID; associating 63048673 to a release group in RuntimeCompatibilityOptions.cpp's s_catalogGroupsProd[] is the separate branch-cut step. Verified locally (x64 Debug): MrmUnitTest 21/21 (change enabled by default). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add unit test confirming pre-fix behavior when fallback change is disabled Adds ContainmentDisabledTest::GetFilePathFallbackDisabled to MrmUnitTest. It disables WINAPPSDK_CHANGEID_63048673 via the FrameworkUdk containment worker (WinAppSdk::Containment::SetConfiguration) and verifies MrmGetFilePathFromName reverts to the previous behavior: ERROR_FILE_NOT_FOUND (null path) for a non-existent PRI file, instead of S_OK with a best-effort path. The class uses IsolationLevel=Method so it runs in its own process. This is required because IsChangeEnabled<>() caches its result in a process-lifetime function-local static, so the disabled-state test must not share a process with BasicTest::GetFilePath (which exercises the enabled default state). MrmUnitTest.vcxproj: import the FrameworkUdk targets so the test can call the Containment worker (mrm.dll already imports Microsoft.Internal.FrameworkUdk.dll, deployed next to the test host). Verified locally (x64 Debug): MrmUnitTest 22/22, including both the enabled (GetFilePath) and disabled (GetFilePathFallbackDisabled) cases. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * [CP to 2.x] Fix focus not restored after Storage Pickers dialog closes (#6602) This is a cherry-pick of #6544 **Summary:** Issue reported in #6505. Storage Pickers leave the WinUI window without keyboard focus after their dialog closes, so the keyboard stops working until the user clicks the window again. **Repro:** 1. in code map a button's Click handler with a picker behavior. 2. Click the button (dialog opens), pick a file and confirm (dialog closes), 3. then press Enter. 4. Before the fix Enter does nothing; After the fix Enter re-invokes the button and the dialog reopens. **Fix:** An RAII helper `DialogFocusRestorer` captures the focused window before the dialog opens and restores focus to it once the dialog closes. Applied to all five pick methods. * [2.0-stable] Gated port: MICROSOFT_WINDOWSAPPRUNTIME_BASE_DIRECTORY child-process isolation (#5987) (#6632) * [2.0-stable] Gated port: MICROSOFT_WINDOWSAPPRUNTIME_BASE_DIRECTORY child-process isolation (#5987) Ports the base-directory PID-guard fix (main #6619) into release/2.0-stable, gated behind a runtime-compatibility containment change (WINAPPSDK_CHANGEID_63098302) so apps can revert. MICROSOFT_WINDOWSAPPRUNTIME_BASE_DIRECTORY is set by the Windows App SDK auto-initializer (a requirement for PublishSingleFile SxS manifest redirection). Because it is a process environment variable it is inherited by child processes spawned via CreateProcess, so a child's MRTCore resolved the parent's resources.pri and reg-free WinRT redirection could be steered by a parent-controlled directory. The setter now also stamps MICROSOFT_WINDOWSAPPRUNTIME_BASE_DIRECTORY_PID with the owning process id. Gated behind WINAPPSDK_CHANGEID_63098302 (ContainmentV2 form): - Enabled (default): MRM.cpp and catalog.cpp honor the base directory only when the stamp matches the current process; inherited (foreign) values fall back to the module directory. - Disabled (via RuntimeCompatibilityOptions): the base directory is honored regardless of the stamp (byte-for-byte prior behavior). Changes: - UndockedRegFreeWinRT-AutoInitializer.cs: stamp the owning process id (ungated; consumers ignore it when the change is disabled). - MRM.cpp: add WINAPPSDK_CHANGEID_63098302 and gate the base-directory PID guard. - catalog.cpp: gate the %MICROSOFT_WINDOWSAPPRUNTIME_BASE_DIRECTORY% strip on the change (WindowsAppRuntime_DLL already links the FrameworkUdk containment worker). - MrmTests.cpp: EnvironmentVariableIsolationTests (enabled: in-process guard + real cross-process insulation) and BaseDirectoryContainmentDisabledTest (IsolationLevel=Method; disables 63098302 and verifies the inherited base directory is honored). Verified locally (x64 Debug): MrmUnitTest 25/26 (1 skipped child-only worker), both enabled and disabled cases. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: dac4165f-ec13-4406-9206-60cd55b24c2b * catalog.cpp: only consult containment when the base-dir token is present (#5987) RCA of a PR-validation regression in CompatibilityTests (CanSetRuntimeCompatibilityOptions and VerifyDisabledChanges failing intermittently with E_ILLEGAL_STATE_CHANGE, "Configuration already set or locked"): WinAppSdk::Containment::IsChangeEnabled<>() locks the process's runtime-compatibility configuration on first call. catalog.cpp's WinRTLoadComponentFromString runs during reg-free WinRT activation - before an app (or test) can call RuntimeCompatibilityOptions.Apply(). Calling IsChangeEnabled unconditionally there locked the configuration early, so a subsequent Apply() failed. The manifest only references %MICROSOFT_WINDOWSAPPRUNTIME_BASE_DIRECTORY% for PublishSingleFile apps, so only consult the containment change when that token is actually present. Non-single-file activation (the common case, including CompatibilityTests) no longer calls IsChangeEnabled and no longer locks the configuration. MRTCore MrmUnitTest is unaffected (catalog.cpp is not in that binary). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: dac4165f-ec13-4406-9206-60cd55b24c2b --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260720.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1036.260708-1000.3 -> To Version 2.1.0-stable-27200.1040.260719-1733.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.1 -> To Version 2.1.3-stable-Rolling.20260720.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260723.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1036.260708-1000.3 -> To Version 2.1.0-stable-27200.1041.260723-1213.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.1 -> To Version 2.1.4-stable-Rolling.20260723.2 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260727.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1036.260708-1000.3 -> To Version 2.1.0-stable-27200.1042.260726-2015.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.1 -> To Version 2.1.4-stable-Rolling.20260727.1 * 233 enums * Rename LanguageModel_LanguageDetectionStatus enum for naming consistency * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260730.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1036.260708-1000.3 -> To Version 2.1.0-stable-27200.1043.260729-1713.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.1 -> To Version 2.1.4-stable-Rolling.20260730.1 * reverting to stable * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260802.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1038.260715-1144.2 -> To Version 2.1.0-stable-27200.1046.260802-1132.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.3 -> To Version 2.1.5 * Fix CS0234 in UndockedRegFreeWinRT auto-initializer: qualify System.Globalization with global:: The auto-initializer ships inside the Microsoft.WindowsAppSDK.Foundation nuget and is compiled into consumer app projects under namespace Microsoft.Windows.Foundation.UndockedRegFreeWinRTCS. When the app also references the Microsoft.Windows.System namespace (e.g. EnvironmentManager or PowerManager), the unqualified leading 'System' in 'System.Globalization.CultureInfo' binds to Microsoft.Windows.System instead of the BCL System, producing: error CS0234: The type or namespace name 'Globalization' does not exist in the namespace 'Microsoft.Windows.System' This broke every C# sample in the Foundation official build. Prefix the reference with global:: so it always resolves to the BCL System namespace. This is the servicing equivalent of the main-branch fix #6633 (commit 37de565), which resolved the identical CS0234 after the base-directory child-process isolation change (#5987). The servicing port inlined the base-directory stamping into this file and did not carry the #6633 follow-up. * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260804.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1038.260715-1144.2 -> To Version 2.1.0-stable-27200.1047.260804-0941.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.3 -> To Version 2.1.5-stable-Rolling.20260804.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260806.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1038.260715-1144.2 -> To Version 2.1.0-stable-27200.1048.260805-2252.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.3 -> To Version 2.1.5-stable-Rolling.20260806.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260806.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1038.260715-1144.2 -> To Version 2.1.0-stable-27200.1048.260805-2252.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.3 -> To Version 2.1.6 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260813.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1038.260715-1144.2 -> To Version 2.1.0-stable-27200.1049.260812-1950.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.3 -> To Version 2.1.6-stable-Rolling.20260813.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260824.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1038.260715-1144.2 -> To Version 2.1.0-stable-27200.1050.260824-0845.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.3 -> To Version 2.1.7-stable-Rolling.20260824.1 * 242 enums * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260826.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1038.260715-1144.2 -> To Version 2.1.0-stable-27200.1051.260826-1517.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.3 -> To Version 2.1.7-stable-Rolling.20260826.2 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260827.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.1.0-stable-27200.1038.260715-1144.2 -> To Version 2.1.0-stable-27200.1051.260826-1517.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.1.3 -> To Version 2.1.8 * 250 enums * Update dependencies from https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed build 2.0.0-stable.20260827.0 On relative base path root Microsoft.WindowsAppSDK.AppLicensingInternal.TransportPackage From Version 2.0.0-stable.20260709.4 -> To Version 2.0.0-stable.20260827.0 * [2.0-stable] Cherry-pick: Fix AppInstance process handle validation (#6733) (#6735) * Fix AppInstance process handle validation Open non-current processes with SYNCHRONIZE once and transfer the validated handle into AppInstance before registering the termination wait. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Normalize AppInstance line endings Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: adb671f1-8cb1-4291-b25e-983d17a5bb1a * Contain GetInstances process handle fix * Keep GetInstances containment local * Fix AppInstance access mask narrowing conversion Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c48ac29e-f034-4b5f-8ab5-dcd8da490048 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Copilot-Session: adb671f1-8cb1-4291-b25e-983d17a5bb1a Copilot-Session: c48ac29e-f034-4b5f-8ab5-dcd8da490048 * [2.x Servicing] Add new 'GetPackage[Graph]File` APIs (#6575) * MSIX FindPackageFile*() API (#6200) Implementation of MSIX FindPackageFile*() API Spec#5885 https://task.ms/59424502 NOTE: SearchStatic/DynamicDependencies options are dropped from spec because Windows doesn't expose this information. Get[Current]PackageInfo*() accepts an input to optionally filter package graph entries but output doesn't indicate if a package was statically or dynamically added to the package graph. * GetPackageFile() * Added Package activatable class to manifests * More tests. Added dev\common to various test projects' Include path to fix compile error. Cleaned up (optimized) several test projects. * Fixed missing build dependencies * Added TAEF VERIFY_* support for std::filesystem::path. More fixes and test updates * Fixed warnings * Fix to dynamically use GetPackagePathByFullName2 if available * Can't use RuntimeBehavior/TrustLevel on old pre-20H1 systems. Switched to classic EntryPoint=windows.fullTrustApplication via UUAP:AppXManifest=PackagedCwaFullTrust * Fixed Decimal and decimal test * Fixed GetPackagePathByFullName2IfSupported to work on RS5 * Incorporated feedback. Fixed telemetry * Fixed doc-comment typos --------- Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> * [2.x Servicing][WASDK] Add new 'GetPackage[Graph]File` APIs * Fixed containment references * Fix IsPackageFeatureSupported and update RuntimeCompatibilityOptions for vNext servicing update * Gotta copy FrameworkUdk.dll to $(OutDir) to satisfy tests running on RS5 w/Containment --------- Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> * [2.0-stable] Cherry-pick: AppNotificationManager::Show and AppInstanc… (#6773) * [2.0-stable] Cherry-pick: AppNotificationManager::Show and AppInstance::GetInstances noexcept workers (#6714) Cherry-pick of #6714 (Bug 61688595) onto release/2.0-stable, gated behind contained change 61688595 so the pre-change behavior is preserved when an app disables it via RuntimeCompatibilityOptions.DisabledChanges. AppNotificationManager::Show: the throwing body moves to ShowLegacy and is mirrored by a noexcept HRESULT worker (ShowImpl) that uses RETURN_HR_IF / RETURN_IF_FAILED / CATCH_RETURN. The public Show keeps the IsSupported() early-return, then either calls ShowLegacy (change disabled) or rethrows the worker's failure HRESULT via THROW_IF_FAILED(ShowImpl(...)) (change enabled). AppLifecycle::AppInstance::GetInstances: the body moves to GetInstancesWorker, wrapped by GetInstancesImpl(IVector<AppInstance>&) noexcept. The public GetInstances() calls the worker directly when the change is disabled, and THROW_IF_FAILED(GetInstancesImpl(...)) when it is enabled. The existing 63876312 process-handle containment inside the worker is unchanged. This keeps a failed HRESULT off the deep C++/WinRT projection rethrow path that exhausted the stack via WIL's FormatMessage-based exception logging chain. Tests: - CompatibilityTests: VerifyNoexceptHotPathsChangeEnabledByDefault and VerifyNoexceptHotPathsChangeCanBeDisabled cover the gate plumbing. - AppLifecycle FunctionalTests: GetInstancesIncludesCurrentInstance covers the refactored GetInstances boundary. - AppNotificationTests: VerifyShowToastTwiceFailsWithNotificationPosted covers Show still surfacing WPN_E_NOTIFICATION_POSTED. AB#61688595 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix AppLifecycle test crash on RS5/Server 2019: colocate FrameworkUdk GetInstancesIncludesCurrentInstance crashed the TAEF test host with 0xC06D007E (delay-load module not found) on x86 Server2019 and amd64 RS5. It is the first in-process AppLifecycle test to reach a WinAppSdk::Containment::IsChangeEnabled callsite, which delay-loads Microsoft.Internal.FrameworkUdk.dll. The delay-load resolver searches the app directory (TE.ProcessHost.exe's directory == the test output folder), and AppLifecycle.vcxproj was not copying that DLL there. On newer Windows the framework package graph resolved it anyway, which is why the failure only reproduced on the 1809-based legs. Copy Microsoft.Internal.FrameworkUdk.dll next to the test binary, matching the existing pattern in AppNotificationTests, LRPTests, EnvironmentManagerTests, CompatibilityTests and others. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 57737c8b-378d-4305-9111-cdf63ec2502f --------- Co-authored-by: Chris Wall (WIN SDE) <chriwall@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 57737c8b-378d-4305-9111-cdf63ec2502f * [2.0-stable] Cherry-pick: Fix errors from missing resource dll with version info (#6725) (#6776) * Fix errors from missing resource dll with version info (#6725) * Add containment for missing VersionInfo resource DLL Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b827f915-8160-4a92-84cc-c42ce5d787a8 * Deploy FrameworkUdk for VersionInfo tests on RS5 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b827f915-8160-4a92-84cc-c42ce5d787a8 --------- Copilot-Session: b827f915-8160-4a92-84cc-c42ce5d787a8 * [57514396] Use central TSA config for Foundation source analysis (#6762) --------- Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: Godly T.Alias <godlytalias@yahoo.co.in> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> Co-authored-by: agniuks <agnel@microsoft.com> Co-authored-by: Scott Jones <sjones@microsoft.com> Co-authored-by: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Howard Kapustein <howardk@microsoft.com> Co-authored-by: Dreynor87 <wall_c.s@outlook.com> Co-authored-by: Chris Wall (WIN SDE) <chriwall@microsoft.com> Co-authored-by: Manodasan Wignarajah <mawign@microsoft.com> Co-authored-by: v-goradojcic <v-goradojcic@microsoft.com> Copilot-Session: adb671f1-8cb1-4291-b25e-983d17a5bb1a Copilot-Session: c48ac29e-f034-4b5f-8ab5-dcd8da490048 Copilot-Session: 57737c8b-378d-4305-9111-cdf63ec2502f Copilot-Session: b827f915-8160-4a92-84cc-c42ce5d787a8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue
UniversalBGTask::Task::Runcould crashbackgroundTaskHost.exein two scenarios:LocalSettingshas no entry for the task'sTaskId,ApplicationDataContainerSettings::LookupreturnsS_OKwith a nullIInspectable. The subsequentunbox_value<winrt::guid>then throwshresult_no_interface, and because the broker treats the failure as transient it re-fires the trigger forever.CoCreateInstancefails (e.g. the COM class isn't registered against the package), the existingTHROW_IF_FAILEDprovided no diagnostic context.Fix
LocalSettings.Lookupreturns null, log viawilandUnregisterthe orphaned OS task so the broker stops re-firing it.CoCreateInstancefails, log the HR with the CLSID and TaskId and return cleanly. The registration is left in place so the broker can retry on the next trigger in case the failure is transient.PR Checklist