Ceci est un problème perpétuel pour les personnes qui développent des systèmes de fichiers FUSE. This link may help (c'est littéralement trop de consolider dans une seule réponse). Le work-around implique un remplacement juste-à-temps de fusermount, et (selon), quelques options supplémentaires à valgrind pour l'empêcher de traçage des enfants.
En fait, si vous exécutez mon FS sous valgrind, vous obtenez cette sortie (oui, assez de gens avaient ce problème que je fait détecté valgrind au démarrage et affiche le lien):
[email protected]:~ # 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 ....
Le le plus facile chose à faire est tout votre débogage dans une machine virtuelle jetable fonctionnant en tant que root, où vous pouvez juste abandonner le bit setuid, et être fait avec. Assurez-vous de tester votre code pour ne pas avoir de fuites ou de violations, il est assez facile de tester tout code de bibliothèque lié n'utilisant pas de fusible. Donnez votre build 'valgrind-clean' et notez que vous l'avez fait dans la documentation.
Ensuite, prenez quelques bits sur valgrind/valgrind.h
pour le détecter, et affichez un court message pour ceux qui vont de l'avant et exécutez-le quand même. Hacks à travailler autour de lui nécessitent une coopération de base, et très franchement, sont beaucoup plus faciles à faire dans un bac à sable tout aussi bien.
Il est également assez facile de refuser de s'exécuter sous valgrind avec le bit setuid, montrant ainsi un message utile pour que les gens le tournent off s'ils le veulent vraiment.
Parfois, c'est tout simplement pas possible :) –
Cela se produit même quand les choses étaient Exécuter en tant qu'utilisateur root :) Le meilleur moyen est de changer les perms pour supprimer "s", et exécutez –