diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml index 2448123ecbe..c812996fd47 100644 --- a/.github/workflows/linux_builds.yml +++ b/.github/workflows/linux_builds.yml @@ -9,6 +9,7 @@ env: SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true + TSAN_OPTIONS: suppressions=misc/error_suppressions/tsan.txt concurrency: group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-linux @@ -58,6 +59,16 @@ jobs: # Skip 2GiB artifact speeding up action. artifact: false + - name: Editor with ThreadSanitizer (target=editor, tests=yes, dev_build=yes, use_tsan=yes, use_llvm=yes, linker=lld) + cache-name: linux-editor-thread-sanitizer + target: editor + tests: true + sconsflags: dev_build=yes use_tsan=yes use_llvm=yes linker=lld + bin: "./bin/godot.linuxbsd.editor.dev.x86_64.llvm.san" + build-mono: false + # Skip 2GiB artifact speeding up action. + artifact: false + - name: Template w/ Mono (target=template_release) cache-name: linux-template-mono target: template_release diff --git a/misc/error_suppressions/tsan.txt b/misc/error_suppressions/tsan.txt new file mode 100644 index 00000000000..a67a22810b9 --- /dev/null +++ b/misc/error_suppressions/tsan.txt @@ -0,0 +1,7 @@ +# See the below link for an explanation of this file's format +# https://github.com/google/sanitizers/wiki/ThreadSanitizerSuppressions + +deadlock:tests/core/templates/test_command_queue.h +deadlock:modules/text_server_adv/text_server_adv.cpp +deadlock:modules/text_server_fb/text_server_fb.cpp +