Это постоянная проблема для людей, которые разрабатывают файловые системы FUSE. Эта ссылка может помочь (это слишком буквально, чтобы объединить в одном ответе). Обходной путь включает своевременную замену fusermount и (в зависимости) некоторые дополнительные опции для valgrind, чтобы предотвратить его отслеживание детей.
На самом деле, если вы запускаете мою FS под valgrind, вы получите такой вывод (да, у достаточного количества людей была такая проблема, что я фактически обнаружил valgrind при запуске и отобразил ссылку):
root@tower:~ # valgrind xsfs /xs
==9479== Memcheck, a memory error detector.
==9479== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==9479== Using LibVEX rev 1884, a library for dynamic binary translation.
==9479== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==9479== Using valgrind-3.4.1, a dynamic binary instrumentation framework.
==9479== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==9479== For more details, rerun with: -v
==9479==
******** Valgrind has been detected by xsfs
******** If you have difficulties getting xsfs to work under Valgrind,
******** see the following thread:
******** http://www.nabble.com/valgrind-and-fuse-file-systems-td13112112.html
******** Sleeping for 5 seconds so this doesn't fly by ....
Самый простой способ - это все ваши отладки на одноразовой виртуальной машине, работающей от имени root, где вы можете просто отбросить бит setuid и покончить с этим. Убедитесь, что вы протестировали свой код на отсутствие утечек или нарушений, достаточно просто протестировать любой связанный код библиотеки, не используя fuse. Передайте вашу сборку 'valgrind-clean' и обратите внимание, что вы сделали это в документации.
Затем возьмите несколько битов из valgrind/valgrind.h
, чтобы обнаружить его, и покажите короткое сообщение для тех, кто все равно его запускает. Для того чтобы обойти эту проблему, требуется сотрудничество с root-пользователями, и, откровенно говоря, гораздо проще сделать это в песочнице.
Также достаточно легко отказаться от работы под valgrind с включенным битом setuid, показывая полезное сообщение для людей, чтобы отключить его выключить , если они действительно хотят это сделать.