diff --git a/CMakeLists.txt b/CMakeLists.txt
index f3ff04c9e922cf9fbc6035f3353a09ba85205a25..74cac38d21e3e4bfcf399ee02657218f19b4dc5c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -475,8 +475,12 @@ endif()
 ############################################################################################################################
 
 try_compile( WALBERLA_USE_STD_FILESYSTEM "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdFilesystem.cpp"
-             COMPILE_DEFINITIONS -DWALBERLA_USE_STD_FILESYSTEM )
+             COMPILE_DEFINITIONS -DWALBERLA_USE_STD_FILESYSTEM COPY_FILE "${CMAKE_CURRENT_BINARY_DIR}/TestStdFilesystem" )
 if( WALBERLA_USE_STD_FILESYSTEM )
+  # detect https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90050 by checking whether it segfaults
+  execute_process( COMMAND "${CMAKE_CURRENT_BINARY_DIR}/TestStdFilesystem" RESULT_VARIABLE WALBERLA_STD_FILESYSTEM_WORKS )
+endif()
+if( WALBERLA_USE_STD_FILESYSTEM AND WALBERLA_STD_FILESYSTEM_WORKS EQUAL 0 )
    message( STATUS "Found std::filesystem")
 else()
    try_compile( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdFilesystem.cpp"
diff --git a/cmake/TestStdFilesystem.cpp b/cmake/TestStdFilesystem.cpp
index 079e2358213185a67aee9602ea01052819b328d7..1caf5057db6c1253635b8810e2a7792bd56d249f 100644
--- a/cmake/TestStdFilesystem.cpp
+++ b/cmake/TestStdFilesystem.cpp
@@ -5,10 +5,6 @@
 #include <experimental/filesystem>
 #endif
 
-#if defined(WALBERLA_USE_STD_FILESYSTEM) && defined(__GLIBCXX__) && (!defined(_GLIBCXX_RELEASE) || _GLIBCXX_RELEASE < 9)
-#error "std:filesystem broken due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90050"
-#endif
-
 int main() {
 #if defined(WALBERLA_USE_STD_FILESYSTEM)
    std::filesystem::path p("/tmp/test.txt");