Re: How to use AddressSanitizer with Wine? (80% PE approach)
Bernhard Übelacker <[email protected]> Sun, 18 May 2025 11:50:24 +0200
| Newsgroups | gmane.comp.emulators.wine.devel |
|---|---|
| Message-ID | <[email protected]> |
Am 06.05.25 um 14:49 schrieb Bernhard Übelacker: > Am 28.04.25 um 06:44 schrieb Alex Henrie: >> On Sat, Apr 26, 2025 at 4:36 PM Bernhard Übelacker >> <[email protected]> wrote: >> >>> For enabling ASan(PE) I collected some "notes to myself", which I hope >>> are enough accurate to enable someone else to reproduce the results. >> >>> [6] https://gitlab.winehq.org/bernhardu/wine/-/blob/asan- >>> pe_2025-04-05_wine-10.6/README-ASan.md?ref_type=heads >> >> Thank you for sharing! Goodness, it's a lot more complicated than I >> had hoped. Notwithstanding the difficulty, following your instructions >> closely I was able to build and run Wine with the llvm-mingw AUR >> package.[1] My LLVM variables look like this: >> >> export LLVM_INST_PATH=/opt/llvm-mingw >> export x86_64_LLVM_CLANG_RT_LIB=$(find $LLVM_INST_PATH -name >> libclang_rt.asan_dynamic-x86_64.dll.a) >> export i386_LLVM_CLANG_RT_LIB=$(find $LLVM_INST_PATH -name >> libclang_rt.asan_dynamic-i386.dll.a) >> >> For my own sanity, I created scripts named configure64.sh, build64.sh, >> configure32.sh, build32.sh, and run.sh for the various steps of the >> instructions. I think it would be a lot easier to use your ASan branch >> if the commands were already in scripts. >> >>> Unfortunately I have one patch with LLVM still in progress, >>> therefore a self-built LLVM would be needed, to build wine. >>> But this is just needed for HEAP_REALLOC_IN_PLACE_ONLY re-allocations, >>> and running with "windows_hook_rtl_allocators=0" should not be >>> affected by this, >>> and that way building wine from the plain nightly llvm-mingw package >>> should work. >> >> Could you note that in the README please? Upstream llvm-mingw combined >> with windows_hook_rtl_allocators=1 resulted in the cryptic error >> "wine: could not load kernel32.dll, status c0000135" when trying to >> initialize and use the Wine prefix. >> >> I ran a few parts of the Wine test suite and I've submitted my first >> patch based on the results.[2] Furthermore, since the instructions in >> the wiki were outdated and nonfunctional, I've replaced them with a >> link to your repository.[3] Thanks very much for all the work you put >> into it! >> >> -Alex >> >> [1] https://aur.archlinux.org/packages/llvm-mingw >> [2] https://gitlab.winehq.org/wine/wine/-/merge_requests/7925 >> [3] https://gitlab.winehq.org/wine/wine/-/wikis/Building-Wine#memory-- >> address-checkers > > > Hello Alex, > thanks for testing and fixing found issues. > I missed also in the readme I am using currently a new-style-wow64 > configure. > Unfortunately I did not get around to put those parts into scripts. > However, I rebased to current release > and new test runs are in the asan_reports_x86(_64) subdirectories. > > https://gitlab.winehq.org/bernhardu/wine/-/tree/asan- > pe_2025-04-26_wine-10.7?ref_type=heads > > Kind regards, > Bernhard Hello, I rebased the current state of the this ASan experiment here [1]. Results of running the conformance tests can be found in [2] [3]. [1] https://gitlab.winehq.org/bernhardu/wine/-/tree/asan-pe_2025-05-06_wine-10.8?ref_type=heads [2] https://gitlab.winehq.org/bernhardu/wine/-/tree/asan-pe_2025-05-06_wine-10.8/asan_reports_x86_64?ref_type=heads [3] https://gitlab.winehq.org/bernhardu/wine/-/tree/asan-pe_2025-05-06_wine-10.8/asan_reports_x86?ref_type=heads Kind regards, Bernhard