* Revert the location of the setupFolder
* install llvm version 16.0.6
* print version
* install llvm before building fuzzing tools
* revert changes in the script
* Remove the configuration of the autoscale diagnostic
* only remove the retention policy
* set retention policy to false
* remove settings
* remove retentionPolicy from bicep
* format
* Updating setup.sh
* logger works
* Install omi
* syntax
* Add option to create mariner pool in checkpr
* .
* Need to install sudo
* .
* Include both logging extensions
* Revert because we already isntall the azure monitor for linux extension
* Downgrade type handler version
* Add data collection rules and fuzzing articacts for integration test
* TODOs
* Fix linux jobs getting sent to mariner
* Fix linux jobs going to marienr pool
* Fix pools
* Remove the old logging extension on linux
* try to retain syslog
* Value to be set was not clear
* Trying to route logs
* Maybe we need to specify properties even if we don't set anything
* Start adding a data collection association
* Create association
* update packages.lock
* .
* Remove auto config and add dependency map
* Bring back GCS autoconfig
* Undo DCR stuff
* Undo package version bump
* Fix up files
* Remove TODO
* deserialize the coverage files directly into the output files
* reduce the amount of data structure cloning
individual save function for each formats
* cleanup
* unformatted json
* bring back spawn
* remove stray comment
* build fix
* fix build
Enables capturing crashdumps generated by ASAN at point of failure.
This helps in several ways:
- provides a crash dump in the case that we cannot repro a failure later
- some people have stated that crash dumps would be more useful to their team than the repro VM
- we should be able to use these for automated submission to Watson or similar
---
Crash dumps are automatically collected (for libfuzzer) jobs, if we find any. They should be activated by enabling crash dumps in ASAN, via:
- On Linux: `ASAN_OPTIONS=disable_coredump=0:abort_on_error=1:unmap_shadow_on_exit=1`
- OneFuzz will override the (Ubuntu) crash dump options to generate core dumps instead and then upload them.
- On Windows: `ASAN_SAVE_DUMPS=my_dump.dmp`
- OneFuzz will look for any `*.dmp` files in the working directory and then upload them.
In both cases, the crash dump will be renamed to match the crashing input, if possible, and uploaded to a new `crashdumps` container.
---
Also updated: the “simple” LibFuzzer test has been updated to be compiled with `cl.exe` instead of `clang` on Windows, so that we are exercising the MSVC implementation of ASAN/LibFuzzer, and the CI image has been updated to `windows-2022`. The restriction to an old version of the Windows SDK has been removed.
`windows-rs` is the newer, Microsoft-supported version of the API bindings; `winapi` hasn't been updated in some time. This allows us to remove some code, as `windows-rs` includes the `Sym*` functions that we had to previously defined ourselves in `dbghelp`.
Rather than port the `jobs` and `com` code I removed it, as it was unused.
The `check_hr` and `check_winapi` macros have been replaced by use of `.ok()?` on `BOOL` and `?` on `HRESULT` which now support standard error handling facilities.
Add a snapshot-based test to our coverage implementation. This adds coverage for a bunch of code which did not previously have it, and allows us to easily see that coverage is being generated as expected.
A fix was made to the recording code to remove the use of `TargetAllowList` as it was easy to misconfigure `CoverageRecorder` when using it. The use of `TargetAllowList` is now only a container struct in our generic coverage task.
* Look for azcopy.exe in AZCOPY if it's a directory
* Make file check in AZCOPY dir more concise
Co-authored-by: George Pollard <gpollard@microsoft.com>
* Add logic to support searching for azcopy on linux
---------
Co-authored-by: George Pollard <gpollard@microsoft.com>
* Add support for regression reports to 'repro get_files'
* Make get_files logic more clear
* Format api.py with black
* Change crash_info default values for mypy
* Set crash_info['input_blob_container'] as a Container instead of string
* Add logic for handling a missing 'original_crash_test_result' or missing 'crash_report's
* Adjust code format in get_files
* Update logic to comply with mypy
* Fix missing dict index operation
Noticed a few things while doing #3304, so fixing them in another PR:
- Add `CreateNewContainer` which will always create a new container instead of looking for one first.
- InstanceId was not being cached properly (the Lazy would be recreated upon every request) — my fault!
- Add `GetBlob` beside `GetBlogWithTags` for when we don't need the tags
- Make `GetBlogWithTags` do both fetches in parallel
This reverts commit 25f125748dc0352d66385281e7a4468621233739.
The change broke the libfuzzer dotnet template (I could have sworn I validated first with check-pr but…)
Two things didn't work:
1. the path to the LibFuzzerDotNetLoader needed to change; I attempted to fix this in #3324
2. minidumps weren't being captured, for an unknown reason. I haven't figured out why yet, thus I'm going to simply revert the change so we have this working for the next release.
When `LibFuzzerDotNetLoader` loads DLLs that have dependencies, they are not currently resolved correctly, as sibling DLLs in the same directory are not considered. In order to do this, we need to provide a custom `AssemblyLoadContext`. This PR does so, based on the [dotnet core example code](https://learn.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support).
Validated with custom fuzzer implementation; we don't yet have a full test for this in check-pr.
Closes#3326.