- Case-independent handling of binary names
- Do not stop BugId if page heap is not enabled.
- Allow creation of mini dumps through
-d
or--dump
command line argument and full dumps through--full-dump
. - Handle keyboard interrupt gracefully.
- The way the startup script detects where Python is installed has been improved.
- Improve the licensing information shown to users when a modules does not require a license.
- Improve the way application debug output is shown on the console.
- Show better error messages when an invalid UWP application package name or application id is provided by the user.
- Update dependencies.
- Improve the way UWP applications are handled.
- UWP application ids are optional for packages that have only a single application id; the default is to use that id.
These notes include changes made to two previous releases where I forgot to update this file.
- The license check engine has been update to simplify license checks and provide a better user experience whenver a license update is required as well as fix bugs.
- Fix bug in reloading symbol files.
- Simplified and updated ntdll.dll heap bug translations.
- Tested with latest Python (2.7.16).
- Update code to handle products that require no license.
- Added missing submodules to git.
- Added missing dependencies to dxProductDetails.json.
This update introduces new modules; you will need to download a new license file to use it.
- Older version may fail to check for updates because a new version of
mProductDetails
requires changes todxProductsDetails.json
structure. - New
cBugId
module improves handling of UWP Application to prevent errors for certain UWP applications. cBugId.sDumpPath
config setting has been renamedcBugId.sDumpFilePath
.- Corrected the check for the installed version of Windows.
- Fixed output text of version information.
- Switched from mFileSystem to mFileSystem2
- Dependencies have been fixed.
- Bug ids for Access Violation exceptions have been standardized to the
following format:
<bug type id>:<memory details>[<size>][<offset>]
. This includes bug ids for guard page access exceptions, asSTATUS_GUARD_PAGE_VIOLATION
exceptions are just a sub-type ofSTATUS_ACCESS_VIOLATION
. bug type idsW2RO
andDEP
have been changed back toAVW
andAVE
to simplify things. - Text descriptions for Access Violation exceptions should now all follow the same format.
- Determining if an Access Violations happened near the stack is now more precise.
- The integrity level of a process is no longer shown in the report.
- dxConfig names to represent time have always been in seconds. The names of
such settings have been updated to reflect this. This was previously done
for
cBugId
already butBugId
itself was not updated to use the new names. This cause a bug when runningmsie
. Also,BugId
itself has such setings. These have now also been renamed.nExcessiveCPUUsageCheckInitialTimeout
->nExcessiveCPUUsageCheckInitialTimeoutInSeconds
nApplicationMaxRunTime
->nApplicationMaxRunTimeInSeconds
cBugId.nExcessiveCPUUsageCheckInterval
->cBugId.nExcessiveCPUUsageCheckIntervalInSeconds
cBugId.nExcessiveCPUUsageWormRunTime
->cBugId.nExcessiveCPUUsageWormRunTimeInSeconds
cBugId.nTimeoutGranularity
->cBugId.nTimeoutGranularityInSeconds
cBugId.nUWPApplicationAttachTimeout
->cBugId.nUWPApplicationAttachTimeoutInSeconds
I have forgotten to update this file through a number of releases. Change logs on GitHub will have to suffice as I unfortunately do not have the time to retroactively describe all changes here.
mMultiThreading
andmDebugOutput
modules have been added to dependencies as they are now used by thecBugId
module. This required a chance to the license for BugId to cover these modules too. You will need to download a new copy of your license file to make sure BugId is using the updated license.- All timeouts are now named
TimeoutInSeconds
to clarify the unit used. This includes those indxConfig.py
.
BugId
itself and the modulesmWindowsAPI
andcBugId
have received quite a few changes to improve function and variable naming standardization.- Timeout and application interruption implementation has been improved to make them more reliable and the simplify the code.
- Error messages have been clarified.
- Python 2.7.15 is now supported, warn when using supported but outdated Python.
- Warning when using the wrong cdb.exe ISA.
- BugId will no longer run in Windows older than Windows 10. An error message will be shown instead. This is due to a bug in cdb.exe that prevents cBugId from functioning properly. There is no work-around, so I will have to stop using cdb.exe as the debugging engine to fix this. That is my plan, but it will require a lot of work, so it may take quite some time to get there.
- Bug fixes and updated README.md.
- The
--repeat
argument now takes a number that allows you to specify how many times you want BugId to run the application. - The cBugId engine has had various improvements; most importantly bug fixes and changes to the way register values and disassembly are gathered and stored in the report.
- BugId now checks to make sure you are running the latest version of Python as some older versions do not implement certain features required for BugId to function.
BugId and all its modules require a license to use. There is a 30 day trial period during which you can test BugId without a license. After the trial period you will need to get a license to continue to use it.
Licenses for non-commercial use are available for free, while licenses for commercial use can be purchased from the author. For more details, and to acquire a license, please visit https://bugid.skylined.nl.
- New cBugId version changes many bug ids and has many improvements. See
separate
RELEASE NOTES.md
in that project for full details. - I have added the "--symbols=path/to/symbols" option, which will use the provided local symbol path in additional to whatever you have defined in dxConfig.
- New cBugId version changes many bug ids and has many improvements. See
separate
RELEASE NOTES.md
in that project for full details. - Google Chrome ASan builds should now be supported again. The old code no longer worked with recent builds and had been disabled for a while. The new code improves on the old code in various ways, even if ASan has removed some useful info from its output.
- Mozilla Firefox's new sandbox is disabled when using the
firefox
keyword, as the application would not function correctly otherwise (similar to Google Chrome). - The maximum amount of memory an application is allowed to allocate is no longer limited by default.
- Relative application binary paths are now made absolute using the current working directory as the base.
- Module importing has been improved to prevent leaking internal modules to the global namespace.
- The way
dxConfig
settings fromcBugId
are imported has been improved. fSetup
andfCleanup
replacefCheckApplication
andfCleanup
for keyword application.- Google Chrome logging is done through stdout instead of stderr.
- More Google Chrome executables have been allowed to run without page heap.
- Google Chrome environment variable needed to enable page heap is now set
when using the
chrome
keyword in case the user forgets to do so. - All first-chance access violations are now ignored in Java, not just NULL pointers. This is done to prevent having to special case NULL pointers and reuse the same code that Google Chrome ASan builds need (which cause various access violations, apparently also by design).
- When checking for updates, failures to connect are now handled correctly.
cBugId.bIgnoreFirstChanceNULLPointerAccessViolations
indxConfig.py
allows you to ignore all first-chance NULL pointer access violations. This is useful when you are debugging an application that triggers NULL pointers on purpose, but handles them correctly. For instance, Java does this and without this setting, you will get a report for the same NULL pointer every time. Now you can run Java in BugId successfully with--cBugId.bIgnoreFirstChanceNULLPointerAccessViolations=true
.- The application keyword
java
has been added for Oracle Java. I've only tested this with version 9.0.1. If you have other versions, please let me know their installation path and whether you can run them successfully in BugId, so I can support them. - PageHeap.cmd now has another known application called "java" which can be used to enable/disable page heap for Oracle Java.
- All application keyword settings have been cleaned up and moved to the
ddxApplicationSettings_by_sKeyword
folder. - The application keyword for Apache Open Office has been removed as I was not using it.
-c
and--collateral[=int]
can now be used to turn on "collateral" bug handling. In this case certain access violation bugs are reported, but rather than terminating the application, cBugId will attempt to "fake" that the instruction that caused this exception succeeded (providing a tainted value 0x41414141... as the read result if applicable). This allows you to see what would happen if you were able to control this bad read/write operation. Any subsequent access violations are treated similarly, up until the maximum number of collateral bugs requested. This maximum number of bugs defaults to 5, but can be overwritten through a value provided for the--collateral
argument. Collateral bug handling may be useful when trying to determine if a particular vulnerability is theoretically exploitable or not: you can use it get an idea of the effect that control over the data would provide. It might show that nothing else happens, that the application crashes unavoidably and immediately, both of which indicate that the issue is not exploitable. It might also show that control over arbitrary parts of memory or the instruction pointer is potentially possible, indicating it is exploitable.--bCleanup
should now work correctly.- Application specific settings (i.e. application identified with a "keyword")
have been moved into
ddxApplicationSettings_by_sKeyword
in a separate folder to clean up the code. - Updated modules required code changes.
- Output has been standardized and improved.
- Line wrapping of code was improved.
- Internal exception stack numbering was reversed and output improved. A version check is now run and results output as well.
- Added more tests.
- Update version of cBugId should resolve all open issues, provide more stability, add new features and generally make it more awesome.
- Cleaned up output
- Added
uProcessMaxMemoryUse
anduTotalMaxMemoryUse
settings indxConfig.py
that allow you to limit the amount of memory a single process or all process in the application combined can allocate. - Some output will no longer be shown unless you specify the
-v
command- line switch. This switch still also enables cdb output. This should make the normal output of BugId cleaner. - Changed some output formatting.
- Fix a bug where application keyword binary paths had spaces insert between
each character when a
keyword?
argument is provided. - Added Windows ISA and Python version and ISA to version information.
PageHeap.cmd
will now say "ON" or "OFF" when querying the state of page heap for a specific binary, assuming the default flags are set. If non- default flags are set, the flags value is shown.
- Process binary name is now lower-cased again. It was accidentally changed to use whatever casing the file-system used recently. This made it harder to match the the bug location id to previous location ids without having to do a case-insensitive match. You can now do a case-sensitive match again.
- boolean arguments must have no value (defaults to true) or either of "true" or "false". Other values are no longer accepted.
- Other arguments that require a value must now have one; they will no longer default to "true" if no value is provided.
- exception and version information now show the version info on all relevant modules (a few new ones were added, but the code was not updated to include them in this output before).
MemGC.cmd ?
can now be used to query MemGC state. Administrator privileges are no longer needed to query or set MemGC status.PageHeap.cmd
accesses the Registry directly to get or set page heap flags. This means the user no longer needs to havepageheap.exe
installed in a predictable location for it to work.PageHeap.cmd [binary|application] ?
can now be used to determine if page heap is enabled or not; it provides simpler output (enabled or disabled) when possible. You can still runPageHeap.cmd [binary|application]
to show the exact flags that are enabled. Administrator privileges are no longer needed to query page heap status.MemGC.cmd
andPageHeap.cmd
use the full path toreg.exe
andfind.exe
in the Windows System32 folder. They should now function in all environments, including ones where thePATH
environment variable causes either thereg
and/orfind
command to execute another binary (e.g. PowerShell).- Fix mFileSystem module (it was static and is now linked to latest).
- Delayed path creation for Firefox profile: the profile folder will now be
created right before Firefox is started through the
firefox
keyword and only then. This is required to be able to generate an 8.3 path to the folder, which is passed to Firefox in the command-line arguments. - Added
pingsender.exe
to the list of page-heap enabled executable for Firefox. - The Windows version and build number are now read from the Registry and shown
when an internal exception happens and when the
--version
command-line argument is used. - BugId will no longer attempt to debug Edge on Windows versions before build number 15063. This will not work, so an error message is shown instead and the user is told to use EdgeDbg in this case.
- Added unit-tests.
- New oConsole module has a bug fix that allows
BugId.py --version
to have its output redirected (this woule previously cause an exception).
- Update sub-modules and modify code to use these new versions where needed.
- Use 8.3 path for Firefox profile to make sure Firefox can use it.
- Use mFileSystem everywhere.
- Fix issue where statistics written to file for repeated runs would cause an exception because a string was converted to Unicode when it should not be.
- Fixed highlighting of relevant binary versions.
- "Cleanup" code is now available for Firefox and Edge; it allows removing of stored state before starting the application to prevent previous crashes from affecting the outcome of the next run.
- Version checks have been simplified to only handle recent versions of various sub-modules. This means very old versions will throw exceptions, rather than be handled correctly as such.
- Sub-modules have been overhauled and code has been moved around. These are internal changes that should not affect normal usage.
- Invalid JSON encoded arguments will now result in error messages that include the JSON decode error, which should help resolve these issues faster.
- New cBugId version has a few improvements, but nothing mayor for the end user of BugId.
- New cBugId version has a few improvements, but nothing mayor for the end user of BugId.
- C++ and WinRT exceptions are now disabled in
edge
andmsie
, as they have never been associated with a bug in my experience and disabling them speeds up BugId and reduces memory usage significantly. - Check for binaries that are allowed to run without pageheap is now case- insensitive, as file names in Windows are case-insensitive.
- New cBugId version checks if page heap has been enabled a lot faster in order to speed things up significantly. A few minor bugs where also fixed and if symbols cannot be loaded, they will be downloaded again from the server if possible, overwriting local cached copies.
- Application keywords
chrome_x86
andchrome_x64
will no longer selectchrome-sxs_*
if it is installed.chrome_x64
will select Chrome installed inProgram Files (x86)
, as x64 versions of Chrome can be installed there.
- New cBugId version fixes bugs #38 & #39.
- You can now specify the path where you want the dumps to be saved by setting
dxConfig["cBugId"]["sDumpPath"]
indxConfig.py
or by using the--cBugId.sDumpPath="path"
command-line argument. You can also request a full memory dump (as opposed to the default mini dump) by settingdxConfig["cBugId"]["bFullDump"]
indxConfig.py
toTrue
or by using the--cBugId.bFullDump=true
command-line argument.
- New cBugId version fixes a number of bugs and has a few improvements. BugId itself did not need to be modified to accommodate some these changes.
- New cBugId version fixes a number of bugs and has a few improvements. BugId has been modified to accommodate some these changes.
- Prevent exception when bug location is unknown.
- conhost.exe is allowed to run without page heap
- RuntimeBroker.exe is no longer considered part of Edge.
- Chrome is now run with the
--jsflags"--expose-gc"
and--enable-logging=stderr
command-line arguments.
- New cBugId version fixes a bug where the wrong symbol for a function could be used in the BugId and HTML report in same cases. In these cases the function symbol would have an offset, which no function symbol used by BugId should ever have. This new version fixes this issue, and may result in different BugIds for the same issue for that reason. This new version also has improved bug translations, and gathers up to 100 stack frames for analysis (up from 40). These to changes may also result in different, but improved BugIds for the same bugs.
- Default Edge argument has been re-introduced; it got removed by accident in the recent code changes to be able to debug UWP apps.
- New
-v
/--verbose
switch allows you to see cdb.exe I/O. You no longer need to modifycBugId
'sdxConfig
settings to do this. But you can make this the default by settingbOutputCdbIO
to True indxConfig.py
.
- Fixed a bug in the previous release that prevented BugId from working altogether.
- New cBugId version has some minor bug fixes and improved bug ids and HTML report.
- Fixed bug in previous oConsole update so it now handles redirected output correctly again.
- Fixed bug where errorlevel/exit code was not set to 3 for some internal errors.
- New cBugId version has some minor bug fixes.
- Add errorlevel/exit code to usage information.
- Updated oConsole to allow conservation of fore- and background colors, and changed BugId to not modify the background color.
- New cBugId version.
- I did not actually change any code, but I forgot to mentioned that the format
for BugId arguments has changed slightly in previous versions. Most
importantly, you will need to precede any arguments you want to pass to your
application with
--
to separate BugId arguments from application arguments, as in:Run> BugId <bug id arguments> -- <application arguments>
BugId -?
for a more complete description of the new arguments format.
- New cBugId has updates, improvements and bug fixes.
- Fixed bug in fPrintLogo.
- BugId now has an ASCII art logo and outputs text to the console in various colors!
- New cBugId version has lots of improvements. BugId code was changed to use some of the new features and work with the changes in the API.
- Added
--version
switch, which checks for updates and displays version information. - New processes are shown as they are created.
- Google Chrome default arguments have been updated.
- Page heap is now enabled for Firefox updater.exe as well.
- Adobe Reader is now terminated when the main process exits.
- The
AdobeARM.exe
binary was added topageheap.cmd
foracrobatdc
. I don't have a VM with the non-DCacrobat
to test if it should be added there as well. Let me know if you find that it does and I will add it! - When a main process terminates, it's process id and binary name are shown.
- When page heap is not enabled for a process, an error is shown and BugId
terminates. This can be disabled with the
--cBugId.bEnsurePageHeap=false
switch, or by making the appropriate changed indxConfig.py
. A whitelist of applications that are allowed to run without page heap is also available (gasBinariesThatAreAllowedToRunWithoutPageHeap
inBugId.py
). Let me know if you would like to see anything added to this whitelist. - Internal exceptions now include a call stack. This should make tracking down an externally reported issue a lot easier. Don't forget to report any bugs you find in BugId itself!!
- Added
bExcessiveCPUUsageCheckEnabled
(defaultFalse
) which disables excessive CPU usage checks by default. Set toTrue
to re-enable this. PageHeap.cmd
now accepts an application keyword, which causes it to enable page heap for all the relevant binaries for that application. This replaces all the application specificPageHeap-*.cmd
files.
- new "bApplicationTerminatesWithMainProcess" config setting allows an application to continue running after any one of the "main" processes terminates. This is disabled by default, which is a change from the previous behavior. To revert to previous behavior use this command-line arguments: "--bApplicationTerminatesWithMainProcess=true". The list of know applications config settings has this set to true where applicable.
- New cBugId version provides improved output in some cases.
- Link to example reports now works again.
- Timeouts for acrobat have been increased, as I found the application can be slow to load.
- Other cosmetic and internal changes were made that should not affect the end-user.
- New cBugId version now detects double-frees correctly.
- New cBugId version fixes a number of bugs and improves detection of stack related access violations.
- Update help
- Reset start-time used to calculate overhead right before application is started, so it is not cumulative when running with "--forever".
- Create statistics file when running with "--forever" that contains info about the number of times each Bug Id was seen.
- New cBugId version fixes a number of bugs and improves detection of recursive function calls.
- New cBugId version fixes a number of bugs.
- New cBugId version fixes a number of bugs.
- New cBugId version improves the way symbol loading errors are handled, and how VERIFIER STOP messages are handled. This should prevent some assertion failures in edge cases. There is also a fix for a bug in the HTML reports where blocks where not non-collapsible.
cBugId
now exposes thesOSISA
property, which represents the Operating System's Instruction Set Architecture.BugId
will use this property to determine which version of cdb to use. This should fix some cases whereBugId
incorrectly assumed the OS architecture wasx86
rather thanx64
.
- The use-after-free BugId now contains the offset from the end of the memory
page in which the freed memory allocation was stored, at which the code
attempted to use the freed memory. For instance, if an application attempts
to read data at offset 4 in a freed 0x10 byte memory block, the BugId will
now be
UAFR[]~0xC
, as the end of the memory block aligns with the end of the memory page and a read at offset 4 is 0xC bytes away from that end. - A use-after-free that is also out-of-bounds will now be reported as such
whenever possible. For instance, if an application attempts to read data at
offset 0x14 in a freed 0x10 byte memory block (i.e. beyond the end of the
freed memory block), the BugId will now be
OOBUAFR[]+0x4
, as the end of the memory block aligns with the end of the memory page and a read at offset 0x14 is 0x4 bytes after that end. Note that because of alignment, a 0xC byte memory block will be stored 0x10 bytes before the end of a page, just like a 0x10 byte memory block. The above two changes in the BugId do not provide any information about the memory block size, as this is currently not possible. The offset they provide is therefore only marginally useful. However, they are highly useful if you are investigating a vuln and manage to modify this offset by modifying the repro case, as this indicates your changes to the repro provide some level of control over the use-after-free vulnerability.
- Minor fixes and improvements in cBugId engine, which require some rewriting of BugId. This should solve a timing issue where a callback could get called before the cBugId constructor was finished, causing BugId to try to use the oBugId global before it was set to a cBugId instance.
- Minor fixes and improvements in cBugId engine.
- Size of memory region dumps is now limited to prevent errors, long analysis time and very large HTML reports.
- HTML reports for access violations should now always contain the access violation address in memory region dumps if applicable.
- Fixed minor errors in cBugId engine.
- HTML reports now start with the Stack section opened.
- Added a
--forever
switch, which runs the application repeatedly with the given settings. - New cBugId version has various improvements, including better rendering of HTML reports in MSIE and twitter card info in HTML reports. It also fixes a few minor issues.
- Added a
--fast
switch, which disables HTML reports, symbol servers and the use of_NT_SYMBOL_PATH
. This speeds up analysis and can be very useful if symbols are already cached and you do not need a report. - cBugId has had quite a few changes, some of these can result in different BugIds for the same crash compared to previous versions. They also include some changes that should speed up analysis significantly.
- Symbol sources are now separated into local symbol paths, local symbol cache
paths, and symbol server URLs. See
dxConfig
for details. - Symbol loading is less aggressive than it used to be, as this improves the
analysis speed significantly. If you notice odd BugIds because symbol fail to
load, try setting
BugId.bMakeSureSymbolsAreLoaded
totrue
to switch back to the older, slower behavior. Once Symbols have been cached, you should be able to set it back tofalse
and enjoy the speedup without further symbol related issues.
- cBugId no longer counts stack frames without a symbol towards the number of
hashed frames. They are added to the hash as a placeholder (
-
), so the hash may get larger than what you might have previously expected.
- HTML report now has tabs replaced with spaces where appropriate.
- A number of other minor cBugId changes and/or bug fixes.
- cBugId now cleans up stack for VERIFIER STOP messages.
- cBugId bug fixes and reverse change that enables page heap automatically (it was causing access violations).
- Page heap settings are now applied by default to all processes. The BugId settings can be used to disable this or modify which settings are applied.
- Detect and report misaligned frees as
MisalignedFree[size]+offset
. e.g if the code attempts to free heap using a pointer that is at offset 0x8 of a 0x20 byte block, you will get a BugId ofMisalignedFree[0x20]+8
- The
FailFast2:
prefix was removed from FailFast exceptions. - Both
LegacyGS
andStackCookie
FailFast exceptions are now reported asOOBW[Stack]
(as in: Out-Of-Bounds Write on the Stack). - New version of cBugId includes additional minor improvements and bug fixes.
- New version of cBugId fixes two bugs.
- New version of cBugId fixes a few bugs and improves HTML reports.
- PageHeap-Chrome.cmd now sets the CHROME_ALLOCATOR environment variable to the right value both in the current process and in all processes through the registry. The later requires logging off and on again to propagate.
- Default security impact is no longer None but "Denial of Service".
- Add support for Chrome Canary through the
chrome-sxs
,chrome-sxs_x86
, andchrome-sxs_x64
keywords. - Add support for Firefox Developer Edition through the
firefox-dev
,firefox-dev_x86
andfirefox-dev_x64
keywords. - Improve detection of x86/x64 versions of chrome, firefox and MSIE. i.e.
the
chrome
keyword will now run the x64 or x86 version of chrome, whichever is installed (preferring x64 over x86 if both are installed).
- Make HTML report information similar to what BugId outputs on the console.
- Fix bug where binary version information was not available when HTML report was not generated.
- Remove "@" prefix from application keywords; as this doesn't always work with
powershell: the argument appears to disappear. Now you can (again) simply use
chrome
,foxit
,msie
, etc... - New version of cBugId handles STATUS_HANDLE_NOT_CLOSABLE exceptions similar to other handle related exceptions.
- Output binary version information for the process' binary and optionally the binary in which the bug is located, if it's not the process' binary.
- New version of cBugId outputs application command-line in HTML report.
- Add support for Adobe Reader DC through
acrobatdc
keyword.
- Rewrote argument parsing logic to fix issue #21.
- Fix path for Adobe Reader through the
acrobat
keyword. - Apply settings provided on the command line after applying application specific settings, so you can override the later using the former.
- Update cBugId to latest version, which includes bug fixes.
- Add PageHeap-*.cmd scripts for Chrome, Firefox and Flash (though you won't want to use the first two, as these browsers use their own heap allocation engine and page heap will have little use).
- Support for Adobe Reader through the @acrobat keyword.
- Update cBugId to latest version, which includes bug fixes.
- Update cBugId to latest version, which includes bug fixes and modifies some BugIds by replacing "?" with "_" in "AV?" and stack hashes.
- Update cBugId to latest version, which includes bug fixes but no API changes.
- Make @chrome OS ISA dependent and add @chrome_x86 and @chrome_x64 to select different ISAs when you want to use a specific ISA.
- Make @firefox OS ISA dependent and add @firefox_x86 and @firefox_x64 to select different ISAs when you want to use a specific ISA.
- Rename @msie32 and @msie64 to @msie_x86 and @msie_x64 for consistency.
- Update version of cBugId, which has the following mayor changes:
- The BugId can now include the number of overwritten bytes, and a hash of their values if you supply the --BugId.uHeapCorruptedBytesHashChars=uint argument with a value of 1 or more. This can be useful when you want to detect if two instances of heap corruption wrote the same data to corrupt the heap. When enabled, a string with format "~L:H" is added to the BugId, where "L" is the length of the corruption and "H" is the hash. Note that L is not influenced by the --BugId.uArchitectureIndependentBugIdBits setting, so BugId's created using this feature on x86 and x64 versions of an application may differ.
- You can now specify which version of cdb (x86 or x64) you want BugId to use. This can improve results when you use the x86 cdb to debug x86 applications: using the x64 cdb may prevent BugId from collecting page heap information. The correct cdb version is automatically select for applications run using an "@keyword". See the cBugId RELEASE NOTES.txt file for all details.