Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sanitizer build options for host #2842

Merged
merged 3 commits into from
Jun 27, 2024

Conversation

mikee47
Copy link
Contributor

@mikee47 mikee47 commented Jun 26, 2024

This PR adds a couple of build variables so host builds can be compiled with the available address sanitisers.

I spent way too much time today trying to track down some odd behaviour with the graphics library virtual screen in MacOS. Since valgrind isn't available, I tried enabling some address sanitisers which I've not used before. Actually seems more effective than valgrind and is supported on both GCC and CLANG (and MacOS). Found the issue immediately.

There are a lot of possible sanitizer options so I've picked some which look most helpful. Also added stack checking. All of this obviously affects build size and runtime speed.

To try this out:

export ENABLE_SANITIZERS=1
make clean components-clean
make flash run

That's it. make list-config | grep SANITIZER will show applicable options.

NB. GCC requires the libasan and libubsan packages.

Bug in MacOS getHostAppDir

Bad len value causes memory corruption, very difficult to track down without valgrind/santizers.

Fix graphics virtual display handling with 64-bit host

Small fix found whilst hunting the above bug, affects all 64-bit builds not just MacOS.

@mikee47 mikee47 force-pushed the feature/host-sanitizers branch from 61cd32e to dc1c84f Compare June 26, 2024 13:58
@slaff slaff merged commit 0d0d28e into SmingHub:develop Jun 27, 2024
48 checks passed
@mikee47 mikee47 deleted the feature/host-sanitizers branch June 27, 2024 07:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants