то, как я выполняю valgrind к процессу, который имеет суперпользователь, обдумало?

Некоторые протесты об использовании LINQ к SQL:

Microsoft действительно уничтожила LINQ к SQL?

LINQ к DOA SQL?

существуют также [приблизительно 112] противоречие о первой версии Платформа Объекта , включая прошение .

10
задан Douglas Leeder 9 November 2009 в 15:36
поделиться

4 ответа

Это постоянная проблема для людей, которые разрабатывают файловые системы 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, показывая полезное сообщение для людей, которые могут выключить , если они действительно этого хотят.

3
ответ дан 4 December 2019 в 03:39
поделиться

Я полагаю, что самым простым ответом будет удаление битов setuid / setgid во время отладки. Конечно, если программе действительно нужны привилегии root, вам, вероятно, придется запускать valgrind как root, или, поскольку сам valgrind кажется установленным, просто выберите его как root: root. Если вы запустите valgrind после этого, он будет иметь права root (как и дочерние - отлаженные процессы).

После этого вы сможете запустить valgrind в этом приложении.

Просто будьте осторожны, потому что вы будете вводить БОЛЬШАЯ дыра в безопасности вашей системы. Более безопасным решением было бы создать специальную группу только для пользователей, которые должны иметь возможность запускать (setuid) valgrind и переходить оттуда ...

3
ответ дан 4 December 2019 в 03:39
поделиться

Запустите команду valgrind от имени пользователя root (или любого другого пользователя set-uid), тогда программе не придется использовать установку uid.

-2
ответ дан 4 December 2019 в 03:39
поделиться

Я предполагаю, что вы пробовали запустить его с --trace-children = no? Если у вас есть root-доступ, похоже, есть обходной путь здесь .

1
ответ дан 4 December 2019 в 03:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: