mergerfs/vendored/libfuse/include
Antonio S. Musumeci c0b4ea3fae Fix destructor race with _remove_self during shutdown
The destructor and autoscale idle-exit path could race: a worker
calling _remove_self would erase itself from _threads and detach
while the destructor was iterating _threads to enqueue poison pills
and join. This could cause too few poison pills (deadlocking
remaining workers) or pthread_join on a detached thread (UB).

Two changes:
- _remove_self now checks _stop and returns immediately during
  shutdown, ensuring no thread detaches after destruction begins.
- Destructor snapshots _threads under the mutex before enqueueing
  poison pills and joining, so it operates on a stable copy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 19:35:35 -04:00
..
moodycamel Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
base_types.h Add support for FUSE_COPY_FILE_RANGE_64 2026-04-01 23:20:05 -05:00
bounded_queue.hpp checkpoint 2026-04-09 19:13:58 -04:00
debug.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
extern_c.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fatal.hpp Use fatal::abort() rather than assert in places 2026-03-24 21:13:34 -04:00
fs_dirent64.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse.h Rework open file resource management 2026-03-31 19:53:17 -04:00
fuse_attr.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_cfg.hpp Add FUSE request_timeout 2026-04-01 23:20:05 -05:00
fuse_common.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_conn_info.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_dirent.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_direntplus.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_dirents.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_entry.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_kernel.h Add support for FUSE_COPY_FILE_RANGE_64 2026-04-01 23:20:05 -05:00
fuse_lowlevel.h Add support for FUSE_COPY_FILE_RANGE_64 2026-04-01 23:20:05 -05:00
fuse_msgbuf.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_msgbuf_t.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_opt.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_pollhandle.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_req.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_req_ctx.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
fuse_timeouts.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
invocable.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
kvec.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
maintenance_thread.hpp Move maintainence thread func take u64 rather than int 2026-03-24 21:13:34 -04:00
mutex.hpp Move scope_guard to vendored/ 2026-03-24 21:13:34 -04:00
mutex_debug.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
mutex_ndebug.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
objpool.hpp fix objpool: add size tracking, improve allocation matching; fix msgbuf: clear pool on size change 2026-03-24 21:13:34 -04:00
stat_utils.h Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
syslog.hpp Move 3rd party libraries to "vendored" directory 2026-03-02 01:09:16 -05:00
thread_pool.hpp Fix destructor race with _remove_self during shutdown 2026-04-09 19:35:35 -04:00