aboutsummaryrefslogtreecommitdiff
path: root/libs/plugin_python/src/mobase/wrappers
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-25 13:51:44 -0500
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-25 13:51:44 -0500
commit5a506edb574455ef111d48177497279394e18282 (patch)
tree66fd26ca2d049c5ba36f22cff4554b42b9abefab /libs/plugin_python/src/mobase/wrappers
parent0c3ec1dc38b48e8b4adfafd97967322201e91e7b (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/src/mobase/wrappers')
0 files changed, 0 insertions, 0 deletions