--- ./base/files/scoped_file_linux.cc.orig +++ ./base/files/scoped_file_linux.cc @@ -7,6 +7,7 @@ #include #include #include +#include #include "base/compiler_specific.h" #include "base/debug/stack_trace.h" @@ -80,9 +81,18 @@ extern "C" { -int __close(int); - __attribute__((visibility("default"), noinline)) int close(int fd) { + static int (*__close)(int) = nullptr; + + if (__close == nullptr) { + __close = (int (*)(int))dlsym(RTLD_NEXT, "close"); + + if (__close == nullptr) { + RAW_LOG(ERROR, "musl close not found\n"); + IMMEDIATE_CRASH(); + } + } + if (base::IsFDOwned(fd) && g_is_ownership_enforced) CrashOnFdOwnershipViolation(); return __close(fd);