Отслеживать вызовы sigprocmask с помощью Syscall User Dispatch?Linux

Ответить
Anonymous
 Отслеживать вызовы sigprocmask с помощью Syscall User Dispatch?

Сообщение Anonymous »

Я использую prctl(PR_SET_SYSCALL_USER_DISPATCH, ...), чтобы включить диспетчеризацию пользователей системных вызовов с помощью обработчика SIGSYS, который вызывается, когда приложение выдает какой-либо системный вызов. Вызов prctl() также помечает область кода, включающую обработчик SIGSYS, как исключенную из перенаправления системных вызовов.
Обработчик SIGSYS вызывает системный вызов, который изначально был выполнен приложением, и сохраняет результат системного вызова в полученном им массиве uc_mcontext.gregs. Это не работает для таких системных вызовов, как rt_sigprocmask, потому что когда обработчик SIGSYS возвращается, sa_restorer восстанавливает маску сигнала приложения, существовавшую до системного вызова rt_sigprocmask, отменяя любые изменения, сделанные обработчиком SIGSYS.
Есть ли способ сохранить изменения в маске сигнала после SIGSYS обработчик возвращает управление приложению?
Предназначены ли системные вызовы rt_sigprocmask для другого мониторинга?

Подробнее здесь: https://stackoverflow.com/questions/798 ... r-dispatch
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»