]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
GHA/linux: fix thread sanitizer error output
authorViktor Szakats <commit@vsz.me>
Wed, 13 Aug 2025 13:14:31 +0000 (15:14 +0200)
committerViktor Szakats <commit@vsz.me>
Wed, 13 Aug 2025 16:34:22 +0000 (18:34 +0200)
Replace autotools with cmake to avoid libtool wrappers that are changing
`LD_LIBRARY_PATH` in a way incompatible with the thread sanitizer.

To fix the output when the sanitizier is finding something:
```
==51718==WARNING: Can't write to symbolizer at fd 7
 /usr/bin/llvm-symbolizer-18: /home/runner/work/curl/curl/bld/lib/.libs/libcurl.so.4: no version information available (required by /usr/bin/llvm-symbolizer-18)
 /usr/bin/llvm-symbolizer-18: symbol lookup error: /home/runner/openssl/lib/libcrypto.so.3: undefined symbol: __tsan_func_entry
```
Ref: https://github.com/curl/curl/actions/runs/16911402500/job/47913783729#step:39:4466

After:
```
 13:50:04.117885 == Info:ThreadSanitizer: thread T1  finished with ignores enabled, created at:
  closing connection #0
     #0 pthread_create <null> (libtests+0x6bc0f) (BuildId: 4fe889446291259934205ac03931c397aa0210d3)
     #1 Curl_thread_create /home/runner/work/curl/curl/lib/curl_threads.c:73:6 (libcurl.so.4+0x55a76) (BuildId: cb0f14ba2ad68c9cab0c980d9a5d7a53cc0782da)
     #2 async_thrdd_init /home/runner/work/curl/curl/lib/asyn-thrdd.c:500:26 (libcurl.so.4+0x1c153) (BuildId: cb0f14ba2ad68c9cab0c980d9a5d7a53cc0782da)
[...]
```
Ref: https://github.com/curl/curl/actions/runs/16939193922/job/48003405272?pr=18274#step:39:4018

Also:
- disable memory tracker which turned out to be incompatible with
  the thread sanitizer and detaching threads.
  Ref: #18263 and #curl IRC.
- the job is ~30 seconds faster after this patch.

Reported-by: Stefan Eissing
Bug: https://github.com/curl/curl/pull/18263#issuecomment-3179279440
Follow-up to a2bcec0ee0895c23b98aea8e72ad4e9278fa67c8 #14751
Closes #18274

.github/workflows/linux.yml

index 5b3d90ea00094c7dd6fefd5dac33bf6e92ea338b..7f1ea5a5eb442c1173c3a9e2a9612ec7b010cc6e 100644 (file)
@@ -235,8 +235,9 @@ jobs:
             install_packages: zlib1g-dev clang libtsan2
             install_steps: pytest openssl-tsan
             CFLAGS: -fsanitize=thread -g
-            LDFLAGS: -fsanitize=thread -Wl,-rpath,/home/runner/openssl/lib
-            configure: CC=clang --with-openssl=/home/runner/openssl --enable-debug
+            LDFLAGS: -fsanitize=thread
+            CC: clang
+            generate: -DOPENSSL_ROOT_DIR=/home/runner/openssl -DENABLE_DEBUG=ON -DENABLE_CURLDEBUG=OFF
 
           - name: 'memory-sanitizer'
             install_packages: clang