Pin WinDbg/TTD version instead of always downloading latest (Fix #1130) - #1140
Open
xusheng6 wants to merge 3 commits into
Open
Pin WinDbg/TTD version instead of always downloading latest (Fix #1130)#1140xusheng6 wants to merge 3 commits into
xusheng6 wants to merge 3 commits into
Conversation
…latest (Fix #1130) The latest WinDbg release (1.2606.22001.0) crashes the DbgEng TTD adapter on stop (#1129). The installer now downloads a pinned version (1.2603.20001.0) directly by URL, and falls back to the latest version via the appinstaller manifest if the pinned download fails. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Since we install a pinned WinDbg version rather than the latest release, there is nothing to check online. The latest-version query was reduced to returning a compile-time constant, but it still went through a background thread, an FFI call and a subprocess that spawned the installer CLI to parse its JSON output. Worse, the check itself became wrong: IsVersionUpToDate() compared with >=, so a user who already had the broken 1.2606.22001.0 installed - exactly the population hit by #1129/#1130 - was told they were up to date and never offered the fix. Remove GetLatestVersion(), IsVersionUpToDate() and CompareVersions() from the installer library, the check-update CLI command and its exit code 2, the core/FFI/API GetLatestVersion() plumbing along with the now-unused subprocess and JSON helpers, and the dialog's async version fetch. The pinned version moves to windbg_version.h so the UI can display it directly. The dialog now compares the installed version against that constant and offers Reinstall when they match and Install when they do not - not Update, since replacing a newer WinDbg with the validated one is a downgrade. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Tested on Windows with both Binary Ninja Commercial and Ultimate (binaryninja_win64_5.4.10384-test_*). Verified that the installer downloads the pinned WinDbg version (1.2603.20001.0) and falls back to the latest available version when the pinned version is unavailable. |
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.
The latest WinDbg release (
1.2606.22001.0) crashes the DbgEng TTD adapter on stop (#1129). Rather than always pulling the newest build, the installer now pins a known-good version.Changes
1.2603.20001.0(second-latest, verified working) and download its MSIX bundle directly by URL, skipping the appinstaller manifest.To adopt a newer WinDbg once validated, bump the single
kPinnedVersionconstant.The change might look large than expected because it removes the functionality to update the WinDbg to the latest version, but refactors to keep the way to fallback to install the latest if the pinned version does not work (e.g., then MS changes the URL and we are unaware of it)
TODO: we might with to expose the version of windbg to download as a configurable setting that defaults to
1.2603.20001.0and the user can override it if they know what they are doing