Recently I created fuzzer which test all possible(at this moment ~10 000) functions from Windows API – https://github.com/qarmin/Win32Fuzzer.
I created it, because I want to help Wine project, but testing one by one app to see if app crashes or not(I done this before) was too monotonous and time consuming.
Project is written in Rust and rust bindings to Windows API – https://github.com/microsoft/windows-rs
It should help to find regressions, not implemented functions and crashes.
It works in 2 stages:
– Generating project(
cargo run inside main repository folder):
– windows-rs source is parsed, and extracted is info about available functions and its arguments.
– Excluded functions are removed e.g. which cannot compile due bugs in parsing algorithm or which have non supported arguments.
– Source files are generated
– Compiling created project(`
wine cargo run in created project, require windows Rust GNU installed from https://forge.rust-lang.org/infra/other-installation-methods.html#standalone-installers)
I prepared text file about things that I found with this project – https://github.com/qarmin/Win32Fuzzer/releases/download/1.0.0/7.3.staging.results.txt e.g.:
– 916 functions which are not implemented in Wine(that means, that executing such functions will crash app with error `
wine: Call from 000000017002CA78 to unimplemented function winspool.drv.CloseSpoolFileHandle, aborting\)`
– 32 functions not implemented in Windows 10 20H2(probably functions are available in later windows versions)
– 186 functions which crashes on Windows(probably also crashes on Linux and I don't think that it is worth to check them)
– 73 functions which crashes app on Linux(but not on Windows), feel free to test it and report to https://bugs.winehq.org
When executing app, info about current executed function and its arguments is written to `results.txt` file.
Project can be configured by testing only small subset of classes/functions by adding `
Binaries to test are available here https://github.com/qarmin/Win32Fuzzer/releases/tag/1.0.0
– Report all functions which crashes on Linux at https://bugs.winehq.org
– Support more arguments, that currently are ignored
I hope, that this project will help to increase number of apps/games that properly works on Wine.