diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-25 13:51:44 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-25 13:51:44 -0500 |
| commit | 5a506edb574455ef111d48177497279394e18282 (patch) | |
| tree | 66fd26ca2d049c5ba36f22cff4554b42b9abefab /libs/plugin_python/tests/python/test_shared_cpp_owner.py | |
| parent | 0c3ec1dc38b48e8b4adfafd97967322201e91e7b (diff) | |
VFS: harden crash path so FUSE bad_alloc no longer deadlocks system
Wrap every FUSE callback in a noexcept thunk that catches std::bad_alloc
(→ ENOMEM) and other exceptions (→ EIO) so they never unwind into
libfuse3 (C, no unwind support). Stops std::terminate from orphaning
the mount.
Crash handler: replace raise(sig) with _exit(128+sig) — raise can hang
when the signal is masked on libfuse worker threads. Try direct
umount2(MNT_DETACH) before fork+exec fusermount3 -uz, and double-fork
the fallback so we don't waitpid on a stuck child. Switch signal() to
sigaction(SA_RESETHAND), add SIGBUS, install std::set_terminate.
Cap readdir/readdirplus kernel-supplied size at 1 MiB to defend against
oversized vector(size) allocations.
Diffstat (limited to 'libs/plugin_python/tests/python/test_shared_cpp_owner.py')
0 files changed, 0 insertions, 0 deletions
