Bläddra i källkod

Drop valgrind from CI and instead enable ASan

The recently added ioctl use is reported as a false-positive by valgrind.
I tried moving it to different compilers/versions two times and only
hit further issues that were valgrind's fault.

Also includes a tiny fix.
sfan5 4 månader sedan
förälder
incheckning
c9e10e1dd9
2 ändrade filer med 6 tillägg och 5 borttagningar
  1. 2 5
      .github/workflows/linux.yml
  2. 4 0
      src/unittest/test_datastructures.cpp

+ 2 - 5
.github/workflows/linux.yml

@@ -86,7 +86,7 @@ jobs:
       - name: Install deps
         run: |
           source ./util/ci/common.sh
-          install_linux_deps clang-7 valgrind
+          install_linux_deps clang-7 llvm
 
       - name: Build
         run: |
@@ -94,15 +94,12 @@ jobs:
         env:
           CC: clang-7
           CXX: clang++-7
+          CMAKE_FLAGS: '-DCMAKE_C_FLAGS="-fsanitize=address" -DCMAKE_CXX_FLAGS="-fsanitize=address"'
 
       - name: Unittest
         run: |
           ./bin/minetest --run-unittests
 
-      - name: Valgrind
-        run: |
-          valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/minetest --run-unittests
-
   # Current clang version
   clang_14:
     runs-on: ubuntu-22.04

+ 4 - 0
src/unittest/test_datastructures.cpp

@@ -108,6 +108,8 @@ void TestDataStructures::testMap1()
 			break;
 	}
 	UASSERT(once);
+
+	map.clear(); // ASan complains about stack-use-after-scope otherwise
 }
 
 void TestDataStructures::testMap2()
@@ -121,6 +123,8 @@ void TestDataStructures::testMap2()
 	UASSERT(t0.deleted);
 	UASSERT(!t1.copied);
 	UASSERT(!t1.deleted);
+
+	map.clear();
 }
 
 void TestDataStructures::testMap3()