diff options
Diffstat (limited to 'po/ru/man2/ptrace.2.po')
-rw-r--r-- | po/ru/man2/ptrace.2.po | 4959 |
1 files changed, 4959 insertions, 0 deletions
diff --git a/po/ru/man2/ptrace.2.po b/po/ru/man2/ptrace.2.po new file mode 100644 index 00000000..e0c35c23 --- /dev/null +++ b/po/ru/man2/ptrace.2.po @@ -0,0 +1,4959 @@ +# Russian translation of manpages +# This file is distributed under the same license as the manpages-l10n package. +# Copyright © of this file: +# Alexey, 2016. +# Azamat Hackimov <azamat.hackimov@gmail.com>, 2014-2017. +# kogamatranslator49 <r.podarov@yandex.ru>, 2015. +# Kogan, Darima <silverdk99@gmail.com>, 2014. +# Max Is <ismax799@gmail.com>, 2016. +# Yuri Kozlov <yuray@komyakino.ru>, 2011-2019. +# Иван Павлов <pavia00@gmail.com>, 2017. +msgid "" +msgstr "" +"Project-Id-Version: manpages-l10n\n" +"POT-Creation-Date: 2024-03-01 17:05+0100\n" +"PO-Revision-Date: 2019-10-12 08:58+0300\n" +"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" +"Language-Team: Russian <man-pages-ru-talks@lists.sourceforge.net>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" +"X-Generator: Lokalize 2.0\n" + +#. type: TH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace" +msgstr "ptrace" + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "2023-10-31" +msgstr "31 октября 2023 г." + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "Linux man-pages 6.06" +msgstr "Linux man-pages 6.06" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NAME" +msgstr "ИМЯ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "ptrace - process trace" +msgstr "ptrace - трассировка процесса" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "LIBRARY" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Standard C library (I<libc>, I<-lc>)" +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "SYNOPSIS" +msgstr "СИНТАКСИС" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n" +msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<,>\n" +"B< void *>I<addr>B<, void *>I<data>B<);>\n" +msgstr "" +"B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<,>\n" +"B< void *>I<addr>B<, void *>I<data>B<);>\n" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "DESCRIPTION" +msgstr "ОПИСАНИЕ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<ptrace>() system call provides a means by which one process (the " +"\"tracer\") may observe and control the execution of another process (the " +"\"tracee\"), and examine and change the tracee's memory and registers. It " +"is primarily used to implement breakpoint debugging and system call tracing." +msgstr "" +"Системный вызов B<ptrace>() позволяет указать какому процессу " +"(«трассировщику») можно наблюдать и контролировать выполнение другого " +"процесса («трассироемого»), просматривать и изменять его память и регистры. " +"Обычно, он используется для реализации отладочных точек прерывания и для " +"отслеживания системных вызовов." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A tracee first needs to be attached to the tracer. Attachment and " +"subsequent commands are per thread: in a multithreaded process, every thread " +"can be individually attached to a (potentially different) tracer, or left " +"not attached and thus not debugged. Therefore, \"tracee\" always means " +"\"(one) thread\", never \"a (possibly multithreaded) process\". Ptrace " +"commands are always sent to a specific tracee using a call of the form" +msgstr "" +"Сначала, трассировщик должен присоединиться к трассируемой нити. " +"Присоединение и последующие команды выполняются для нитей: в многонитевом " +"процессе трассировщик может подключаться как к каждой нити (трассировщики " +"могут быть у разных нитей разными), так и не подключаться к некоторым нитям " +"вовсе. Поэтому на самом деле «трассируемая нить» всегда означает «(одну) " +"нить», а не «процесс в целом (возможно многонитевой)». Команды ptrace всегда " +"посылаются определённой трассируемой нити с помощью вызова" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(PTRACE_foo, pid, ...)\n" +msgstr "ptrace(PTRACE_foo, pid, …)\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "where I<pid> is the thread ID of the corresponding Linux thread." +msgstr "где I<pid> — идентификатор соответствующей нити Linux." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"(Note that in this page, a \"multithreaded process\" means a thread group " +"consisting of threads created using the B<clone>(2) B<CLONE_THREAD> flag.)" +msgstr "" +"Заметим, что в этой странице «многонитевой процесс» означает группу нитей, " +"состоящую из нитей, созданных с помощью B<clone>(2) с флагом B<CLONE_THREAD>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A process can initiate a trace by calling B<fork>(2) and having the " +"resulting child do a B<PTRACE_TRACEME>, followed (typically) by an " +"B<execve>(2). Alternatively, one process may commence tracing another " +"process using B<PTRACE_ATTACH> or B<PTRACE_SEIZE>." +msgstr "" +"Процесс может начать трассировку с вызова B<fork>(2), в получившемся " +"дочернем процессе выполнить действие B<PTRACE_TRACEME>, после чего (обычно) " +"выполнить B<execve>(2). Или же один процесс может начать отладку другого " +"процесса при помощи B<PTRACE_ATTACH> или B<PTRACE_SEIZE>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"While being traced, the tracee will stop each time a signal is delivered, " +"even if the signal is being ignored. (An exception is B<SIGKILL>, which has " +"its usual effect.) The tracer will be notified at its next call to " +"B<waitpid>(2) (or one of the related \"wait\" system calls); that call will " +"return a I<status> value containing information that indicates the cause of " +"the stop in the tracee. While the tracee is stopped, the tracer can use " +"various ptrace requests to inspect and modify the tracee. The tracer then " +"causes the tracee to continue, optionally ignoring the delivered signal (or " +"even delivering a different signal instead)." +msgstr "" +"При трассировке трассируемая нить останавливается каждый раз при получении " +"сигнала, даже если этот сигнал игнорируется (исключением является " +"B<SIGKILL>, работающий обычным образом). Трассировщик будет уведомлён об " +"этом при следующем вызове B<waitpid>(2) (или подобном «ожидающем» системном " +"вызове); этот вызов вернёт значение I<status>, в котором содержится " +"информация, указывающая на причину остановки трассируемой нити. Так как " +"трассируемая нить остановлена, трассировщик может использовать различные " +"запросы ptrace для обследования и изменения трассируемой нити. По окончании " +"трассировщик разрешает трассируемой нити продолжить работу, возможно " +"подавляя посылаемый ему сигнал (или даже отправляя вместо него другой " +"сигнал)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls " +"to B<execve>(2) by the traced process will cause it to be sent a B<SIGTRAP> " +"signal, giving the parent a chance to gain control before the new program " +"begins execution." +msgstr "" +"Если флаг B<PTRACE_O_TRACEEXEC> не действует, то все успешные вызовы " +"B<execve>(2) трассируемой нитью будут приводить к отправки сигнала " +"B<SIGTRAP>, давая таким образом родителю шанс перехватить управление до " +"того, как начнёт выполняться новая программа." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When the tracer is finished tracing, it can cause the tracee to continue " +"executing in a normal, untraced mode via B<PTRACE_DETACH>." +msgstr "" +"По окончании трассировки трассировщик может заставить трассируемую нить " +"продолжить свою работу в обычном не трассируемом режиме с помощью " +"B<PTRACE_DETACH>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The value of I<request> determines the action to be performed:" +msgstr "Значение аргумента I<request> определяет выполняемое действие:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_TRACEME>" +msgstr "B<PTRACE_TRACEME>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Indicate that this process is to be traced by its parent. A process " +"probably shouldn't make this request if its parent isn't expecting to trace " +"it. (I<pid>, I<addr>, and I<data> are ignored.)" +msgstr "" +"Указывает, что этот процесс будет трассирован своим родительским процессом. " +"Вероятно, процессу не следует посылать этот запрос, если родительский " +"процесс не готов к трассировке (аргументы I<pid>, I<addr> и I<data> " +"игнорируются)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<PTRACE_TRACEME> request is used only by the tracee; the remaining " +"requests are used only by the tracer. In the following requests, I<pid> " +"specifies the thread ID of the tracee to be acted on. For requests other " +"than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT>, and " +"B<PTRACE_KILL>, the tracee must be stopped." +msgstr "" +"Действие B<PTRACE_TRACEME> используется только в трассируемой нити; " +"остальные действия предназначены только для трассировщика. Для значений, " +"описанных ниже, в параметре I<pid> задаётся идентификатор трассируемой нити, " +"над которой будет производиться действие. Перед выполнением действий (кроме " +"B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> и B<PTRACE_KILL>) " +"трассируемая нить должна быть остановлена." + +#. type: TP +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_EVENT_EXIT>" +msgid "B<PTRACE_PEEKTEXT>" +msgstr "B<PTRACE_EVENT_EXIT>" + +#. type: TQ +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_PEEKUSER>" +msgid "B<PTRACE_PEEKDATA>" +msgstr "B<PTRACE_PEEKUSER>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Read a word at the address I<addr> in the tracee's memory, returning the " +"word as the result of the B<ptrace>() call. Linux does not have separate " +"text and data address spaces, so these two requests are currently " +"equivalent. (I<data> is ignored; but see NOTES.)" +msgstr "" +"Читает слово по адресу I<addr>, находящееся в памяти трассируемой нити, " +"возвращая это слово как результат вызова B<ptrace>() Linux не разделяет " +"адресные пространства текста и данных, поэтому оба вызова абсолютно " +"идентичны (значение I<data> игнорируется; но смотрите ЗАМЕЧАНИЯ)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_PEEKUSER>" +msgstr "B<PTRACE_PEEKUSER>" + +#. PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER, +#. and that is the name that seems common on other systems. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Read a word at offset I<addr> in the tracee's USER area, which holds the " +"registers and other information about the process (see I<E<lt>sys/user." +"hE<gt>>). The word is returned as the result of the B<ptrace>() call. " +"Typically, the offset must be word-aligned, though this might vary by " +"architecture. See NOTES. (I<data> is ignored; but see NOTES.)" +msgstr "" +"Читает слово по смещению I<addr> из области USER трассируемой нити, которая " +"содержит информацию о регистрах и процессе (смотрите I<E<lt>sys/" +"userhE<gt>>). Слово возвращается в качестве результата вызова B<ptrace>(). " +"Обычно, смещение должно быть выровнено по границе слова, хотя это может " +"зависеть от архитектуры системы. Смотрите ЗАМЕЧАНИЯ (значение I<data> " +"игнорируется; но смотрите ЗАМЕЧАНИЯ)." + +#. type: TP +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_POKEUSER>" +msgid "B<PTRACE_POKETEXT>" +msgstr "B<PTRACE_POKEUSER>" + +#. type: TQ +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_POKEUSER>" +msgid "B<PTRACE_POKEDATA>" +msgstr "B<PTRACE_POKEUSER>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Copy the word I<data> to the address I<addr> in the tracee's memory. As for " +"B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently " +"equivalent." +msgstr "" +"Копирует слово I<data> в память трассируемой нити по адресу I<addr>. В " +"настоящее время, как и для B<PTRACE_PEEKTEXT> и B<PTRACE_PEEKDATA>, эти два " +"действия одинаковы." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_POKEUSER>" +msgstr "B<PTRACE_POKEUSER>" + +#. PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER, +#. and that is the name that seems common on other systems. +#. FIXME In the preceding sentence, which modifications are disallowed, +#. and when they are disallowed, how does user space discover that fact? +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Copy the word I<data> to offset I<addr> in the tracee's USER area. As for " +"B<PTRACE_PEEKUSER>, the offset must typically be word-aligned. In order to " +"maintain the integrity of the kernel, some modifications to the USER area " +"are disallowed." +msgstr "" +"Копирует слово I<data> по смещению I<addr> в область USER трассирумой нити. " +"Как и для B<PTRACE_PEEKUSER>, смещение должно быть выровнено по границе " +"слова. Для того, чтобы сохранить целостность ядра, некоторые изменения в " +"область USER вносить запрещено." + +#. type: TP +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_TRACEME>" +msgid "B<PTRACE_GETREGS>" +msgstr "B<PTRACE_TRACEME>" + +#. type: TQ +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_MODE_FSCREDS>" +msgid "B<PTRACE_GETFPREGS>" +msgstr "B<PTRACE_MODE_FSCREDS>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Copy the tracee's general-purpose or floating-point registers, respectively, " +"to the address I<data> in the tracer. See I<E<lt>sys/user.hE<gt>> for " +"information on the format of this data. (I<addr> is ignored.) Note that " +"SPARC systems have the meaning of I<data> and I<addr> reversed; that is, " +"I<data> is ignored and the registers are copied to the address I<addr>. " +"B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all " +"architectures." +msgstr "" +"Копирует, соответственно, регистры общего назначения или регистры " +"сопроцессора трассируемой нити в память трассировщика по адресу I<data>. " +"Формат передаваемой структуры описан в файле I<E<lt>sys/user.hE<gt>> " +"(значение I<addr> игнорируется). Заметим, что в системах SPARC " +"предназначение I<data> и I<addr> поменяны местами; то есть I<data> " +"игнорируется, а регистры копируются по адресу I<addr>. B<PTRACE_GETREGS> и " +"B<PTRACE_GETFPREGS> есть не на всех архитектурах." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)" +msgstr "B<PTRACE_GETREGSET> (начиная с Linux 2.6.34)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Read the tracee's registers. I<addr> specifies, in an architecture-" +"dependent way, the type of registers to be read. B<NT_PRSTATUS> (with " +"numerical value 1) usually results in reading of general-purpose " +"registers. If the CPU has, for example, floating-point and/or vector " +"registers, they can be retrieved by setting I<addr> to the corresponding " +"B<NT_foo> constant. I<data> points to a B<struct iovec>, which describes " +"the destination buffer's location and length. On return, the kernel " +"modifies B<iov.len> to indicate the actual number of bytes returned." +msgstr "" +"Читает регистры трассируемой нити. В I<addr> указывается, в зависящей от " +"архитектуры форме, тип читаемых регистров. Значение B<NT_PRSTATUS> (равно 1) " +"обычно служит для чтения регистров общего назначения. Если в ЦП есть, " +"например, векторные регистры и для плавающей запятой, то их можно получить " +"назначив I<addr> соответствующую константу B<NT_foo>. Значение I<data> " +"указывает на B<struct iovec>, которая описывает расположение буфера " +"назначения и длину. При возврате ядро изменяет B<iov.len>, возвращая " +"реальное количество возвращаемых байт." + +#. type: TP +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_TRACEME>" +msgid "B<PTRACE_SETREGS>" +msgstr "B<PTRACE_TRACEME>" + +#. type: TQ +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_MODE_FSCREDS>" +msgid "B<PTRACE_SETFPREGS>" +msgstr "B<PTRACE_MODE_FSCREDS>" + +#. FIXME . In the preceding sentence, which modifications are disallowed, +#. and when they are disallowed, how does user space discover that fact? +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Modify the tracee's general-purpose or floating-point registers, " +"respectively, from the address I<data> in the tracer. As for " +"B<PTRACE_POKEUSER>, some general-purpose register modifications may be " +"disallowed. (I<addr> is ignored.) Note that SPARC systems have the meaning " +"of I<data> and I<addr> reversed; that is, I<data> is ignored and the " +"registers are copied from the address I<addr>. B<PTRACE_SETREGS> and " +"B<PTRACE_SETFPREGS> are not present on all architectures." +msgstr "" +"Копирует, соответственно, регистры общего назначения или регистры для " +"плавающей запятой трассируемой нити из памяти трассировщика по адресу " +"I<data>. Как и в случае c B<PTRACE_POKEUSER>, изменения некоторых регистров " +"общего назначения запрещены (значение I<addr> игнорируется). Заметим, что в " +"системах SPARC предназначение I<data> и I<addr> переставлены местами; то " +"есть I<data> игнорируется, а регистры копируются из памяти, на которую " +"указывает адрес I<addr>. B<PTRACE_SETREGS> и B<PTRACE_SETFPREGS> есть не для " +"всех архитектур." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)" +msgstr "B<PTRACE_SETREGSET> (начиная с Linux 2.6.34)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Modify the tracee's registers. The meaning of I<addr> and I<data> is " +"analogous to B<PTRACE_GETREGSET>." +msgstr "" +"Изменяет регистры трассируемой нити. Значение I<addr> и I<data> аналогичны " +"B<PTRACE_GETREGSET>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)" +msgstr "B<PTRACE_GETSIGINFO> (начиная с Linux 2.3.99-pre6)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Retrieve information about the signal that caused the stop. Copy a " +"I<siginfo_t> structure (see B<sigaction>(2)) from the tracee to the address " +"I<data> in the tracer. (I<addr> is ignored.)" +msgstr "" +"Получает информацию о сигнале, который вызвал остановку. Копирует структуру " +"I<siginfo_t> (смотрите B<sigaction>(2)) из трассируемой нити в память " +"трассировщика по адресу I<data> (значение I<addr> игнорируется)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)" +msgstr "B<PTRACE_SETSIGINFO> (начиная с Linux 2.3.99-pre6)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Set signal information: copy a I<siginfo_t> structure from the address " +"I<data> in the tracer to the tracee. This will affect only signals that " +"would normally be delivered to the tracee and were caught by the tracer. It " +"may be difficult to tell these normal signals from synthetic signals " +"generated by B<ptrace>() itself. (I<addr> is ignored.)" +msgstr "" +"Устанавливает информацию о сигнале. Копирует структуру I<siginfo_t>, " +"расположенную по адресу I<data> трассировщика, в память трассируемой нити. " +"Влияет только на сигналы, которые обычно были бы доставлены трассируемой " +"нити и были пойманы трассировщиком. Затруднительно отличить обычные сигналы " +"от созданных самим B<ptrace>() (значение I<addr> игнорируется)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_PEEKSIGINFO> (since Linux 3.10)" +msgstr "B<PTRACE_PEEKSIGINFO> (начиная с Linux 3.10)" + +#. commit 84c751bd4aebbaae995fe32279d3dba48327bad4 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Retrieve I<siginfo_t> structures without removing signals from a queue. " +"I<addr> points to a I<ptrace_peeksiginfo_args> structure that specifies the " +"ordinal position from which copying of signals should start, and the number " +"of signals to copy. I<siginfo_t> structures are copied into the buffer " +"pointed to by I<data>. The return value contains the number of copied " +"signals (zero indicates that there is no signal corresponding to the " +"specified ordinal position). Within the returned I<siginfo> structures, the " +"I<si_code> field includes information (B<__SI_CHLD>, B<__SI_FAULT>, etc.) " +"that are not otherwise exposed to user space." +msgstr "" +"Получает структуры I<siginfo_t> не удаляя сигналы из очереди. Значение " +"I<addr> указывает на структуру I<ptrace_peeksiginfo_args>, которая задаёт " +"начальную позицию, из которой нужно начать копирование сигналов, а также их " +"количество. Структуры I<siginfo_t> копируются в буфер, указываемый в " +"I<data>. Возвращаемое значение содержит количество скопированных сигналов " +"(ноль означает, что сигналов в указанной позиции нет). Внутри возвращаемых " +"структур I<siginfo> в поле I<si_code> включается информация (B<__SI_CHLD>, " +"B<__SI_FAULT> и т. д.), которая по-другому никак не выдаётся в " +"пользовательское пространство." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"struct ptrace_peeksiginfo_args {\n" +" u64 off; /* Ordinal position in queue at which\n" +" to start copying signals */\n" +" u32 flags; /* PTRACE_PEEKSIGINFO_SHARED or 0 */\n" +" s32 nr; /* Number of signals to copy */\n" +"};\n" +msgstr "" +"struct ptrace_peeksiginfo_args {\n" +" u64 off; /* начальная позиция в очереди, с которой\n" +" начинается копирование сигналов */\n" +" u32 flags; /* PTRACE_PEEKSIGINFO_SHARED или 0 */\n" +" s32 nr; /* количество копируемых сигналов */\n" +"};\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Currently, there is only one flag, B<PTRACE_PEEKSIGINFO_SHARED>, for dumping " +"signals from the process-wide signal queue. If this flag is not set, " +"signals are read from the per-thread queue of the specified thread." +msgstr "" +"В настоящее время определён только один флаг, B<PTRACE_PEEKSIGINFO_SHARED>, " +"служащий для выборки сигналов из общей очереди сигналов процессов. Если этот " +"флаг не указан, то сигналы читаются из очереди указанной нити." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_GETSIGMASK> (since Linux 3.11)" +msgstr "B<PTRACE_GETSIGMASK> (начиная с Linux 3.11)" + +#. commit 29000caecbe87b6b66f144f72111f0d02fbbf0c1 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Place a copy of the mask of blocked signals (see B<sigprocmask>(2)) in the " +"buffer pointed to by I<data>, which should be a pointer to a buffer of type " +"I<sigset_t>. The I<addr> argument contains the size of the buffer pointed " +"to by I<data> (i.e., I<sizeof(sigset_t)>)." +msgstr "" +"Помещает копию маски блокированных сигналов (смотрите B<sigprocmask>(2)) в " +"буфер, указанный в I<data> (должен быть указателем на буфер с типом " +"I<sigset_t>). Аргумент I<addr> содержит размер буфера, указанного в I<data> " +"(т. е. I<sizeof(sigset_t)>)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SETSIGMASK> (since Linux 3.11)" +msgstr "B<PTRACE_SETSIGMASK> (начиная с Linux 3.11)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Change the mask of blocked signals (see B<sigprocmask>(2)) to the value " +"specified in the buffer pointed to by I<data>, which should be a pointer to " +"a buffer of type I<sigset_t>. The I<addr> argument contains the size of the " +"buffer pointed to by I<data> (i.e., I<sizeof(sigset_t)>)." +msgstr "" +"Изменяет маску блокированных сигналов (смотрите B<sigprocmask>(2)) на " +"значение из буфера, указанного в I<data> (должен быть указателем на буфер с " +"типом I<sigset_t>). Аргумент I<addr> содержит размер буфера, указанного в " +"I<data> (т. е. I<sizeof(sigset_t)>)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)" +msgstr "B<PTRACE_SETOPTIONS> (начиная с Linux 2.4.6; см. предостережения в разделе ДЕФЕКТЫ)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Set ptrace options from I<data>. (I<addr> is ignored.) I<data> is " +"interpreted as a bit mask of options, which are specified by the following " +"flags:" +msgstr "" +"Устанавливает флаги ptrace из I<data> (значение I<addr> игнорируется). " +"Значение I<data> воспринимается как битовая маска, в которой задаются " +"следующие флаги:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)" +msgstr "B<PTRACE_O_EXITKILL> (начиная с Linux 3.8)" + +#. commit 992fb6e170639b0849bace8e49bf31bd37c4123 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Send a B<SIGKILL> signal to the tracee if the tracer exits. This option is " +"useful for ptrace jailers that want to ensure that tracees can never escape " +"the tracer's control." +msgstr "" +"Посылать сигнал B<SIGKILL> трассируемому, если трассировщик существует. Этот " +"параметр полезен для надзирателей ptrace, которые хотят убедиться, что " +"трассируемые никогда не выйдут из-под контроля трассировщика." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)" +msgstr "B<PTRACE_O_TRACECLONE> (начиная с Linux 2.5.46)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop the tracee at the next B<clone>(2) and automatically start tracing the " +"newly cloned process, which will start with a B<SIGSTOP>, or " +"B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used. A B<waitpid>(2) by the " +"tracer will return a I<status> value such that" +msgstr "" +"Останавливать трассируемую нить при следующем вызове B<clone>(2) и " +"автоматически запускать трассировку только что склонированного процесса, " +"который начнёт выполнение с обработки сигнала B<SIGSTOP> или " +"B<PTRACE_EVENT_STOP>, если используется B<PTRACE_SEIZE>. Вызов B<waitpid>(2) " +"вернёт трассировщику значение I<status>, которое равно" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n" +msgstr " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>." +msgstr "" +"Значение PID нового процесса можно получить с помощью B<PTRACE_GETEVENTMSG>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This option may not catch B<clone>(2) calls in all cases. If the tracee " +"calls B<clone>(2) with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will " +"be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the " +"tracee calls B<clone>(2) with the exit signal set to B<SIGCHLD>, " +"B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set." +msgstr "" +"В некоторых случаях вызовы B<clone>(2) могут быть не пойманы. Если " +"трассируемая нить вызывает B<clone>(2) с флагом B<CLONE_VFORK>, то будет " +"доставлен B<PTRACE_EVENT_VFORK>, если установлен B<PTRACE_O_TRACEVFORK>; в " +"противном случае, если трассируемая нить вызывает B<clone>(2) с " +"установленным сигналом выхода равным B<SIGCHLD>, то будет доставлен " +"B<PTRACE_EVENT_FORK>, если установлен B<PTRACE_O_TRACEFORK>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)" +msgstr "B<PTRACE_O_TRACEEXEC> (начиная с Linux 2.5.46)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop the tracee at the next B<execve>(2). A B<waitpid>(2) by the tracer " +"will return a I<status> value such that" +msgstr "" +"Останавливать трассируемую нить при следующем вызове B<execve>(). Вызов " +"B<waitpid>(2) вернёт трассировщику значение I<status>, которое равно" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n" +msgstr " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the execing thread is not a thread group leader, the thread ID is reset " +"to thread group leader's ID before this stop. Since Linux 3.0, the former " +"thread ID can be retrieved with B<PTRACE_GETEVENTMSG>." +msgstr "" +"Если исполняемая нить не является лидером группы нитей, то идентификатор " +"нити сбрасывается в значение идентификатора лидера группы нитей перед его " +"остановкой. Начиная с Linux 3.0, предыдущий идентификатор нити может быть " +"получен с помощью B<PTRACE_GETEVENTMSG>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)" +msgstr "B<PTRACE_O_TRACEEXIT> (начиная с Linux 2.5.60)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop the tracee at exit. A B<waitpid>(2) by the tracer will return a " +"I<status> value such that" +msgstr "" +"Останавливать трассируемую нить при его завершении (exit). Вызов " +"B<waitpid>() вернёт трассировщику значение I<status>, которое равно" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n" +msgstr " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>." +msgstr "" +"Значение кода завершения трассируемой нити можно получить с помощью " +"B<PTRACE_GETEVENTMSG>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The tracee is stopped early during process exit, when registers are still " +"available, allowing the tracer to see where the exit occurred, whereas the " +"normal exit notification is done after the process is finished exiting. " +"Even though context is available, the tracer cannot prevent the exit from " +"happening at this point." +msgstr "" +"Остановка трассируемой нити будет выполнена в начальный момент завершения, " +"когда ещё доступны регистры, что позволяет трассировщику увидеть откуда " +"выполнялось завершение (обычное уведомление о завершении выполняется после " +"того как процесс уже завершил работу). Хотя в этот момент ещё доступен " +"контекст, трассировщик уже не может предотвратить завершение." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)" +msgstr "B<PTRACE_O_TRACEFORK> (начиная с Linux 2.5.46)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop the tracee at the next B<fork>(2) and automatically start tracing the " +"newly forked process, which will start with a B<SIGSTOP>, or " +"B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used. A B<waitpid>(2) by the " +"tracer will return a I<status> value such that" +msgstr "" +"Останавливать трассируемую нить при следующем вызове B<fork>(2) и " +"автоматически запускать трассировку только что созданного с помощью fork " +"процесса, который начнёт выполнение с обработки сигнала B<SIGSTOP> или " +"B<PTRACE_EVENT_STOP>, если используется B<PTRACE_SEIZE>. Вызов B<waitpid>(2) " +"вернёт трассировщику значение I<status>, которое равно" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n" +msgstr " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)" +msgstr "B<PTRACE_O_TRACESYSGOOD> (начиная с Linux 2.4.6)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When delivering system call traps, set bit 7 in the signal number (i.e., " +"deliver I<SIGTRAP|0x80>). This makes it easy for the tracer to distinguish " +"normal traps from those caused by a system call." +msgstr "" +"При доставке сигналов ловушек системных вызовов, устанавливать бит 7 в " +"номере сигнала (т. е., доставляется I<SIGTRAP|0x80>). Это позволяет " +"трассировщику легко отличить обычные ловушки от тех, которые были вызваны " +"системным вызовом." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)" +msgstr "B<PTRACE_O_TRACEVFORK> (начиная с Linux 2.5.46)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop the tracee at the next B<vfork>(2) and automatically start tracing the " +"newly vforked process, which will start with a B<SIGSTOP>, or " +"B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used. A B<waitpid>(2) by the " +"tracer will return a I<status> value such that" +msgstr "" +"Останавливать трассируемую нить при следующем вызове B<vfork>(2) и " +"автоматически запускать трассировку только что созданного с помощью vfork " +"процесса, который начнёт выполнение с обработки сигнала B<SIGSTOP> или " +"B<PTRACE_EVENT_STOP>, если используется B<PTRACE_SEIZE>. Вызов B<waitpid>(2) " +"вернёт трассировщику значение I<status>, которое равно" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n" +msgstr " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)" +msgstr "B<PTRACE_O_TRACEVFORKDONE> (начиная с Linux 2.5.60)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop the tracee at the completion of the next B<vfork>(2). A B<waitpid>(2) " +"by the tracer will return a I<status> value such that" +msgstr "" +"Останавливать трассируемую нить при следующем вызове B<vfork>(2). Вызов " +"B<waitpid>(2) вернёт трассировщику значение I<status>, которое равно" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n" +msgstr " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The PID of the new process can (since Linux 2.6.18) be retrieved with " +"B<PTRACE_GETEVENTMSG>." +msgstr "" +"Значение PID нового процесса можно получить (начиная с Linux 2.6.18) с " +"помощью B<PTRACE_GETEVENTMSG>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_TRACESECCOMP> (since Linux 3.5)" +msgstr "B<PTRACE_O_TRACESECCOMP> (начиная с Linux 3.5)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop the tracee when a B<seccomp>(2) B<SECCOMP_RET_TRACE> rule is " +"triggered. A B<waitpid>(2) by the tracer will return a I<status> value " +"such that" +msgstr "" +"Останавливать трассируемую нить при возникновении правила B<seccomp>(2) " +"B<SECCOMP_RET_TRACE>. Вызов B<waitpid>(2) вернёт трассировщику значение " +"I<status>, которое равно" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_SECCOMPE<lt>E<lt>8))\n" +msgstr " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_SECCOMPE<lt>E<lt>8))\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"While this triggers a B<PTRACE_EVENT> stop, it is similar to a syscall-enter-" +"stop. For details, see the note on B<PTRACE_EVENT_SECCOMP> below. The " +"seccomp event message data (from the B<SECCOMP_RET_DATA> portion of the " +"seccomp filter rule) can be retrieved with B<PTRACE_GETEVENTMSG>." +msgstr "" +"Так как это останавливает B<PTRACE_EVENT>, это похоже на syscall-enter-stop. " +"Дополнительную информацию смотрите в замечании к B<PTRACE_EVENT_SECCOMP> " +"ниже. Данные сообщения события seccomp (из части B<SECCOMP_RET_DATA> правила " +"фильтрации seccomp) можно получить с помощью B<PTRACE_GETEVENTMSG>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_O_SUSPEND_SECCOMP> (since Linux 4.3)" +msgstr "B<PTRACE_O_SUSPEND_SECCOMP> (начиная с Linux 4.3)" + +#. commit 13c4a90119d28cfcb6b5bdd820c233b86c2b0237 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Suspend the tracee's seccomp protections. This applies regardless of mode, " +"and can be used when the tracee has not yet installed seccomp filters. That " +"is, a valid use case is to suspend a tracee's seccomp protections before " +"they are installed by the tracee, let the tracee install the filters, and " +"then clear this flag when the filters should be resumed. Setting this " +"option requires that the tracer have the B<CAP_SYS_ADMIN> capability, not " +"have any seccomp protections installed, and not have " +"B<PTRACE_O_SUSPEND_SECCOMP> set on itself." +msgstr "" +"Приостановить защиты seccomp трассируемого. Это применяется независимо от " +"режима и может быть использовано когда трассируемый ещё не установил фильтры " +"seccomp. То есть, корректным действием будет приостановка защит seccomp " +"трассируемого, до того как их установит трассируемый, позволить " +"трассируемому установить фильтры, и затем очистить этот флаг, когда нужно " +"возобновить работу фильтров. Установка этого параметра требует, чтобы " +"трассировщик имел мандат B<CAP_SYS_ADMIN>, не было установлено никаких защит " +"seccomp и не установлен сам B<PTRACE_O_SUSPEND_SECCOMP>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)" +msgstr "B<PTRACE_GETEVENTMSG> (начиная с Linux 2.5.46)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Retrieve a message (as an I<unsigned long>) about the ptrace event that " +"just happened, placing it at the address I<data> in the tracer. For " +"B<PTRACE_EVENT_EXIT>, this is the tracee's exit status. For " +"B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and " +"B<PTRACE_EVENT_CLONE>, this is the PID of the new process. For " +"B<PTRACE_EVENT_SECCOMP>, this is the B<seccomp>(2) filter's " +"B<SECCOMP_RET_DATA> associated with the triggered rule. (I<addr> is " +"ignored.)" +msgstr "" +"Возвращает сообщения (с типом I<unsigned long>) о событии ptrace, которое " +"только что произошло, помещая его по адресу I<data> в памяти трассировщика. " +"Для B<PTRACE_EVENT_EXIT> это код завершения трассируемой нити. Для " +"B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE> и " +"B<PTRACE_EVENT_CLONE> это PID нового процесса. Для B<PTRACE_EVENT_SECCOMP> " +"это B<SECCOMP_RET_DATA> из фильтра B<seccomp>(2), связанного со сработавшим " +"правилом (значение I<addr> игнорируется)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_CONT>" +msgstr "B<PTRACE_CONT>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Restart the stopped tracee process. If I<data> is nonzero, it is " +"interpreted as the number of a signal to be delivered to the tracee; " +"otherwise, no signal is delivered. Thus, for example, the tracer can " +"control whether a signal sent to the tracee is delivered or not. (I<addr> " +"is ignored.)" +msgstr "" +"Возобновляет работу остановленной трассируемой нити. Если значение I<data> " +"не равно нулю, то оно считается номером сигнала, который надо доставить " +"трассируемой нити; в противном случае сигнал не передаётся. Таким образом, " +"например, трассировщик может контролировать передачу сигнала трассируемой " +"нити (значение I<addr> игнорируется)." + +#. type: TP +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_KILL>" +msgid "B<PTRACE_SYSCALL>" +msgstr "B<PTRACE_KILL>" + +#. type: TQ +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "PTRACE_SINGLESTEP stops" +msgid "B<PTRACE_SINGLESTEP>" +msgstr "Остановки PTRACE_SINGLESTEP" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee " +"to be stopped at the next entry to or exit from a system call, or after " +"execution of a single instruction, respectively. (The tracee will also, as " +"usual, be stopped upon receipt of a signal.) From the tracer's perspective, " +"the tracee will appear to have been stopped by receipt of a B<SIGTRAP>. So, " +"for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to " +"the system call at the first stop, then do another B<PTRACE_SYSCALL> and " +"inspect the return value of the system call at the second stop. The I<data> " +"argument is treated as for B<PTRACE_CONT>. (I<addr> is ignored.)" +msgstr "" +"Аналогично B<PTRACE_CONT> они перезапускают остановленную трассируемую нить, " +"но указывают, что процесс должен быть остановлен перед входом/выходом из " +"системного вызова, или после исполнения одной инструкции, соответственно " +"(трассируемая нить также, как обычно, будет остановлена при получении " +"сигнала). С точки зрения трассировщика кажется, что трассируемая нить " +"остановлена из-за получения сигнала B<SIGTRAP>. Так, B<PTRACE_SYSCALL> " +"например, позволяет изучить содержимое аргументов перед системным вызовом, а " +"при следующем B<PTRACE_SYSCALL> можно просмотреть результат исполнения " +"системного вызова. Аргумент I<data> используется как в B<PTRACE_CONT> " +"(значение I<addr> игнорируется)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SET_SYSCALL> (since Linux 2.6.16)" +msgstr "B<PTRACE_SET_SYSCALL> (начиная с Linux 2.6.16)" + +#. commit 3f471126ee53feb5e9b210ea2f525ed3bb9b7a7f +#. As of 4.19-rc2 +#. commit 27aa55c5e5123fa8b8ad0156559d34d7edff58ca +#. see change_syscall in tools/testing/selftests/seccomp/seccomp_bpf.c +#. and also strace's linux/*/set_scno.c files. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When in syscall-enter-stop, change the number of the system call that is " +"about to be executed to the number specified in the I<data> argument. The " +"I<addr> argument is ignored. This request is currently supported only on " +"arm (and arm64, though only for backwards compatibility), but most other " +"architectures have other means of accomplishing this (usually by changing " +"the register that the userland code passed the system call number in)." +msgstr "" + +#. type: TP +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_TRACEME>" +msgid "B<PTRACE_SYSEMU>" +msgstr "B<PTRACE_TRACEME>" + +#. type: TQ +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, fuzzy, no-wrap +#| msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)" +msgid "B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)" +msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (начиная с Linux 2.6.14)" + +#. As at 3.7 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, " +"which will not be executed. See the documentation on syscall-stops below. " +"For B<PTRACE_SYSEMU_SINGLESTEP>, do the same but also singlestep if not a " +"system call. This call is used by programs like User Mode Linux that want " +"to emulate all the tracee's system calls. The I<data> argument is treated " +"as for B<PTRACE_CONT>. The I<addr> argument is ignored. These requests are " +"currently supported only on x86." +msgstr "" +"Действие B<PTRACE_SYSEMU> приводит к продолжению и остановке на входе в " +"следующий системный вызов, который не будет выполнен . Смотрите описание по " +"syscall-stop ниже. Действие B<PTRACE_SYSEMU_SINGLESTEP> выполняет тоже " +"самое, но для одиночной инструкции, если это не системный вызов. Это " +"действие используется программами, подобными User Mode Linux, которым нужно " +"эмулировать все системные вызовы трассируемых нитей. Аргумент I<data> " +"используется также как у B<PTRACE_CONT>. Аргумент I<addr> игнорируется. Эти " +"запросы поддерживаются только на x86." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_LISTEN> (since Linux 3.4)" +msgstr "B<PTRACE_LISTEN> (начиная с Linux 3.4)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Restart the stopped tracee, but prevent it from executing. The resulting " +"state of the tracee is similar to a process which has been stopped by a " +"B<SIGSTOP> (or other stopping signal). See the \"group-stop\" subsection " +"for additional information. B<PTRACE_LISTEN> works only on tracees attached " +"by B<PTRACE_SEIZE>." +msgstr "" +"Перезапускает остановленную трассируемую нить, но её выполнение не " +"начинается. Полученное состояние трассируемой нити подобно процессу, который " +"был остановлен по B<SIGSTOP> (или другим останавливающим сигналом). " +"Дополнительную информацию смотрите в подразделе «group-stop». " +"B<PTRACE_LISTEN> работает только для трассируемых нитей, присоединённых с " +"помощью B<PTRACE_SEIZE>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_KILL>" +msgstr "B<PTRACE_KILL>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Send the tracee a B<SIGKILL> to terminate it. (I<addr> and I<data> are " +"ignored.)" +msgstr "" +"Посылает трассируемой нити сигнал B<SIGKILL> для его уничтожения (значения " +"I<addr> и I<data> игнорируются)." + +#. [Note from Denys Vlasenko: +#. deprecation suggested by Oleg Nesterov. He prefers to deprecate it +#. instead of describing (and needing to support) PTRACE_KILL's quirks.] +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> " +"directly using B<kill>(2) or B<tgkill>(2). The problem with B<PTRACE_KILL> " +"is that it requires the tracee to be in signal-delivery-stop, otherwise it " +"may not work (i.e., may complete successfully but won't kill the tracee). " +"By contrast, sending a B<SIGKILL> directly has no such limitation." +msgstr "" +"I<Это действие устарело; не используйте его!> Вместо него отправляйте " +"B<SIGKILL> напрямую с помощью B<kill>(2) или B<tgkill>(2). Проблема с " +"действием B<PTRACE_KILL> в том, что оно требует, чтобы трассируемая нить " +"была режиме signal-delivery-stop, в противном случае оно может не сработать " +"(т. е., может завершиться без ошибок, но трассируемая нить не будет " +"уничтожена). В отличие от него, отправка B<SIGKILL> напрямую не имеет " +"данного ограничения." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)" +msgstr "B<PTRACE_INTERRUPT> (начиная с Linux 3.4)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop a tracee. If the tracee is running or sleeping in kernel space and " +"B<PTRACE_SYSCALL> is in effect, the system call is interrupted and syscall-" +"exit-stop is reported. (The interrupted system call is restarted when the " +"tracee is restarted.) If the tracee was already stopped by a signal and " +"B<PTRACE_LISTEN> was sent to it, the tracee stops with B<PTRACE_EVENT_STOP> " +"and I<WSTOPSIG(status)> returns the stop signal. If any other ptrace-stop " +"is generated at the same time (for example, if a signal is sent to the " +"tracee), this ptrace-stop happens. If none of the above applies (for " +"example, if the tracee is running in user space), it stops with " +"B<PTRACE_EVENT_STOP> with I<WSTOPSIG(status)> == B<SIGTRAP>. " +"B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>." +msgstr "" +"Остановить трассируемый объект. Если трассируемый объект выполняется или " +"спит в пространстве ядра и действует B<PTRACE_SYSCALL>, то системный вызов " +"прерывается и сообщается о syscall-exit-stop (прерванный системный вызов " +"перезапускается при перезапуске трассируемого объекта). Если трассируемый " +"объект был уже остановлен по сигналу и ему был послан B<PTRACE_LISTEN>, то " +"трассируемый объект останавливается с B<PTRACE_EVENT_STOP> и " +"I<WSTOPSIG(status)> возвращает сигнал остановки. Если в этот же момент " +"генерируется любое другое событие ptrace-stop (например, если трассируемому " +"посылается сигнал), то возникает ptrace-stop. Если ничего из " +"вышеперечисленного не происходит (например, если трассируемый выполняется в " +"пространстве пользователя), то он останавливается с B<PTRACE_EVENT_STOP> и " +"I<WSTOPSIG(status)> == B<SIGTRAP>. B<PTRACE_INTERRUPT> работает только для " +"трассируемых объектов, к которым подключились с помощью B<PTRACE_SEIZE>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_ATTACH>" +msgstr "B<PTRACE_ATTACH>" + +#. No longer true (removed by Denys Vlasenko, 2011, who remarks: +#. "I think it isn't true in non-ancient 2.4 and in Linux 2.6/3.x. +#. Basically, it's not true for any Linux in practical use. +#. ; the behavior of the tracee is as if it had done a +#. .BR PTRACE_TRACEME . +#. The calling process actually becomes the parent of the tracee +#. process for most purposes (e.g., it will receive +#. notification of tracee events and appears in +#. .BR ps (1) +#. output as the tracee's parent), but a +#. .BR getppid (2) +#. by the tracee will still return the PID of the original parent. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Attach to the process specified in I<pid>, making it a tracee of the calling " +"process. The tracee is sent a B<SIGSTOP>, but will not necessarily have " +"stopped by the completion of this call; use B<waitpid>(2) to wait for the " +"tracee to stop. See the \"Attaching and detaching\" subsection for " +"additional information. (I<addr> and I<data> are ignored.)" +msgstr "" +"Выполняет присоединение к процессу с указанным I<pid>, делая его " +"трассируемым для вызывающего процесса. Трассируемой нити посылается " +"B<SIGSTOP>, но нет жёсткого правила, что она будет остановлен по завершению " +"этого вызова; используйте B<waitpid>(2) для ожидания остановки трассируемой " +"нити. Дополнительную информацию смотрите в подразделе «Присоединение и " +"отсоединение» (значения I<addr> и I<data> игнорируются)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Permission to perform a B<PTRACE_ATTACH> is governed by a ptrace access mode " +"B<PTRACE_MODE_ATTACH_REALCREDS> check; see below." +msgstr "" +"Право выполнять B<PTRACE_ATTACH> определяется проверкой режима доступа " +"ptrace B<PTRACE_MODE_READ_REALCREDS>; смотрите ниже." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SEIZE> (since Linux 3.4)" +msgstr "B<PTRACE_SEIZE> (начиная с Linux 3.4)" + +#. Noted by Dmitry Levin: +#. PTRACE_SEIZE was introduced by commit v3.1-rc1~308^2~28, but +#. it had to be used along with a temporary flag PTRACE_SEIZE_DEVEL, +#. which was removed later by commit v3.4-rc1~109^2~20. +#. That is, [before] v3.4 we had a test mode of PTRACE_SEIZE API, +#. which was not compatible with the current PTRACE_SEIZE API introduced +#. in Linux 3.4. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Attach to the process specified in I<pid>, making it a tracee of the calling " +"process. Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the " +"process. Group-stops are reported as B<PTRACE_EVENT_STOP> and " +"I<WSTOPSIG(status)> returns the stop signal. Automatically attached " +"children stop with B<PTRACE_EVENT_STOP> and I<WSTOPSIG(status)> returns " +"B<SIGTRAP> instead of having B<SIGSTOP> signal delivered to them. " +"B<execve>(2) does not deliver an extra B<SIGTRAP>. Only a B<PTRACE_SEIZE>d " +"process can accept B<PTRACE_INTERRUPT> and B<PTRACE_LISTEN> commands. The " +"\"seized\" behavior just described is inherited by children that are " +"automatically attached using B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, " +"and B<PTRACE_O_TRACECLONE>. I<addr> must be zero. I<data> contains a bit " +"mask of ptrace options to activate immediately." +msgstr "" +"Выполняет присоединение к процессу, указанному в I<pid>, делает его " +"трассируемым для вызывающего процесса. В отличие от B<PTRACE_ATTACH>, " +"B<PTRACE_SEIZE> не останавливает процесс. О group-stops сообщается как " +"B<PTRACE_EVENT_STOP> и I<WSTOPSIG(status)> возвращает сигнал остановки. " +"Автоматически присоединённые потомки останавливаются с B<PTRACE_EVENT_STOP> " +"и I<WSTOPSIG(status)> возвращает B<SIGTRAP> вместо доставки им сигнала " +"B<SIGSTOP>. При вызове B<execve>(2) дополнительный B<SIGTRAP> не посылается. " +"Только подключённые с помощью B<PTRACE_SEIZE> процессы могут принимать " +"команды B<PTRACE_INTERRUPT> и B<PTRACE_LISTEN>. Только что описанное " +"поведение «захвата» (seized) наследуется потомками, которые автоматически " +"присоединяются с помощью B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK> и " +"B<PTRACE_O_TRACECLONE>. Значение I<addr> должно быть равно нулю. В I<data> " +"содержится битовая маска параметров ptrace, которая применяется сразу же." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Permission to perform a B<PTRACE_SEIZE> is governed by a ptrace access mode " +"B<PTRACE_MODE_ATTACH_REALCREDS> check; see below." +msgstr "" +"Право выполнять B<PTRACE_SEIZE> определяется проверкой режима доступа ptrace " +"B<PTRACE_MODE_READ_REALCREDS>; смотрите ниже." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SECCOMP_GET_FILTER> (since Linux 4.4)" +msgstr "B<PTRACE_SECCOMP_GET_FILTER> (начиная с Linux 4.4)" + +#. commit f8e529ed941ba2bbcbf310b575d968159ce7e895 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This operation allows the tracer to dump the tracee's classic BPF filters." +msgstr "" +"Эта операция позволяет трассировщику получить дамп классических фильтров BPF " +"трассируемого." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<addr> is an integer specifying the index of the filter to be dumped. The " +"most recently installed filter has the index 0. If I<addr> is greater than " +"the number of installed filters, the operation fails with the error " +"B<ENOENT>." +msgstr "" +"Значение I<addr> имеет тип integer и задаёт индекс фильтра для дампа. Индекс " +"последнего установленного фильтра равен 0. Если I<addr> больше количества " +"установленных фильтров, то операция завершается ошибкой B<ENOENT>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<data> is either a pointer to a I<struct sock_filter> array that is large " +"enough to store the BPF program, or NULL if the program is not to be stored." +msgstr "" +"Значение I<data> является указателем на массив I<struct sock_filter> " +"достаточного размера для сохранения программы BPF, или NULL, если программа " +"не будет сохраняться." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Upon success, the return value is the number of instructions in the BPF " +"program. If I<data> was NULL, then this return value can be used to " +"correctly size the I<struct sock_filter> array passed in a subsequent call." +msgstr "" +"При успешном выполнении возвращаемое значение — количество инструкций в " +"программе BPF. Если I<data> равнялось NULL, то возвращается значение, " +"которое можно использовать для создания массива I<struct sock_filter> " +"корректного размера, который будет передан в последующем вызове." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This operation fails with the error B<EACCES> if the caller does not have " +"the B<CAP_SYS_ADMIN> capability or if the caller is in strict or filter " +"seccomp mode. If the filter referred to by I<addr> is not a classic BPF " +"filter, the operation fails with the error B<EMEDIUMTYPE>." +msgstr "" +"Данная операция завершается ошибкой B<EACCES>, если вызывающий не имеет " +"мандата B<CAP_SYS_ADMIN>, или если вызывающий находится в ограничительном " +"или фильтрующем режиме. Если фильтр, на который ссылается адрес I<addr>, не " +"является классическим фильтром BPF, то операция завершается ошибкой " +"B<EMEDIUMTYPE>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This operation is available if the kernel was configured with both the " +"B<CONFIG_SECCOMP_FILTER> and the B<CONFIG_CHECKPOINT_RESTORE> options." +msgstr "" +"Эта операция доступна только, если ядро собрано с параметрами " +"B<CONFIG_SECCOMP_FILTER> и B<CONFIG_CHECKPOINT_RESTORE>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_DETACH>" +msgstr "B<PTRACE_DETACH>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it. " +"Under Linux, a tracee can be detached in this way regardless of which method " +"was used to initiate tracing. (I<addr> is ignored.)" +msgstr "" +"Возобновляет работу остановленной трассируемой нити, аналогично " +"B<PTRACE_CONT>, но сначала отсоединяется от него. В Linux при помощи этого " +"вызова трассируемая нить может быть отсоединёна независимо от того, каким " +"методом была запущена трассировка (значение I<addr> игнорируется)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_GET_THREAD_AREA> (since Linux 2.6.0)" +msgstr "B<PTRACE_GET_THREAD_AREA> (начиная с Linux 2.6.0)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This operation performs a similar task to B<get_thread_area>(2). It reads " +"the TLS entry in the GDT whose index is given in I<addr>, placing a copy of " +"the entry into the I<struct user_desc> pointed to by I<data>. (By contrast " +"with B<get_thread_area>(2), the I<entry_number> of the I<struct user_desc> " +"is ignored.)" +msgstr "" +"Данная операция выполняет задачу, подобную B<get_thread_area>(2). Она читает " +"элемент TLS из GDT, чей индекс передан в I<addr>, помещает копию элемента в " +"I<struct user_desc>, указанную в I<data> (в отличие от " +"B<get_thread_area>(2), значение I<entry_number> структуры I<struct " +"user_desc> игнорируется)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SET_THREAD_AREA> (since Linux 2.6.0)" +msgstr "B<PTRACE_SET_THREAD_AREA> (начиная с Linux 2.6.0)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This operation performs a similar task to B<set_thread_area>(2). It sets " +"the TLS entry in the GDT whose index is given in I<addr>, assigning it the " +"data supplied in the I<struct user_desc> pointed to by I<data>. (By " +"contrast with B<set_thread_area>(2), the I<entry_number> of the I<struct " +"user_desc> is ignored; in other words, this ptrace operation can't be used " +"to allocate a free TLS entry.)" +msgstr "" +"Данная операция выполняет задачу, подобную B<set_thread_area>(2). Она " +"изменяет элемент TLS в GDT, чей индекс указан в I<addr>, данными, " +"переданными в структуре I<struct user_desc>, на которую указывает I<data> (в " +"отличие от B<set_thread_area>(2), значение I<entry_number> структуры " +"I<struct user_desc> игнорируется; иначе говоря, данная операция ptrace не " +"может использоваться для выделения свободного элемента TLS)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_GET_SYSCALL_INFO> (since Linux 5.3)" +msgstr "B<PTRACE_GET_SYSCALL_INFO> (начиная с Linux 5.3)" + +#. commit 201766a20e30f982ccfe36bebfad9602c3ff574a +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Retrieve information about the system call that caused the stop. The " +"information is placed into the buffer pointed by the I<data> argument, which " +"should be a pointer to a buffer of type I<struct ptrace_syscall_info>. The " +"I<addr> argument contains the size of the buffer pointed to by the I<data> " +"argument (i.e., I<sizeof(struct ptrace_syscall_info)>). The return value " +"contains the number of bytes available to be written by the kernel. If the " +"size of the data to be written by the kernel exceeds the size specified by " +"the I<addr> argument, the output data is truncated." +msgstr "" +"Возвращает информацию о системном вызове, который привёл к останову. " +"Информация помещается в буфер, указанный в аргументе I<data>, который должен " +"быть указателем на буфер с типом I<struct ptrace_syscall_info>. Аргумент " +"I<addr> содержит размер буфера, на который указывает аргумент I<data> (т. " +"е., I<sizeof(struct ptrace_syscall_info)>). Возвращаемое значение равно " +"количеству байт, записанных ядром. Если размер записываемых ядром данных " +"больше значения из аргумента I<addr>, то данные результата обрезаются." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The I<ptrace_syscall_info> structure contains the following fields:" +msgstr "Структура I<ptrace_syscall_info> содержит следующие поля:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "" +#| "struct ptrace_syscall_info {\n" +#| " __u8 op; /* Type of system call stop */\n" +#| " __u32 arch; /* AUDIT_ARCH_* value; see seccomp(2) */\n" +#| " __u64 instruction_pointer; /* CPU instruction pointer */\n" +#| " __u64 stack_pointer; /* CPU stack pointer */\n" +#| " union {\n" +#| " struct { /* op == PTRACE_SYSCALL_INFO_ENTRY */\n" +#| " __u64 nr; /* System call number */\n" +#| " __u64 args[6]; /* System call arguments */\n" +#| " } entry;\n" +#| " struct { /* op == PTRACE_SYSCALL_INFO_EXIT */\n" +#| " __s64 rval; /* System call return value */\n" +#| " __u8 is_error; /* System call error flag;\n" +#| " Boolean: does rval contain\n" +#| " an error value (-ERRCODE) or\n" +#| " a nonerror return value? */\n" +#| " } exit;\n" +#| " struct { /* op == PTRACE_SYSCALL_INFO_SECCOMP */\n" +#| " __u64 nr; /* System call number */\n" +#| " __u64 args[6]; /* System call arguments */\n" +#| " __u32 ret_data; /* SECCOMP_RET_DATA portion\n" +#| " of SECCOMP_RET_TRACE\n" +#| " return value */\n" +#| " } seccomp;\n" +#| " };\n" +#| "};\n" +msgid "" +"struct ptrace_syscall_info {\n" +" __u8 op; /* Type of system call stop */\n" +" __u32 arch; /* AUDIT_ARCH_* value; see seccomp(2) */\n" +" __u64 instruction_pointer; /* CPU instruction pointer */\n" +" __u64 stack_pointer; /* CPU stack pointer */\n" +" union {\n" +" struct { /* op == PTRACE_SYSCALL_INFO_ENTRY */\n" +" __u64 nr; /* System call number */\n" +" __u64 args[6]; /* System call arguments */\n" +" } entry;\n" +" struct { /* op == PTRACE_SYSCALL_INFO_EXIT */\n" +" __s64 rval; /* System call return value */\n" +" __u8 is_error; /* System call error flag;\n" +" Boolean: does rval contain\n" +" an error value (-ERRCODE) or\n" +" a nonerror return value? */\n" +" } exit;\n" +" struct { /* op == PTRACE_SYSCALL_INFO_SECCOMP */\n" +" __u64 nr; /* System call number */\n" +" __u64 args[6]; /* System call arguments */\n" +" __u32 ret_data; /* SECCOMP_RET_DATA portion\n" +" of SECCOMP_RET_TRACE\n" +" return value */\n" +" } seccomp;\n" +" };\n" +"};\n" +msgstr "" +"struct ptrace_syscall_info {\n" +" __u8 op; /* тип останова системного вызова */\n" +" __u32 arch; /* значение AUDIT_ARCH_*; смотрите seccomp(2) */\n" +" __u64 instruction_pointer; /* указатель инструкции ЦП */\n" +" __u64 stack_pointer; /* указатель стека ЦП */\n" +" union {\n" +" struct { /* op == PTRACE_SYSCALL_INFO_ENTRY */\n" +" __u64 nr; /* номер системного вызова */\n" +" __u64 args[6]; /* аргументы системного вызова */\n" +" } entry;\n" +" struct { /* op == PTRACE_SYSCALL_INFO_EXIT */\n" +" __s64 rval; /* возвращаемое значение системного вызова */\n" +" __u8 is_error; /* флаг ошибки системного вызова;\n" +" логический: в rval содержится\n" +" значение ошибки (-ERRCODE) или\n" +" или не ошибки? */\n" +" } exit;\n" +" struct { /* op == PTRACE_SYSCALL_INFO_SECCOMP */\n" +" __u64 nr; /* номер системного вызова */\n" +" __u64 args[6]; /* аргументы системного вызова */\n" +" __u32 ret_data; /* часть SECCOMP_RET_DATA\n" +" возвращаемого значения\n" +" SECCOMP_RET_TRACE */\n" +" } seccomp;\n" +" };\n" +"};\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<op>, I<arch>, I<instruction_pointer>, and I<stack_pointer> fields are " +"defined for all kinds of ptrace system call stops. The rest of the " +"structure is a union; one should read only those fields that are meaningful " +"for the kind of system call stop specified by the I<op> field." +msgstr "" +"Поля I<op>, I<arch>, I<instruction_pointer> и I<stack_pointer> определены " +"для всех видов остановов системных вызовов ptrace. Оставшаяся структура " +"является объединением; из неё нужно читать только те поля, которые имеют " +"смысл для конкретного вызова останова системного вызова, указанного в поле " +"I<op>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<op> field has one of the following values (defined in I<E<lt>linux/" +"ptrace.hE<gt>>) indicating what type of stop occurred and which part of the " +"union is filled:" +msgstr "" +"В поле I<op> указывается одно из следующих значений (определены в " +"I<E<lt>linux/ptrace.hE<gt>>), определяющих тип возникшего останова и какая " +"часть объединения заполнена:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SYSCALL_INFO_ENTRY>" +msgstr "B<PTRACE_SYSCALL_INFO_ENTRY>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<entry> component of the union contains information relating to a " +"system call entry stop." +msgstr "" +"Компонент объединения I<entry> содержит информацию о входе в останов " +"системного вызова." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SYSCALL_INFO_EXIT>" +msgstr "B<PTRACE_SYSCALL_INFO_EXIT>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<exit> component of the union contains information relating to a system " +"call exit stop." +msgstr "" +"Компонент объединения I<exit> содержит информацию о выходе из останова " +"системного вызова." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SYSCALL_INFO_SECCOMP>" +msgstr "B<PTRACE_SYSCALL_INFO_SECCOMP>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<seccomp> component of the union contains information relating to a " +"B<PTRACE_EVENT_SECCOMP> stop." +msgstr "" +"Компонент объединения I<seccomp> содержит информацию об останове " +"B<PTRACE_EVENT_SECCOMP>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SYSCALL_INFO_NONE>" +msgstr "B<PTRACE_SYSCALL_INFO_NONE>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "No component of the union contains relevant information." +msgstr "Компонент объединения не содержит информации." + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In case of system call entry or exit stops, the data returned by " +"B<PTRACE_GET_SYSCALL_INFO> is limited to type B<PTRACE_SYSCALL_INFO_NONE> " +"unless B<PTRACE_O_TRACESYSGOOD> option is set before the corresponding " +"system call stop has occurred." +msgstr "" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Death under ptrace" +msgstr "Смерть в момент ptrace" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a (possibly multithreaded) process receives a killing signal (one whose " +"disposition is set to B<SIG_DFL> and whose default action is to kill the " +"process), all threads exit. Tracees report their death to their tracer(s). " +"Notification of this event is delivered via B<waitpid>(2)." +msgstr "" +"Когда (возможно, многонитевой) процесс получает уничтожающий сигнал (из-за " +"того, что обработчик равен B<SIG_DFL> и что действием по умолчанию является " +"уничтожение процесса), все нити завершают работу (exit). Трассируемые нити " +"сообщают о своей смерти своим трассировщикам. Уведомления об этом событии " +"доставляется с помощью B<waitpid>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note that the killing signal will first cause signal-delivery-stop (on one " +"tracee only), and only after it is injected by the tracer (or after it was " +"dispatched to a thread which isn't traced), will death from the signal " +"happen on I<all> tracees within a multithreaded process. (The term \"signal-" +"delivery-stop\" is explained below.)" +msgstr "" +"Заметим, что уничтожающий сигнал сначала вызовет вхождение в режим signal-" +"delivery-stop (только для одной трассируемой нити), и только после этого " +"будет внедрён трассировщиком (или после того, как был отослан нити, которая " +"не является трассируемой), затем I<все> трассируемые нити в многонитевом " +"процессе завершаются по сигналу (термин «signal-delivery-stop» объяснён " +"далее)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer " +"can't suppress it. B<SIGKILL> kills even within system calls (syscall-exit-" +"stop is not generated prior to death by B<SIGKILL>). The net effect is that " +"B<SIGKILL> always kills the process (all its threads), even if some threads " +"of the process are ptraced." +msgstr "" +"Сигнал B<SIGKILL> не генерирует режим signal-delivery-stop и поэтому " +"трассировщик не может подавить его. Сигнал B<SIGKILL> уничтожает даже внутри " +"системных вызовов (syscall-exit-stop не генерируется перед уничтожением по " +"B<SIGKILL>). Конечным результатом B<SIGKILL> всегда является уничтожение " +"процесса (всех его нитей), даже если для некоторых нитей процесса " +"выполняется трассировка." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When the tracee calls B<_exit>(2), it reports its death to its tracer. " +"Other threads are not affected." +msgstr "" +"Когда трассируемая нить вызывает B<_exit>(2), он сообщает о своём " +"уничтожении своему трассировщику. На оставшиеся нити ни какого влияния не " +"оказывается." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When any thread executes B<exit_group>(2), every tracee in its thread group " +"reports its death to its tracer." +msgstr "" +"Если какая-нибудь нить вызывает B<exit_group>(2), то каждая трассируемая " +"нить в этой группе нитей сообщает о своём уничтожении своему трассировщику." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen " +"before actual death. This applies to exits via B<exit>(2), " +"B<exit_group>(2), and signal deaths (except B<SIGKILL>, depending on the " +"kernel version; see BUGS below), and when threads are torn down on " +"B<execve>(2) in a multithreaded process." +msgstr "" +"Если установлен флаг B<PTRACE_O_TRACEEXIT>, то перед непосредственным " +"уничтожением возникает B<PTRACE_EVENT_EXIT>. Это случается при выходе " +"посредством B<exit>(2), B<exit_group>(2) и из-за уничтожения по сигналу (за " +"исключением B<SIGKILL>, в зависимости от версии ядра; смотрите ДЕФЕКТЫ ниже) " +"и когда нити многонитевой процесса разрушаются при B<execve>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The tracer cannot assume that the ptrace-stopped tracee exists. There are " +"many scenarios when the tracee may die while stopped (such as B<SIGKILL>). " +"Therefore, the tracer must be prepared to handle an B<ESRCH> error on any " +"ptrace operation. Unfortunately, the same error is returned if the tracee " +"exists but is not ptrace-stopped (for commands which require a stopped " +"tracee), or if it is not traced by the process which issued the ptrace " +"call. The tracer needs to keep track of the stopped/running state of the " +"tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it " +"knows that the tracee has been observed to enter ptrace-stop. Note that " +"there is no guarantee that I<waitpid(WNOHANG)> will reliably report the " +"tracee's death status if a ptrace operation returned B<ESRCH>. " +"I<waitpid(WNOHANG)> may return 0 instead. In other words, the tracee may be " +"\"not yet fully dead\", but already refusing ptrace requests." +msgstr "" +"Трассировщик не может предполагать, что трассируемая нить, остановленная по " +"ptrace, существует. Если много случаев, когда трассируемая нить может быть " +"уничтожена будучи в остановленном состоянии (например, по B<SIGKILL>). " +"Поэтому, трассировщик должен быть готов обработать ошибку B<ESRCH> при любом " +"действии ptrace. К сожалению, эта же ошибка возвращается, если трассируемая " +"нить существует, но не остановлена по ptrace (для действий, которые требуют " +"остановленной трассируемой нити), или если она не трассируется процессом, " +"который вызвал ptrace. Трассировщику необходимо отслеживать состояние " +"остановки/работы трассируемой нити и воспринимать B<ESRCH> как «трассируемая " +"нить была неожиданно уничтожена» только, если он знает, что трассируемая " +"нить была в состоянии ptrace-stop. Заметим, что нет гарантии того, что " +"I<waitpid(WNOHANG)> всегда сообщит о состоянии уничтожения трассируемой " +"нити, если действие ptrace вернуло B<ESRCH>. Вызов I<waitpid(WNOHANG)> " +"вместо этого может вернуть 0. Другими словами, трассируемая нить может быть " +"«ещё не полностью уничтожена», но уже отклонять действия ptrace." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The tracer can't assume that the tracee I<always> ends its life by reporting " +"I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this " +"does not occur. For example, if a thread other than thread group leader " +"does an B<execve>(2), it disappears; its PID will never be seen again, and " +"any subsequent ptrace stops will be reported under the thread group leader's " +"PID." +msgstr "" +"Трассировщик не может предполагать, что I<всегда> поймает завершение " +"существования трассируемой нити с помощью I<WIFEXITED(status)> или " +"I<WIFSIGNALED(status)>; есть несколько случаев, когда этого не происходит. " +"Например, если нить — не лидер группы нитей — вызывает B<execve>(2) и " +"исчезает; её PID больше не появится снова, и все последующие остановки по " +"ptrace будут приходить от PID лидера группы нитей." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Stopped states" +msgstr "Состояния останова" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A tracee can be in two states: running or stopped. For the purposes of " +"ptrace, a tracee which is blocked in a system call (such as B<read>(2), " +"B<pause>(2), etc.) is nevertheless considered to be running, even if the " +"tracee is blocked for a long time. The state of the tracee after " +"B<PTRACE_LISTEN> is somewhat of a gray area: it is not in any ptrace-stop " +"(ptrace commands won't work on it, and it will deliver B<waitpid>(2) " +"notifications), but it also may be considered \"stopped\" because it is not " +"executing instructions (is not scheduled), and if it was in group-stop " +"before B<PTRACE_LISTEN>, it will not respond to signals until B<SIGCONT> is " +"received." +msgstr "" +"Трассируемый может находиться в двух состояниях: выполнения или остановки. В " +"целях ptrace, трассируемый, заблокированный в системном вызове (например, " +"B<read>(2), B<pause>(2) и т.д.), считается выполняющимся, даже если он " +"заблокирован уже долго. Состояние трассируемого после B<PTRACE_LISTEN> " +"находится, отчасти, в «сумеречной зоне»: не не в каком-либо из ptrace-stop " +"(команды ptrace не будут с ним работать и он будет посылать уведомления " +"B<waitpid>(2)), но он также может считаться за «остановленный», так как он " +"не выполняет инструкций (не планируется для этого), и если он был в group-" +"stop до B<PTRACE_LISTEN>, он не будет отвечать на сигналы до тех пор, пока " +"не получит B<SIGCONT>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"There are many kinds of states when the tracee is stopped, and in ptrace " +"discussions they are often conflated. Therefore, it is important to use " +"precise terms." +msgstr "" +"Есть много разновидностей останова, и в обсуждении ptrace они часто " +"объединены. Поэтому очень важно использовать точную терминологию." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In this manual page, any stopped state in which the tracee is ready to " +"accept ptrace commands from the tracer is called I<ptrace-stop>. Ptrace-" +"stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, " +"I<syscall-stop>, I<PTRACE_EVENT stops>, and so on. These stopped states are " +"described in detail below." +msgstr "" +"В этой справочной странице любое состояние останова, в котором трассируемая " +"нить готова выполнить действия ptrace трассировщика, называется I<ptrace-" +"stop>. В свою очередь, ptrace-stop можно разделить на I<signal-delivery-" +"stop>, I<group-stop>, I<syscall-stop>, I<PTRACE_EVENT stops> и так далее. " +"Далее эти состояния останова будут описаны подробней." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When the running tracee enters ptrace-stop, it notifies its tracer using " +"B<waitpid>(2) (or one of the other \"wait\" system calls). Most of this " +"manual page assumes that the tracer waits with:" +msgstr "" +"Когда выполняющаяся трассируемая нить входит в ptrace-stop, это видит " +"трассировщик с помощью B<waitpid>(2) (или через другой системный вызов " +"«wait»). В большей части текста данной справочной страницы предполагается, " +"что трассировщик ждёт с помощью:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "pid = waitpid(pid_or_minus_1, &status, __WALL);\n" +msgstr "pid = waitpid(pid_or_minus_1, &status, __WALL);\n" + +#. Denys Vlasenko: +#. Do we require __WALL usage, or will just using 0 be ok? (With 0, +#. I am not 100% sure there aren't ugly corner cases.) Are the +#. rules different if user wants to use waitid? Will waitid require +#. WEXITED? +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 " +"and I<WIFSTOPPED(status)> true." +msgstr "" +"О трассируемой нити в состоянии ptrace-stop сообщается возвратом I<pid> " +"большим 0 и значением истины по I<WIFSTOPPED(status)>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, " +"but implies their functionality." +msgstr "" +"Флаг B<__WALL> не содержит флагов B<WSTOPPED> и B<WEXITED>, но подразумевает " +"их назначение." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Setting the B<WCONTINUED> flag when calling B<waitpid>(2) is not " +"recommended: the \"continued\" state is per-process and consuming it can " +"confuse the real parent of the tracee." +msgstr "" +"Устанавливать флаг B<WCONTINUED> при вызове B<waitpid>(2) не рекомендуется: " +"состояние «continued» относится к определённому процессу и его поглощение " +"может запутать реального родителя трассируемой нити." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Use of the B<WNOHANG> flag may cause B<waitpid>(2) to return 0 (\"no wait " +"results available yet\") even if the tracer knows there should be a " +"notification. Example:" +msgstr "" +"Использование флага B<WNOHANG> может привести к тому, что B<waitpid>(2) " +"вернёт 0 («не ждать результатов, если они не готовы»), даже если " +"трассировщик знает, что должно быть уведомление. Пример:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"errno = 0;\n" +"ptrace(PTRACE_CONT, pid, 0L, 0L);\n" +"if (errno == ESRCH) {\n" +" /* tracee is dead */\n" +" r = waitpid(tracee, &status, __WALL | WNOHANG);\n" +" /* r can still be 0 here! */\n" +"}\n" +msgstr "" +"errno = 0;\n" +" ptrace(PTRACE_CONT, pid, 0L, 0L);\n" +" if (errno == ESRCH) {\n" +" /* трассируемая нить мертва */\n" +" r = waitpid(tracee, &status, __WALL | WNOHANG);\n" +" /* r может быть 0 ! */\n" +" }\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The following kinds of ptrace-stops exist: signal-delivery-stops, group-" +"stops, B<PTRACE_EVENT> stops, syscall-stops. They all are reported by " +"B<waitpid>(2) with I<WIFSTOPPED(status)> true. They may be differentiated " +"by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in " +"that value, by querying B<PTRACE_GETSIGINFO>. (Note: the " +"I<WSTOPSIG(status)> macro can't be used to perform this examination, because " +"it returns the value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)" +msgstr "" +"Существуют следующие разновидности ptrace-stop: signal-delivery-stop, group-" +"stop, остановки B<PTRACE_EVENT>, syscall-stop. Все они могут быть получены " +"по B<waitpid>(2) с значением истинным по I<WIFSTOPPED(status)>. Их можно " +"различить, если проверить значение I<statusE<gt>E<gt>8>, и, если есть " +"неоднозначность этого значения, то запросив B<PTRACE_GETSIGINFO> (замечание: " +"для выполнения этой проверки не может использоваться макрос " +"I<WSTOPSIG(status)>, так как он возвращает значение I<(statusE<gt>E<gt>8)\\ " +"&\\ 0xff>)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Signal-delivery-stop" +msgstr "Signal-delivery-stop" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a (possibly multithreaded) process receives any signal except " +"B<SIGKILL>, the kernel selects an arbitrary thread which handles the " +"signal. (If the signal is generated with B<tgkill>(2), the target thread " +"can be explicitly selected by the caller.) If the selected thread is " +"traced, it enters signal-delivery-stop. At this point, the signal is not " +"yet delivered to the process, and can be suppressed by the tracer. If the " +"tracer doesn't suppress the signal, it passes the signal to the tracee in " +"the next ptrace restart request. This second step of signal delivery is " +"called I<signal injection> in this manual page. Note that if the signal is " +"blocked, signal-delivery-stop doesn't happen until the signal is unblocked, " +"with the usual exception that B<SIGSTOP> can't be blocked." +msgstr "" +"Когда процесс (возможно, многонитевой) принимает какой-либо сигнал кроме " +"B<SIGKILL>, ядро выбирает произвольную нить для его обработки (если сигнал " +"генерируется с помощью B<tgkill>(2), то назначаемая нить может быть явно " +"выбрана вызывающим). Если над выбранной нитью выполняется трассировка, то " +"она попадает в режим signal-delivery-stop. В этот момент сигнал ещё не " +"доставлен процессу и может быть отменён трассировщиком. Если трассировщик не " +"отменил сигнал, то он передаётся трассируемой нити при следующем запросе " +"перезапуска ptrace. Этот второй этап доставки сигнала называется в этой " +"справочной странице I<внедрением сигнала>. Заметим, что если сигнал " +"блокируется, то signal-delivery-stop не происходит пока сигнал не будет " +"разблокирован (исключением, как обычно, является B<SIGSTOP>, который нельзя " +"заблокировать)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Signal-delivery-stop is observed by the tracer as B<waitpid>(2) returning " +"with I<WIFSTOPPED(status)> true, with the signal returned by " +"I<WSTOPSIG(status)>. If the signal is B<SIGTRAP>, this may be a different " +"kind of ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below " +"for details. If I<WSTOPSIG(status)> returns a stopping signal, this may be " +"a group-stop; see below." +msgstr "" +"Signal-delivery-stop наблюдается трассировщиком посредством B<waitpid>(2), " +"возвращающим истинное значения для I<WIFSTOPPED(status)> с сигналом, который " +"возвращается по I<WSTOPSIG(status)>. Если возвращается сигнал B<SIGTRAP>, то " +"он может быть разновидностью ptrace-stop; смотрите разделы «Syscall-stops» и " +"«execve» далее. Если I<WSTOPSIG(status)> возвращает останавливающий сигнал, " +"то это может быть group-stop, смотрите далее." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Signal injection and suppression" +msgstr "Внедрение и подавление сигнала" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"After signal-delivery-stop is observed by the tracer, the tracer should " +"restart the tracee with the call" +msgstr "" +"После обнаружения трассировщиком signal-delivery-stop, он должен " +"перезапустить трассируемую нить вызовом" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(PTRACE_restart, pid, 0, sig)\n" +msgstr "ptrace(PTRACE_restart, pid, 0, sig)\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"where B<PTRACE_restart> is one of the restarting ptrace requests. If I<sig> " +"is 0, then a signal is not delivered. Otherwise, the signal I<sig> is " +"delivered. This operation is called I<signal injection> in this manual " +"page, to distinguish it from signal-delivery-stop." +msgstr "" +"где B<PTRACE_restart> — одно из перезапускающих действий ptrace. Если " +"значение I<sig> равно 0, то сигнал не доставляется. В противном случае, " +"доставляется сигнал I<sig>. Данная операция в справочной странице называется " +"I<внедрением сигнала> для того, чтобы можно отличить её от signal-delivery-" +"stop." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The I<sig> value may be different from the I<WSTOPSIG(status)> value: the " +"tracer can cause a different signal to be injected." +msgstr "" +"Значение I<sig> может отличаться от значения I<WSTOPSIG(status)>: " +"трассировщик может поменять внедряемый сигнал." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note that a suppressed signal still causes system calls to return " +"prematurely. In this case, system calls will be restarted: the tracer will " +"observe the tracee to reexecute the interrupted system call (or " +"B<restart_syscall>(2) system call for a few system calls which use a " +"different mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>. " +"Even system calls (such as B<poll>(2)) which are not restartable after " +"signal are restarted after signal is suppressed; however, kernel bugs exist " +"which cause some system calls to fail with B<EINTR> even though no " +"observable signal is injected to the tracee." +msgstr "" +"Заметим, что подавленный сигнал всё равно заставит системные вызовы " +"завершиться как можно скорее. В этом случае системные вызовы будут " +"перезапущены: если трассировщик использует B<PTRACE_SYSCALL>, то обнаружит, " +"когда трассируемая нить повторно выполнила прерванный системный вызов (или " +"системный вызов B<restart_syscall>(2) для некоторых системных вызовов, " +"которые используют другой механизм перезапуска). Даже системные вызовы " +"(такие как B<poll>(2)), которые не перезапускаются по сигналу, будут " +"перезапущены после подавления сигнала; однако, в ядре существуют дефекты, из-" +"за которых некоторые системные вызовы завершаются с ошибкой B<EINTR>, даже " +"если наблюдаемый сигнал не был внедрён в трассируемую нить." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Restarting ptrace commands issued in ptrace-stops other than signal-delivery-" +"stop are not guaranteed to inject a signal, even if I<sig> is nonzero. No " +"error is reported; a nonzero I<sig> may simply be ignored. Ptrace users " +"should not try to \"create a new signal\" this way: use B<tgkill>(2) " +"instead." +msgstr "" +"Перезапускающие действия ptrace, выдаваемые в ptrace-stops, отличные от " +"signal-delivery-stop, не гарантируют внедрения сигнала, даже если значение " +"I<sig> не равно нулю. Об ошибках не сообщается; ненулевое значение I<sig> " +"может быть просто проигнорировано. Пользователи ptrace не должны пытаться " +"«создать новый сигнал» таким способом — используйте вместо этого " +"B<tgkill>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The fact that signal injection requests may be ignored when restarting the " +"tracee after ptrace stops that are not signal-delivery-stops is a cause of " +"confusion among ptrace users. One typical scenario is that the tracer " +"observes group-stop, mistakes it for signal-delivery-stop, restarts the " +"tracee with" +msgstr "" +"Тот факт, что запросы внедрения сигнала могут игнорироваться при перезапуске " +"трассируемой нити после остановок ptrace не из signal-delivery-stops, " +"вызывает путаницу у пользователей ptrace. Типичный сценарий: трассировщик " +"обнаруживает group-stop, принимает его за signal-delivery-stop, " +"перезапускает трассируемую нить с помощью" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(PTRACE_restart, pid, 0, stopsig)\n" +msgstr "ptrace(PTRACE_restart, pid, 0, stopsig)\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and " +"the tracee continues to run." +msgstr "" +"пытаясь внедрить I<stopsig>, но I<stopsig> игнорируется и трассируемая нить " +"продолжает выполняться." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<SIGCONT> signal has a side effect of waking up (all threads of) a " +"group-stopped process. This side effect happens before signal-delivery-" +"stop. The tracer can't suppress this side effect (it can only suppress " +"signal injection, which only causes the B<SIGCONT> handler to not be " +"executed in the tracee, if such a handler is installed). In fact, waking up " +"from group-stop may be followed by signal-delivery-stop for signal(s) " +"I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was " +"delivered. In other words, B<SIGCONT> may be not the first signal observed " +"by the tracee after it was sent." +msgstr "" +"Сигнал B<SIGCONT> имеет побочный эффект — пробуждает (все нити) процесс, " +"находящийся в group-stop. Это случается перед signal-delivery-stop. " +"Трассировщик не может повлиять на это побочное действие (он может только " +"подавить внедрение сигнала, что приводит к тому, что обработчик B<SIGCONT> " +"не будет выполнен в трассируемой нити, если он установлен). Фактически, " +"пробуждение из group-stop может следовать после signal-delivery-stop для " +"сигнала(ов) I<отличных от> B<SIGCONT>, если они ожидают момента доставки " +"B<SIGCONT>. Другими словами, B<SIGCONT> может быть не первым сигналом, " +"который обнаруживает трассируемую нить после её посылки." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stopping signals cause (all threads of) a process to enter group-stop. This " +"side effect happens after signal injection, and therefore can be suppressed " +"by the tracer." +msgstr "" +"Останавливающие сигналы заставляют процесс (все его нити) войти в group-" +"stop. Данный побочный эффект возникает после внедрения сигнала, и поэтому " +"может быть отменён трассировщиком." + +#. In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(), +#. there is: +#. /* The debugger continued. Ignore SIGSTOP. */ +#. if (signr == SIGSTOP) +#. continue; +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected." +msgstr "" +"В Linux 2.4 и более ранних версиях, сигнал B<SIGSTOP> не может быть внедрён." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which " +"corresponds to the delivered signal. B<PTRACE_SETSIGINFO> may be used to " +"modify it. If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the " +"I<si_signo> field and the I<sig> parameter in the restarting command must " +"match, otherwise the result is undefined." +msgstr "" +"Действие B<PTRACE_GETSIGINFO> может использоваться для получения структуры " +"I<siginfo_t>, которая соответствует доставленному сигналу. Для её изменения " +"можно использовать B<PTRACE_SETSIGINFO>. Если B<PTRACE_SETSIGINFO> " +"использовалась для изменения I<siginfo_t>, то поле I<si_signo> и параметр " +"I<sig> в перезапускающем действии должны совпадать, иначе результат " +"непредсказуем." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Group-stop" +msgstr "Group-stop" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When a (possibly multithreaded) process receives a stopping signal, all " +"threads stop. If some threads are traced, they enter a group-stop. Note " +"that the stopping signal will first cause signal-delivery-stop (on one " +"tracee only), and only after it is injected by the tracer (or after it was " +"dispatched to a thread which isn't traced), will group-stop be initiated on " +"I<all> tracees within the multithreaded process. As usual, every tracee " +"reports its group-stop separately to the corresponding tracer." +msgstr "" +"Когда (возможно многонитевой) процесс получает останавливающий сигнал, все " +"нити останавливаются. Если для какой-то нити выполняется трассировка, то она " +"входит в режим group-stop. Заметим, что останавливающий сигнал сначала " +"приведёт к signal-delivery-stop (только в одной трассируемой нити) и только " +"затем будет внедрён трассировщиком (или после того, как будет отправлен " +"нити, над которой не выполняется трассировка), будет начат group-stop в " +"I<всех> трассируемых нитях многонитевого процесса. Как обычно, каждая " +"трассируемая нить сообщает о group-stop соответствующему трассировщику." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Group-stop is observed by the tracer as B<waitpid>(2) returning with " +"I<WIFSTOPPED(status)> true, with the stopping signal available via " +"I<WSTOPSIG(status)>. The same result is returned by some other classes of " +"ptrace-stops, therefore the recommended practice is to perform the call" +msgstr "" +"Group-stop обнаруживается трассировщиком с помощью B<waitpid>(2), который " +"возвращается с истинным значением I<WIFSTOPPED(status)> и останавливающим " +"сигналом из I<WSTOPSIG(status)>. Тот же результат возвращается другими " +"классами ptrace-stops, поэтому рекомендуется выполнять вызов" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n" +msgstr "ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, " +"B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals. If " +"the tracer sees something else, it can't be a group-stop. Otherwise, the " +"tracer needs to call B<PTRACE_GETSIGINFO>. If B<PTRACE_GETSIGINFO> fails " +"with B<EINVAL>, then it is definitely a group-stop. (Other failure codes " +"are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed " +"the tracee.)" +msgstr "" +"Вызова можно избежать, если сигнал не равен B<SIGSTOP>, B<SIGTSTP>, " +"B<SIGTTIN> или B<SIGTTOU>; только эти четыре сигнала являются " +"останавливающими. Если трассировщик видит что-то другое, то это не может " +"быть group-stop. В противном случае, трассировщику нужно вызвать " +"B<PTRACE_GETSIGINFO>. Если B<PTRACE_GETSIGINFO> завершается с ошибкой " +"B<EINVAL>, то это определённо group-stop (возможны другие коды ошибок, " +"например, B<ESRCH> («нет такого процесса»), если трассируемая нить " +"уничтожена по B<SIGKILL>)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If tracee was attached using B<PTRACE_SEIZE>, group-stop is indicated by " +"B<PTRACE_EVENT_STOP>: I<statusE<gt>E<gt>16 == PTRACE_EVENT_STOP>. This " +"allows detection of group-stops without requiring an extra " +"B<PTRACE_GETSIGINFO> call." +msgstr "" +"Если подключение к трассируемому было сделано с помощью B<PTRACE_SEIZE>, то " +"group-stop указывается B<PTRACE_EVENT_STOP>: I<statusE<gt>E<gt>16 == " +"PTRACE_EVENT_STOP>. Это позволяет обнаружить group-stop без дополнительного " +"вызова B<PTRACE_GETSIGINFO>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until " +"it restarts or kills it, the tracee will not run, and will not send " +"notifications (except B<SIGKILL> death) to the tracer, even if the tracer " +"enters into another B<waitpid>(2) call." +msgstr "" +"Начиная с Linux 2.6.38, после того как трассировщик увидит ptrace-stop " +"трассируемой нити и пока он не перезапустит или завершит её, трассируемая " +"нить не будет выполняться, и не будет посылать уведомления (за исключением " +"уничтожения по B<SIGKILL>) трассировщику, даже если трассировщик войдёт в " +"другой вызов B<waitpid>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "The kernel behavior described in the previous paragraph causes a problem " +#| "with transparent handling of stopping signals. If the tracer restarts " +#| "the tracee after group-stop, the stopping signal is effectively " +#| "ignored\\(emthe tracee doesn't remain stopped, it runs. If the tracer " +#| "doesn't restart the tracee before entering into the next B<waitpid>(2), " +#| "future B<SIGCONT> signals will not be reported to the tracer; this would " +#| "cause the B<SIGCONT> signals to have no effect on the tracee." +msgid "" +"The kernel behavior described in the previous paragraph causes a problem " +"with transparent handling of stopping signals. If the tracer restarts the " +"tracee after group-stop, the stopping signal is effectively ignored\\[em]the " +"tracee doesn't remain stopped, it runs. If the tracer doesn't restart the " +"tracee before entering into the next B<waitpid>(2), future B<SIGCONT> " +"signals will not be reported to the tracer; this would cause the B<SIGCONT> " +"signals to have no effect on the tracee." +msgstr "" +"Поведение ядра, описанное в предыдущем параграфе, вызывает проблемы с " +"прозрачностью обработки останавливающих сигналов. Если трассировщик " +"перезапускает трассируемую нить после group-stop, то останавливающий сигнал " +"просто игнорируется — трассируемая нить продолжает выполняться. Если " +"трассировщик не перезапускает трассируемую нить перед входом в следующий " +"B<waitpid>(2), то о будущих сигналах B<SIGCONT> не будет сообщено " +"трассировщику; это привело бы к тому, что сигналы B<SIGCONT> не повлияли бы " +"на трассируемую нить." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Since Linux 3.4, there is a method to overcome this problem: instead of " +"B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee " +"in a way where it does not execute, but waits for a new event which it can " +"report via B<waitpid>(2) (such as when it is restarted by a B<SIGCONT>)." +msgstr "" +"Начиная с Linux 3.4, появился способ преодоления этой проблемы: вместо " +"B<PTRACE_CONT> для перезапуска трассируемой нити можно использовать " +"B<PTRACE_LISTEN>, при которой она не выполняется, а ждёт нового события, и " +"это можно прочитать с помощью B<waitpid>(2) (например, когда был перезапуск " +"по B<SIGCONT>)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "PTRACE_EVENT stops" +msgstr "Остановки PTRACE_EVENT" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-" +"stops called B<PTRACE_EVENT> stops." +msgstr "" +"Если трассировщик устанавливает флаги B<PTRACE_O_TRACE_*>, то трассируемая " +"нить будет входить в ptrace-stop-ы, называемые остановками B<PTRACE_EVENT>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2) " +#| "returning with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns " +#| "B<SIGTRAP>. An additional bit is set in the higher byte of the status " +#| "word: the value I<statusE<gt>E<gt>8> will be" +msgid "" +"B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2) returning " +"with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP> (or " +"for B<PTRACE_EVENT_STOP>, returns the stopping signal if tracee is in a " +"group-stop). An additional bit is set in the higher byte of the status " +"word: the value I<statusE<gt>E<gt>8> will be" +msgstr "" +"Остановки B<PTRACE_EVENT> обнаруживаются трассировщиком когда B<waitpid>(2) " +"возвращается с I<WIFSTOPPED(status)> и I<WSTOPSIG(status)> возвращает " +"B<SIGTRAP>. В старшем байте слова состояния устанавливается дополнительный " +"бит: значение I<statusE<gt>E<gt>8> будет равно" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "((PTRACE_EVENT_fooE<lt>E<lt>8) | SIGTRAP).\n" +msgstr "((PTRACE_EVENT_fooE<lt>E<lt>8) | SIGTRAP).\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The following events exist:" +msgstr "Могут происходить следующие события:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_EVENT_VFORK>" +msgstr "B<PTRACE_EVENT_VFORK>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop before return from B<vfork>(2) or B<clone>(2) with the B<CLONE_VFORK> " +"flag. When the tracee is continued after this stop, it will wait for child " +"to exit/exec before continuing its execution (in other words, the usual " +"behavior on B<vfork>(2))." +msgstr "" +"Остановка перед возвратом из B<vfork>(2) или B<clone>(2) с флагом " +"B<CLONE_VFORK>. Когда трассируемая нить продолжает выполняться после этой " +"остановки, она будет ждать выхода/exec потомка перед продолжением своего " +"исполнения (другими словами, обычное поведение при B<vfork>(2))." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_EVENT_FORK>" +msgstr "B<PTRACE_EVENT_FORK>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop before return from B<fork>(2) or B<clone>(2) with the exit signal set " +"to B<SIGCHLD>." +msgstr "" +"Остановка перед возвратом из B<fork>(2) или B<clone>(2) с установленным " +"сигналом выхода B<SIGCHLD>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_EVENT_CLONE>" +msgstr "B<PTRACE_EVENT_CLONE>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Stop before return from B<clone>(2)." +msgstr "Остановка перед возвратом из B<clone>(2)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_EVENT_VFORK_DONE>" +msgstr "B<PTRACE_EVENT_VFORK_DONE>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop before return from B<vfork>(2) or B<clone>(2) with the B<CLONE_VFORK> " +"flag, but after the child unblocked this tracee by exiting or execing." +msgstr "" +"Остановка перед возвратом из B<vfork>(2) или B<clone>(2) с установленным " +"флагом B<CLONE_VFORK>, но после того, как потомок разблокирует эту " +"трассируемую нить, завершив работу или выполнив exec." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"For all four stops described above, the stop occurs in the parent (i.e., the " +"tracee), not in the newly created thread. B<PTRACE_GETEVENTMSG> can be used " +"to retrieve the new thread's ID." +msgstr "" +"Для всех четырёх остановок, описанных выше, остановка происходит в родителе " +"(т. е., трассируемой нити), а не в только что созданной нити. Для получения " +"ID новой нити может использовать B<PTRACE_GETEVENTMSG>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_EVENT_EXEC>" +msgstr "B<PTRACE_EVENT_EXEC>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop before return from B<execve>(2). Since Linux 3.0, " +"B<PTRACE_GETEVENTMSG> returns the former thread ID." +msgstr "" +"Остановка перед возвратом из B<execve>(2). Начиная с Linux 3.0, " +"B<PTRACE_GETEVENTMSG> возвращает ID бывшей нити." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_EVENT_EXIT>" +msgstr "B<PTRACE_EVENT_EXIT>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop before exit (including death from B<exit_group>(2)), signal death, or " +"exit caused by B<execve>(2) in a multithreaded process. " +"B<PTRACE_GETEVENTMSG> returns the exit status. Registers can be examined " +"(unlike when \"real\" exit happens). The tracee is still alive; it needs to " +"be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting." +msgstr "" +"Остановка перед выходом (включая уничтожение из B<exit_group>(2)), " +"уничтожение от сигнала или выход, вызванный B<execve>(2) в многонитевом " +"процессе. B<PTRACE_GETEVENTMSG> возвращает код выхода. Можно прочитать " +"значения регистров (в отличие от случая, когда происходит «реальный» выход). " +"Трассируемая нить всё ещё существует; для завершения выхода должно быть " +"выполнено отсоединение с помощью B<PTRACE_CONT> или B<PTRACE_DETACH>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_EVENT_STOP>" +msgstr "B<PTRACE_EVENT_STOP>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop induced by B<PTRACE_INTERRUPT> command, or group-stop, or initial " +"ptrace-stop when a new child is attached (only if attached using " +"B<PTRACE_SEIZE>)." +msgstr "" +"Остановка вызвана командой B<PTRACE_INTERRUPT>, или group-stop, или " +"начальным ptrace-stop при присоединении к новому потомку (только если для " +"присоединения использовалась B<PTRACE_SEIZE>)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_EVENT_SECCOMP>" +msgstr "B<PTRACE_EVENT_SECCOMP>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Stop triggered by a B<seccomp>(2) rule on tracee syscall entry when " +"B<PTRACE_O_TRACESECCOMP> has been set by the tracer. The seccomp event " +"message data (from the B<SECCOMP_RET_DATA> portion of the seccomp filter " +"rule) can be retrieved with B<PTRACE_GETEVENTMSG>. The semantics of this " +"stop are described in detail in a separate section below." +msgstr "" +"Остановка вызвана правилом B<seccomp>(2) из-за элемента syscall " +"трассируемого, когда B<PTRACE_O_TRACESECCOMP> была установлена " +"трассировщиком. Данные сообщения события seccomp (из части " +"B<SECCOMP_RET_DATA> фильтрующего правила seccomp) можно получить с помощью " +"B<PTRACE_GETEVENTMSG>. Семантика данного останова подробно описана в " +"отдельном разделе далее." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in " +"I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>." +msgstr "" +"B<PTRACE_GETSIGINFO> при остановке B<PTRACE_EVENT> возвращает B<SIGTRAP> в " +"I<si_signo>, а значение I<si_code> устанавливается в I<(eventE<lt>E<lt>8)\\ |" +"\\ SIGTRAP>." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Syscall-stops" +msgstr "Syscall-stop" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the tracee was restarted by B<PTRACE_SYSCALL> or B<PTRACE_SYSEMU>, the " +"tracee enters syscall-enter-stop just prior to entering any system call " +"(which will not be executed if the restart was using B<PTRACE_SYSEMU>, " +"regardless of any change made to registers at this point or how the tracee " +"is restarted after this stop). No matter which method caused the syscall-" +"entry-stop, if the tracer restarts the tracee with B<PTRACE_SYSCALL>, the " +"tracee enters syscall-exit-stop when the system call is finished, or if it " +"is interrupted by a signal. (That is, signal-delivery-stop never happens " +"between syscall-enter-stop and syscall-exit-stop; it happens I<after> " +"syscall-exit-stop.). If the tracee is continued using any other method " +"(including B<PTRACE_SYSEMU>), no syscall-exit-stop occurs. Note that all " +"mentions B<PTRACE_SYSEMU> apply equally to B<PTRACE_SYSEMU_SINGLESTEP>." +msgstr "" +"Если трассируемый был перезапущен по B<PTRACE_SYSCALL> или B<PTRACE_SYSEMU>, " +"то он входит в режим syscall-enter-stop сразу перед тем как войти в какой-" +"либо системный вызов (который не будет выполняться, если перезапуск был из-" +"за B<PTRACE_SYSEMU>, независимо от каких-либо изменений в регистрах на этот " +"момент или если трассируемый перезапускается после своей остановки). Неважно " +"какой метод вызвал syscall-entry-stop, если трассировщик перезапускает " +"трассируемого с помощью B<PTRACE_SYSCALL>, то трассируемый входит в syscall-" +"exit-stop при окончании системного вызова, или если он прерывается сигналом " +"(то есть, signal-delivery-stop никогда не возникает между syscall-enter-stop " +"и syscall-exit-stop; он возникает I<после> syscall-exit-stop). Если " +"трассируемый продолжает выполнение с помощью какого-то другого метода " +"(включая B<PTRACE_SYSEMU>), то syscall-exit-stop не возникает. Заметим, что " +"все упоминания B<PTRACE_SYSEMU> применяются и к B<PTRACE_SYSEMU_SINGLESTEP>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"However, even if the tracee was continued using B<PTRACE_SYSCALL>, it is not " +"guaranteed that the next stop will be a syscall-exit-stop. Other " +"possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop " +"(including seccomp stops), exit (if it entered B<_exit>(2) or " +"B<exit_group>(2)), be killed by B<SIGKILL>, or die silently (if it is a " +"thread group leader, the B<execve>(2) happened in another thread, and that " +"thread is not traced by the same tracer; this situation is discussed later)." +msgstr "" +"Однако даже если трассируемый продолжил выполнение с помощью " +"B<PTRACE_SYSCALL>, это не гарантирует, что следующая остановка будет syscall-" +"exit-stop. Также, трассируемый может остановиться в остановке " +"B<PTRACE_EVENT> (включая остановку seccomp), при выходе (если он вошёл в " +"B<_exit>(2) или B<exit_group>(2)), уничтожении по сигналу B<SIGKILL>, или " +"тихом уничтожении (если он является лидером группы нитей, возникает " +"B<execve>(2) в другой нити, и эта нить не трассируется тем же " +"трассировщиком; эта ситуация описана далее)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Syscall-enter-stop and syscall-exit-stop are observed by the tracer as " +"B<waitpid>(2) returning with I<WIFSTOPPED(status)> true, and " +"I<WSTOPSIG(status)> giving B<SIGTRAP>. If the B<PTRACE_O_TRACESYSGOOD> " +"option was set by the tracer, then I<WSTOPSIG(status)> will give the value " +"I<(SIGTRAP\\ |\\ 0x80)>." +msgstr "" +"Syscall-enter-stop и syscall-exit-stop обнаруживаются трассировщиком из " +"B<waitpid>(2), возвращающем истинное значение I<WIFSTOPPED(status)> и " +"I<WSTOPSIG(status)> выдающем B<SIGTRAP>. Если трассировщиком был установлен " +"флаг B<PTRACE_O_TRACESYSGOOD>, то I<WSTOPSIG(status)> выдаст значение " +"I<(SIGTRAP\\ |\\ 0x80)>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> " +"by querying B<PTRACE_GETSIGINFO> for the following cases:" +msgstr "" +"Syscall-stop можно отличить от signal-delivery-stop по B<SIGTRAP>, запросив " +"B<PTRACE_GETSIGINFO> в следующих случаях:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "I<si_code> E<lt>= 0" +msgstr "I<si_code> E<lt>= 0" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<SIGTRAP> was delivered as a result of a user-space action, for example, a " +"system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of " +"a POSIX timer, change of state on a POSIX message queue, or completion of an " +"asynchronous I/O request." +msgstr "" +"B<SIGTRAP> был доставлен в результате действия из пространства пользователя, " +"например, системного вызова (B<tgkill>(2), B<kill>(2), B<sigqueue>(3) и т. " +"д.), истечении таймера POSIX, изменении состояния очереди сообщений POSIX " +"или выполнении асинхронного запроса ввода/вывода." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "I<si_code> == SI_KERNEL (0x80)" +msgstr "I<si_code> == SI_KERNEL (0x80)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "B<SIGTRAP> was sent by the kernel." +msgstr "B<SIGTRAP> был послан ядром." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)" +msgstr "I<si_code> == SIGTRAP или I<si_code> == (SIGTRAP|0x80)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "This is a syscall-stop." +msgstr "Это syscall-stop." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"However, syscall-stops happen very often (twice per system call), and " +"performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat " +"expensive." +msgstr "" +"Однако, syscall-stop происходят очень часто (дважды за системный вызов), и " +"выполнение B<PTRACE_GETSIGINFO> для каждого syscall-stop может быть отчасти " +"накладно." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Some architectures allow the cases to be distinguished by examining " +"registers. For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-" +"stop. Since B<SIGTRAP> (like any other signal) always happens I<after> " +"syscall-exit-stop, and at this point I<rax> almost never contains -" +"B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-" +"enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" " +"and can be detected this way. But such detection is fragile and is best " +"avoided." +msgstr "" +"Некоторые архитектуры позволяют отличать эти случаи по значениям регистров. " +"Например, на x86, при syscall-enter-stop I<rax> == -B<ENOSYS>. Так как " +"B<SIGTRAP> (как и любой сигнал) всегда возникает I<после> syscall-exit-stop, " +"и в этот момент I<rax> почти никогда не содержит B<ENOSYS>, B<SIGTRAP> " +"выглядит как «syscall-stop, который не syscall-enter-stop»; другими словами, " +"это выглядит как «блуждающий syscall-exit-stop» и таким способом может быть " +"обнаружен. Но определение этим способом очень ненадёжно и лучше его не " +"использовать." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to " +"distinguish syscall-stops from other kinds of ptrace-stops, since it is " +"reliable and does not incur a performance penalty." +msgstr "" +"Использование флага B<PTRACE_O_TRACESYSGOOD> — рекомендуемый метод " +"различения syscall-stop от похожих на них других ptrace-stop, так как это " +"надёжно и не приводит к ухудшению производительности." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Syscall-enter-stop and syscall-exit-stop are indistinguishable from each " +"other by the tracer. The tracer needs to keep track of the sequence of " +"ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-" +"stop or vice versa. In general, a syscall-enter-stop is always followed by " +"syscall-exit-stop, B<PTRACE_EVENT> stop, or the tracee's death; no other " +"kinds of ptrace-stop can occur in between. However, note that seccomp stops " +"(see below) can cause syscall-exit-stops, without preceding syscall-entry-" +"stops. If seccomp is in use, care needs to be taken not to misinterpret " +"such stops as syscall-entry-stops." +msgstr "" +"Syscall-enter-stop и syscall-exit-stop неотличимы друг от друга " +"трассировщиком. Трассировщику требуется отслеживать последовательность " +"ptrace-stop, чтобы правильно истолковать syscall-enter-stop как syscall-exit-" +"stop или наоборот. В общем, за syscall-enter-stop всегда следует syscall-" +"exit-stop, B<PTRACE_EVENT> остановка или уничтожение трассируемого; никаких " +"других ptrace-stop не может возникнуть между ними. Однако заметим, что " +"остановки seccomp (смотрите ниже) могут приводить к syscall-exit-stop без " +"предварительного syscall-entry-stop. Если используется seccomp, необходима " +"осторожность чтобы не посчитать такие остановки за syscall-entry-stop." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If after syscall-enter-stop, the tracer uses a restarting command other than " +"B<PTRACE_SYSCALL>, syscall-exit-stop is not generated." +msgstr "" +"Если после syscall-enter-stop трассировщик использует перезапускающее " +"действие, отличное от B<PTRACE_SYSCALL>, то syscall-exit-stop не " +"генерируется." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, " +"with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>." +msgstr "" +"B<PTRACE_GETSIGINFO> при syscall-stop возвращает B<SIGTRAP> в I<si_signo>, " +"значение I<si_code> устанавливается в B<SIGTRAP> или I<(SIGTRAP|0x80)>." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "PTRACE_EVENT_SECCOMP stops (Linux 3.5 to 4.7)" +msgid "PTRACE_EVENT_SECCOMP stops (Linux 3.5 to Linux 4.7)" +msgstr "Остановки PTRACE_EVENT_SECCOMP (Linux 3.5 по 4.7)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The behavior of B<PTRACE_EVENT_SECCOMP> stops and their interaction with " +"other kinds of ptrace stops has changed between kernel versions. This " +"documents the behavior from their introduction until Linux 4.7 (inclusive). " +"The behavior in later kernel versions is documented in the next section." +msgstr "" +"Поведение остановок B<PTRACE_EVENT_SECCOMP> и их взаимодействие с другими " +"видами остановок ptrace различается от версии к версии. Здесь описано " +"поведение от их появления до Linux 4.7 (включительно). Поведение в более " +"новых версиях описано в следующем разделе." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A B<PTRACE_EVENT_SECCOMP> stop occurs whenever a B<SECCOMP_RET_TRACE> rule " +"is triggered. This is independent of which methods was used to restart the " +"system call. Notably, seccomp still runs even if the tracee was restarted " +"using B<PTRACE_SYSEMU> and this system call is unconditionally skipped." +msgstr "" +"Остановка B<PTRACE_EVENT_SECCOMP> возникает из-за срабатывания правила " +"B<SECCOMP_RET_TRACE>. Она не зависит от используемых методов перезапуска " +"системного вызова. Примечательно, что seccomp по прежнему работает даже, " +"если трассируемый был перезапущен с помощью B<PTRACE_SYSEMU> и этот " +"системный вызов безоговорочно пропускается." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Restarts from this stop will behave as if the stop had occurred right before " +"the system call in question. In particular, both B<PTRACE_SYSCALL> and " +"B<PTRACE_SYSEMU> will normally cause a subsequent syscall-entry-stop. " +"However, if after the B<PTRACE_EVENT_SECCOMP> the system call number is " +"negative, both the syscall-entry-stop and the system call itself will be " +"skipped. This means that if the system call number is negative after a " +"B<PTRACE_EVENT_SECCOMP> and the tracee is restarted using B<PTRACE_SYSCALL>, " +"the next observed stop will be a syscall-exit-stop, rather than the syscall-" +"entry-stop that might have been expected." +msgstr "" +"Перезапуск из этой остановки будет вести себя как если бы остановка возникла " +"прямо перед рассматриваемым системным вызовом. В частности, " +"B<PTRACE_SYSCALL> и B<PTRACE_SYSEMU> как обычно вызовут последующий syscall-" +"entry-stop. Однако, если после B<PTRACE_EVENT_SECCOMP> номер системного " +"вызова отрицательный, то и syscall-entry-stop и сам системный вызов будут " +"пропущены. Это означает, что если номер системного вызова отрицательный " +"после B<PTRACE_EVENT_SECCOMP> и трассируемый перезапущен с помощью " +"B<PTRACE_SYSCALL>, то следующая наблюдаемая остановка будет syscall-exit-" +"stop, а не syscall-entry-stop, как можно было ожидать." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "PTRACE_EVENT_SECCOMP stops (since Linux 4.8)" +msgstr "Остановки PTRACE_EVENT_SECCOMP (начиная с Linux 4.8)" + +#. commit 93e35efb8de45393cf61ed07f7b407629bf698ea +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Starting with Linux 4.8, the B<PTRACE_EVENT_SECCOMP> stop was reordered to " +"occur between syscall-entry-stop and syscall-exit-stop. Note that seccomp " +"no longer runs (and no B<PTRACE_EVENT_SECCOMP> will be reported) if the " +"system call is skipped due to B<PTRACE_SYSEMU>." +msgstr "" +"Начиная с Linux 4.8, остановка B<PTRACE_EVENT_SECCOMP> была преобразована " +"при возникновении между syscall-entry-stop и syscall-exit-stop. Заметим, что " +"seccomp больше не выполняется (и B<PTRACE_EVENT_SECCOMP> не будет выдан), " +"если системный вызов пропускается из-за B<PTRACE_SYSEMU>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Functionally, a B<PTRACE_EVENT_SECCOMP> stop functions comparably to a " +"syscall-entry-stop (i.e., continuations using B<PTRACE_SYSCALL> will cause " +"syscall-exit-stops, the system call number may be changed and any other " +"modified registers are visible to the to-be-executed system call as well). " +"Note that there may be, but need not have been a preceding syscall-entry-" +"stop." +msgstr "" +"Функционально, остановка B<PTRACE_EVENT_SECCOMP> работает как syscall-entry-" +"stop (т. е., продолжение использования B<PTRACE_SYSCALL> приведёт к syscall-" +"exit-stop, может измениться номер системного вызова и любые другие регистры, " +"видимые выполняемому в будущем системному вызову). Заметим, что это может " +"быть, но не обязательно предваряется syscall-entry-stop." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"After a B<PTRACE_EVENT_SECCOMP> stop, seccomp will be rerun, with a " +"B<SECCOMP_RET_TRACE> rule now functioning the same as a " +"B<SECCOMP_RET_ALLOW>. Specifically, this means that if registers are not " +"modified during the B<PTRACE_EVENT_SECCOMP> stop, the system call will then " +"be allowed." +msgstr "" +"После остановки B<PTRACE_EVENT_SECCOMP>, seccomp будет выполнен повторно с " +"правилом B<SECCOMP_RET_TRACE>, которое теперь работает также как " +"B<SECCOMP_RET_ALLOW>. Точнее говоря, это означает, что если регистры не " +"изменились во время остановки B<PTRACE_EVENT_SECCOMP>,то после этого " +"системный вызов будет разрешён." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "PTRACE_SINGLESTEP stops" +msgstr "Остановки PTRACE_SINGLESTEP" + +#. FIXME . +#. document stops occurring with PTRACE_SINGLESTEP +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "[Details of these kinds of stops are yet to be documented.]" +msgstr "[Пока не описаны.]" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Informational and restarting ptrace commands" +msgstr "Информационные и перезапускающие действия ptrace" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, " +"B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>) require the " +"tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>." +msgstr "" +"Для большинства действий ptrace (все, за исключением B<PTRACE_ATTACH>, " +"B<PTRACE_SEIZE>, B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT> и B<PTRACE_KILL>) " +"требуется, чтобы трассируемая нить была в режиме ptrace-stop, в противном " +"случае они завершаются с ошибкой B<ESRCH>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When the tracee is in ptrace-stop, the tracer can read and write data to the " +"tracee using informational commands. These commands leave the tracee in " +"ptrace-stopped state:" +msgstr "" +"Когда трассируемая нить в ptrace-stop, трассировщик может читать и " +"записывать данные в трассируемую нить с помощью информационных действий. Эти " +"действия оставляют трассируемую нить в состоянии ptrace-stop:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n" +"ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n" +"ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n" +"ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n" +"ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n" +"ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n" +"ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n" +"ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n" +"ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n" +"ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n" +msgstr "" +"ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n" +"ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n" +"ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n" +"ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n" +"ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n" +"ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n" +"ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n" +"ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n" +"ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n" +"ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note that some errors are not reported. For example, setting signal " +"information (I<siginfo>) may have no effect in some ptrace-stops, yet the " +"call may succeed (return 0 and not set I<errno>); querying " +"B<PTRACE_GETEVENTMSG> may succeed and return some random value if current " +"ptrace-stop is not documented as returning a meaningful event message." +msgstr "" +"Заметим, что о некоторых ошибках не сообщается. Например, установка " +"информации о сигнале (I<siginfo>) может никак не отразиться в некоторых " +"ptrace-stop, при этом вызов может завершиться без ошибок (возвращается 0 и " +"значение I<errno> не устанавливается); действие B<PTRACE_GETEVENTMSG> может " +"выполниться без ошибок и вернуть произвольное значение, если текущий ptrace-" +"stop не описан как возвращающий какое-то осмысленное сообщение о событии." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The call" +msgstr "Вызов" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n" +msgstr "ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"affects one tracee. The tracee's current flags are replaced. Flags are " +"inherited by new tracees created and \"auto-attached\" via active " +"B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> " +"options." +msgstr "" +"затрагивает одну трассируемую нить. Текущие флаги трассируемой нити " +"заменяются. Флаги, наследуемые новой трассируемой нитью, создаются и " +"«автоматически присоединяются» через активные флаги B<PTRACE_O_TRACEFORK>, " +"B<PTRACE_O_TRACEVFORK> или B<PTRACE_O_TRACECLONE>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Another group of commands makes the ptrace-stopped tracee run. They have " +"the form:" +msgstr "" +"Другая группа действий заставляет трассируемую нить, находящуюся в ptrace-" +"stop, выполняться. Они могут иметь вид:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(cmd, pid, 0, sig);\n" +msgstr "ptrace(cmd, pid, 0, sig);\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, " +"B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or " +"B<PTRACE_SYSEMU_SINGLESTEP>. If the tracee is in signal-delivery-stop, " +"I<sig> is the signal to be injected (if it is nonzero). Otherwise, I<sig> " +"may be ignored. (When restarting a tracee from a ptrace-stop other than " +"signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)" +msgstr "" +"где значение I<cmd> равно B<PTRACE_CONT>, B<PTRACE_LISTEN>, " +"B<PTRACE_DETACH>, B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU> " +"или B<PTRACE_SYSEMU_SINGLESTEP>. Если трассируемая нить в signal-delivery-" +"stop, то в I<sig> указывается сигнал, который будет внедрён (если не равен " +"нулю). В противном случае, I<sig> может игнорироваться (при перезапуске " +"трассируемой нити из ptrace-stop в отличный от signal-delivery-stop, " +"рекомендуется передавать в I<sig> значение 0)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Attaching and detaching" +msgstr "Присоединение и отсоединение" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "A thread can be attached to the tracer using the call" +msgstr "Нить можно присоединить к трассировщику с помощью вызова" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(PTRACE_ATTACH, pid, 0, 0);\n" +msgstr "ptrace(PTRACE_ATTACH, pid, 0, 0);\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "or" +msgstr "или" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n" +msgstr "ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n" + +#. FIXME Describe how to attach to a thread which is already group-stopped. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread. If the tracer wants this " +"B<SIGSTOP> to have no effect, it needs to suppress it. Note that if other " +"signals are concurrently sent to this thread during attach, the tracer may " +"see the tracee enter signal-delivery-stop with other signal(s) first! The " +"usual practice is to reinject these signals until B<SIGSTOP> is seen, then " +"suppress B<SIGSTOP> injection. The design bug here is that a ptrace attach " +"and a concurrently delivered B<SIGSTOP> may race and the concurrent " +"B<SIGSTOP> may be lost." +msgstr "" +"B<PTRACE_ATTACH> посылает в нить B<SIGSTOP>. Если трассировщик хочет " +"отменить действие B<SIGSTOP>, ему нужно его подавить. Заметим, что если при " +"присоединении в эту нить в тоже время посылаются другие сигналы, то " +"трассировщик может увидеть, что трассируемая нить сначала вошла в signal-" +"delivery-stop из этих сигналов! Обычной практикой является повторное " +"внедрение этих сигналов до тех пор, пока не будет обнаружен B<SIGSTOP>, а " +"затем подавление внедрения B<SIGSTOP>. Здесь есть ошибка в проектировании в " +"том, что присоединение ptrace и одновременно доставляемый B<SIGSTOP> могут " +"состязаться и одновременный B<SIGSTOP> может быть утерян." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this " +"may cause a stray B<EINTR> return from the currently executing system call " +"in the tracee, as described in the \"Signal injection and suppression\" " +"section." +msgstr "" +"Так как при присоединении посылается B<SIGSTOP> и трассировщик обычно " +"подавляет его, то это может привести к блуждающему возврату B<EINTR> из в " +"данный момент выполняемого системного вызова в трассируемой нити, как " +"описано в разделе «Внедрение и отмена сигнала»." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>. " +"B<PTRACE_SEIZE> does not stop the attached process. If you need to stop it " +"after attach (or at any other time) without sending it any signals, use " +"B<PTRACE_INTERRUPT> command." +msgstr "" +"Начиная с Linux 3.4, вместо B<PTRACE_ATTACH> можно использовать " +"B<PTRACE_SEIZE>. B<PTRACE_SEIZE> не останавливает присоединённый. Если вам " +"нужно остановить его после присоединения (или в любое другое время) без " +"отправки каких-либо, используйте действие B<PTRACE_INTERRUPT>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The request" +msgstr "Запрос" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(PTRACE_TRACEME, 0, 0, 0);\n" +msgstr "ptrace(PTRACE_TRACEME, 0, 0, 0);\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"turns the calling thread into a tracee. The thread continues to run " +"(doesn't enter ptrace-stop). A common practice is to follow the " +"B<PTRACE_TRACEME> with" +msgstr "" +"включает трассировку вызвавшей нити. Нить продолжает выполняться (не входит " +"в ptrace-stop). Обычно, за B<PTRACE_TRACEME> следует" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "raise(SIGSTOP);\n" +msgstr "raise(SIGSTOP);\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"and allow the parent (which is our tracer now) to observe our signal-" +"delivery-stop." +msgstr "" +"и это позволяет родителю (который теперь трассировщик) отследить signal-" +"delivery-stop." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or " +"B<PTRACE_O_TRACECLONE> options are in effect, then children created by, " +"respectively, B<vfork>(2) or B<clone>(2) with the B<CLONE_VFORK> flag, " +"B<fork>(2) or B<clone>(2) with the exit signal set to B<SIGCHLD>, and " +"other kinds of B<clone>(2), are automatically attached to the same tracer " +"which traced their parent. B<SIGSTOP> is delivered to the children, causing " +"them to enter signal-delivery-stop after they exit the system call which " +"created them." +msgstr "" +"Если включены флаги B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK> или " +"B<PTRACE_O_TRACECLONE>, то потомок, создаваемый, соответственно, B<vfork>(2) " +"или B<clone>(2) с флагом B<CLONE_VFORK>, B<fork>(2) или B<clone>(2) с " +"установленным выходным сигналом равным B<SIGCHLD>, и другими видами " +"B<clone>(2), автоматически присоединяется к тому же трассировщику, которой " +"трассирует их родителя. Сигнал B<SIGSTOP> доставляется потомку, заставляя " +"его войти в signal-delivery-stop после завершения системного вызова, который " +"его создал." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Detaching of the tracee is performed by:" +msgstr "Отсоединение от трассируемой нити выполняется с помощью:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ptrace(PTRACE_DETACH, pid, 0, sig);\n" +msgstr "ptrace(PTRACE_DETACH, pid, 0, sig);\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee " +"to be in ptrace-stop. If the tracee is in signal-delivery-stop, a signal " +"can be injected. Otherwise, the I<sig> parameter may be silently ignored." +msgstr "" +"B<PTRACE_DETACH> является перезапускающей операцией, поэтому она требует, " +"чтобы трассируемая нить была в ptrace-stop. Если трассируемая нить в signal-" +"delivery-stop, то может быть внедрён сигнал. В противном случае параметр " +"I<sig> может быть проигнорирован." + +#. FIXME Describe how to detach from a group-stopped tracee so that it +#. doesn't run, but continues to wait for SIGCONT. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "If the tracee is running when the tracer wants to detach it, the usual " +#| "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes " +#| "to the correct thread), wait for the tracee to stop in signal-delivery-" +#| "stop for B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> " +#| "injection). A design bug is that this can race with concurrent " +#| "B<SIGSTOP>s. Another complication is that the tracee may enter other " +#| "ptrace-stops and needs to be restarted and waited for again, until " +#| "B<SIGSTOP> is seen. Yet another complication is to be sure that the " +#| "tracee is not already ptrace-stopped, because no signal delivery happens " +#| "while it is\\(emnot even B<SIGSTOP>." +msgid "" +"If the tracee is running when the tracer wants to detach it, the usual " +"solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to " +"the correct thread), wait for the tracee to stop in signal-delivery-stop for " +"B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection). A design " +"bug is that this can race with concurrent B<SIGSTOP>s. Another complication " +"is that the tracee may enter other ptrace-stops and needs to be restarted " +"and waited for again, until B<SIGSTOP> is seen. Yet another complication is " +"to be sure that the tracee is not already ptrace-stopped, because no signal " +"delivery happens while it is\\[em]not even B<SIGSTOP>." +msgstr "" +"Если трассировщик хочет отсоединиться,а трассируемая нить выполняется, то " +"решением является посылка сигнала B<SIGSTOP> (с помощью B<tgkill>(2), чтобы " +"точно достичь текущей нити), ожидание пока трассируемая нить не войдёт в " +"signal-delivery-stop для доставки B<SIGSTOP> и затем отсоединение от неё " +"(подавив внедрение B<SIGSTOP>). Ошибкой проектирования является возможность " +"гонок с параллельно отправленными B<SIGSTOP>. Другая трудность в том, что " +"трассируемая нить может войти в другой ptrace-stop и потребуется его " +"перезапуск и повторное ожидание появления B<SIGSTOP>. Ещё одной сложностью " +"является в проверки, что трассируемая нить уже не в ptrace-stop, так как в " +"этом случае доставки сигнала не происходит — даже B<SIGSTOP>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the tracer dies, all tracees are automatically detached and restarted, " +"unless they were in group-stop. Handling of restart from group-stop is " +"currently buggy, but the \"as planned\" behavior is to leave tracee stopped " +"and waiting for B<SIGCONT>. If the tracee is restarted from signal-delivery-" +"stop, the pending signal is injected." +msgstr "" +"Если трассировщик завершает работу, то все трассируемые нити автоматически " +"отсоединяются и перезапускаются, если они не в group-stop. Выполнение " +"перезапуска из group-stop в настоящее время содержит ошибки, но «плановым» " +"поведением считается оставить трассируемую нить остановленной и подождать " +"B<SIGCONT>. Если трассируемая нить перезапускается из signal-delivery-stop, " +"то внедряется ожидающий сигнал." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "execve(2) under ptrace" +msgstr "Выполнение execve(2) во время ptrace" + +#. clone(2) CLONE_THREAD says: +#. If any of the threads in a thread group performs an execve(2), +#. then all threads other than the thread group leader are terminated, +#. and the new program is executed in the thread group leader. +#. In Linux 3.1 sources, see fs/exec.c::de_thread() +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When one thread in a multithreaded process calls B<execve>(2), the kernel " +"destroys all other threads in the process, and resets the thread ID of the " +"execing thread to the thread group ID (process ID). (Or, to put things " +"another way, when a multithreaded process does an B<execve>(2), at " +"completion of the call, it appears as though the B<execve>(2) occurred in " +"the thread group leader, regardless of which thread did the B<execve>(2).) " +"This resetting of the thread ID looks very confusing to tracers:" +msgstr "" +"Когда одна нить многонитевого процесса вызывает B<execve>(2), то ядро " +"уничтожает все остальные нити процесса и сбрасывает ID выполняющейся нити в " +"значение ID группы нитей (ID процесса. Или, говоря иначе, когда многонитевой " +"процесс выполняет B<execve>(2), то по завершению вызова это выглядит как " +"если бы B<execve>(2) произошёл в лидере группе нитей, независимо от того, " +"какая нить вызвала B<execve>(2)). Такой сброс ID нити запутывает " +"трассировщиков:" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "\\[bu]" +msgstr "\\[bu]" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the " +"B<PTRACE_O_TRACEEXIT> option was turned on. Then all other threads except " +"the thread group leader report death as if they exited via B<_exit>(2) with " +"exit code 0." +msgstr "" +"Все остальные нити останавливаются в останове B<PTRACE_EVENT_EXIT>, если " +"включён флаг B<PTRACE_O_TRACEEXIT>. Затем все остальные нити, за исключением " +"лидера группы нитей, сообщают о завершении, как если бы они кончили работу с " +"помощью B<_exit>(2) с кодом выхода 0." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The execing tracee changes its thread ID while it is in the B<execve>(2). " +"(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed " +"into ptrace calls, is the tracee's thread ID.) That is, the tracee's thread " +"ID is reset to be the same as its process ID, which is the same as the " +"thread group leader's thread ID." +msgstr "" +"У исполняемой трассируемой нити изменяется ID, так как она выполняет " +"B<execve>(2) (помните, что в ptrace «pid», возвращаемый из B<waitpid>(2) или " +"подаваемый в вызовы ptrace, это ID трассируемой нити). То есть ID " +"трассируемой нити сбрасывается в значение ID своего процесса, который равен " +"ID лидера группы нитей." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> " +"option was turned on." +msgstr "" +"Затем происходит остановка B<PTRACE_EVENT_EXEC>, если включён флаг " +"B<PTRACE_O_TRACEEXEC>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by " +"this time, it appears to the tracer that the dead thread leader \"reappears " +"from nowhere\". (Note: the thread group leader does not report death via " +"I<WIFEXITED(status)> until there is at least one other live thread. This " +"eliminates the possibility that the tracer will see it dying and then " +"reappearing.) If the thread group leader was still alive, for the tracer " +"this may look as if thread group leader returns from a different system call " +"than it entered, or even \"returned from a system call even though it was " +"not in any system call\". If the thread group leader was not traced (or was " +"traced by a different tracer), then during B<execve>(2) it will appear as " +"if it has become a tracee of the tracer of the execing tracee." +msgstr "" +"Если в это время лидер группы нитей сообщил о своей остановке " +"B<PTRACE_EVENT_EXIT> в это время, то трассировщику кажется, что " +"завершившийся лидер группы «возник из ниоткуда» (замечание: лидер группы " +"нитей не сообщает о завершении через I<WIFEXITED(status)> до тех пор, пока " +"есть одна работающая нить. Это не даёт возможности трассировщику увидеть его " +"завершение и повторное появление). Если лидер группы нитей всё ещё " +"выполнялся, то для трассировщика может казаться, что лидер группы нитей " +"вернулся из другого системного вызова в который входил, или даже «вернулся " +"из системного вызова, хотя не был ни в каком системном вызове». Если лидер " +"группы нитей не трассируется (или трассируется другим трассировщиком), то во " +"время B<execve>(2) он выглядит так, как если бы стал трассируемым " +"трассировщиком выполняющейся трассируемой нити." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"All of the above effects are the artifacts of the thread ID change in the " +"tracee." +msgstr "" +"Все перечисленные выше эффекты происходят из-за смены ID трассируемой нити." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with " +"this situation. First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs " +"before B<execve>(2) returns. In this stop, the tracer can use " +"B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID. (This " +"feature was introduced in Linux 3.0.) Second, the B<PTRACE_O_TRACEEXEC> " +"option disables legacy B<SIGTRAP> generation on B<execve>(2)." +msgstr "" +"В этой ситуации рекомендуется использовать флаг B<PTRACE_O_TRACEEXEC>. Во-" +"первых, он включает остановку B<PTRACE_EVENT_EXEC>, которая происходит перед " +"возвратом из B<execve>(2). В этой остановке трассировщик может использовать " +"B<PTRACE_GETEVENTMSG> для получения предыдущего ID трассируемой нити (эта " +"возможность появилась в Linux 3.0). Во-вторых, флаг B<PTRACE_O_TRACEEXEC> " +"отключает устаревшую генерацию B<SIGTRAP> при B<execve>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is " +"guaranteed that except this tracee and the thread group leader, no other " +"threads from the process are alive." +msgstr "" +"Когда трассировщик получает уведомление об остановке B<PTRACE_EVENT_EXEC>, " +"гарантируется, что за исключением этой трассируемой нити и лидера группы " +"нитей, больше живых нитей в этом процессе нет." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer " +#| "should clean up all its internal data structures describing the threads " +#| "of this process, and retain only one data structure\\(emone which " +#| "describes the single still running tracee, with" +msgid "" +"On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should " +"clean up all its internal data structures describing the threads of this " +"process, and retain only one data structure\\[em]one which describes the " +"single still running tracee, with" +msgstr "" +"По получению уведомления об остановке B<PTRACE_EVENT_EXEC> трассировщик " +"должен очистить все свои внутренние структуры данных, описывающие нити этого " +"процесса, и оставить только одну структуру данных, которая описывает одну " +"ещё выполняющуюся трассируемую нить, у которой" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "thread ID == thread group ID == process ID.\n" +msgstr "thread ID == thread group ID == process ID.\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Example: two threads call B<execve>(2) at the same time:" +msgstr "Пример: две нити вызывают B<execve>(2) одновременно:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"*** we get syscall-enter-stop in thread 1: **\n" +"PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n" +"*** we issue PTRACE_SYSCALL for thread 1 **\n" +"*** we get syscall-enter-stop in thread 2: **\n" +"PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n" +"*** we issue PTRACE_SYSCALL for thread 2 **\n" +"*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n" +"*** we get syscall-exit-stop for PID0: **\n" +"PID0 E<lt>... execve resumedE<gt> ) = 0\n" +msgstr "" +"*** мы получаем syscall-enter-stop в нити 1: **\n" +"PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n" +"*** мы выдаём PTRACE_SYSCALL для нити 1 **\n" +"*** мы получаем syscall-enter-stop в нити 2: **\n" +"PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n" +"*** мы выдаём PTRACE_SYSCALL для нити 2 **\n" +"*** мы получаем PTRACE_EVENT_EXEC for PID0, мы выдаём PTRACE_SYSCALL **\n" +"*** мы получаем syscall-exit-stop для PID0: **\n" +"PID0 E<lt>... execve resumedE<gt> ) = 0\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing " +"tracee, and if the tracee was B<PTRACE_ATTACH>ed rather that " +"B<PTRACE_SEIZE>d, the kernel delivers an extra B<SIGTRAP> to the tracee " +"after B<execve>(2) returns. This is an ordinary signal (similar to one " +"which can be generated by I<kill -TRAP>), not a special kind of ptrace-" +"stop. Employing B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set " +"to 0 (I<SI_USER>). This signal may be blocked by signal mask, and thus may " +"be delivered (much) later." +msgstr "" +"Если флаг B<PTRACE_O_TRACEEXEC> I<не> действует на выполняющуюся " +"трассируемую нить и если трассируемая нить подключена с помощью " +"B<PTRACE_ATTACH>, а не B<PTRACE_SEIZE>, то ядро доставляет ей дополнительный " +"B<SIGTRAP> после возврата из B<execve>(2). Это обычный сигнал (похожий на " +"тот, который генерируется с помощью I<kill -TRAP>), а не какая-то " +"специальная разновидность ptrace-stop. Выдача B<PTRACE_GETSIGINFO> для этого " +"сигнала возвращает I<si_code> равный 0 (I<SI_USER>). Этот сигнал может быть " +"блокирован маской сигналов и поэтому может быть доставлен (намного) позже." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Usually, the tracer (for example, B<strace>(1)) would not want to show this " +"extra post-execve B<SIGTRAP> signal to the user, and would suppress its " +"delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing " +"signal). However, determining I<which> B<SIGTRAP> to suppress is not easy. " +"Setting the B<PTRACE_O_TRACEEXEC> option or using B<PTRACE_SEIZE> and thus " +"suppressing this extra B<SIGTRAP> is the recommended approach." +msgstr "" +"Обычно, трассировщик (например, B<strace>(1)) не хотел бы показывать этот " +"дополнительный пост-execve B<SIGTRAP> сигнал пользователю, и хотел бы " +"подавить его доставку в трассируемую нить (если обработчик B<SIGTRAP> равен " +"B<SIG_DFL>, то это уничтожающий сигнал). Однако, определить I<какой> " +"B<SIGTRAP> подавлять, нелегко. Рекомендуется установить флаг " +"B<PTRACE_O_TRACEEXEC> или B<PTRACE_SEIZE> и затем подавить этот " +"дополнительный B<SIGTRAP>." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Real parent" +msgstr "Настоящий родитель" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The ptrace API (ab)uses the standard UNIX parent/child signaling over " +"B<waitpid>(2). This used to cause the real parent of the process to stop " +"receiving several kinds of B<waitpid>(2) notifications when the child " +"process is traced by some other process." +msgstr "" +"Программный интерфейс ptrace использует стандартный обмен сигналами UNIX " +"между родителем и потомком через B<waitpid>(2). Это приводит к тому, что " +"настоящий родитель процесса перестаёт получать некоторые виды уведомлений " +"B<waitpid>(2), когда дочерний процесс трассируется другим процессом." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Many of these bugs have been fixed, but as of Linux 2.6.38 several still " +"exist; see BUGS below." +msgstr "" +"Многие из этих дефектов были исправлены, но на момент версии Linux 2.6.38 " +"некоторые из них всё ещё существуют; смотрите ДЕФЕКТЫ далее." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "As of Linux 2.6.38, the following is believed to work correctly:" +msgstr "На момент версии Linux 2.6.38 работает правильно:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"exit/death by signal is reported first to the tracer, then, when the tracer " +"consumes the B<waitpid>(2) result, to the real parent (to the real parent " +"only when the whole multithreaded process exits). If the tracer and the " +"real parent are the same process, the report is sent only once." +msgstr "" +"при выходе/уничтожении по сигналу об этом сначала сообщается трассировщику, " +"а затем,когда трассировщик подтвердит результат B<waitpid>(2), настоящему " +"родителю (настоящему родителю только когда завершается многонитевой процесс " +"целиком). Если трассировщик и реальный родитель — один и тот же процесс, то " +"сообщение приходит лишь однажды." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "RETURN VALUE" +msgstr "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "On success, the B<PTRACE_PEEK*> requests return the requested data (but " +#| "see NOTES), the B<PTRACE_SECCOMP_GET_FILTER> request returns the number " +#| "of instructions in the BPF program, and other requests return zero." +msgid "" +"On success, the B<PTRACE_PEEK*> requests return the requested data (but see " +"NOTES), the B<PTRACE_SECCOMP_GET_FILTER> request returns the number of " +"instructions in the BPF program, the B<PTRACE_GET_SYSCALL_INFO> request " +"returns the number of bytes available to be written by the kernel, and other " +"requests return zero." +msgstr "" +"При успешном выполнении запросы B<PTRACE_PEEK*> возвращают запрашиваемые " +"данные (но смотрите ЗАМЕЧАНИЯ), запрос B<PTRACE_SECCOMP_GET_FILTER> " +"возвращает количество инструкций в программе BPF, а другие запросы " +"возвращают ноль." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "On error, all requests return -1, and I<errno> is set appropriately. " +#| "Since the value returned by a successful B<PTRACE_PEEK*> request may be " +#| "-1, the caller must clear I<errno> before the call, and then check it " +#| "afterward to determine whether or not an error occurred." +msgid "" +"On error, all requests return -1, and I<errno> is set to indicate the " +"error. Since the value returned by a successful B<PTRACE_PEEK*> request may " +"be -1, the caller must clear I<errno> before the call, and then check it " +"afterward to determine whether or not an error occurred." +msgstr "" +"При ошибке для всех действий возвращается -1, а переменной I<errno> " +"присваивается номер ошибки. Так как значение, возвращаемое при удачном " +"выполнении B<PTRACE_PEEK*>, может равняться -1, перед вызовом вызывающий " +"должен очистить содержимое I<errno>, чтобы узнать, возникала ошибка или нет." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ERRORS" +msgstr "ОШИБКИ" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<EBUSY>" +msgstr "B<EBUSY>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"(i386 only) There was an error with allocating or freeing a debug register." +msgstr "" +"(только для i386) Произошла ошибка при размещении или освобождении " +"отладочного регистра." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<EFAULT>" +msgstr "B<EFAULT>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"There was an attempt to read from or write to an invalid area in the " +"tracer's or the tracee's memory, probably because the area wasn't mapped or " +"accessible. Unfortunately, under Linux, different variations of this fault " +"will return B<EIO> or B<EFAULT> more or less arbitrarily." +msgstr "" +"Была сделана попытка чтения или записи информации в область памяти " +"трассируемой нити или трассировщика, но, скорее всего, эта память не " +"отображена или недоступна. К сожалению, в Linux в разных ситуациях в " +"результате этой ошибки возвращаются значения B<EIO> или B<EFAULT>, что не " +"всегда поддается объяснению." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<EINVAL>" +msgstr "B<EINVAL>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "An attempt was made to set an invalid option." +msgstr "Попытка установить недопустимое значение." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<EIO>" +msgstr "B<EIO>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"I<request> is invalid, or an attempt was made to read from or write to an " +"invalid area in the tracer's or the tracee's memory, or there was a word-" +"alignment violation, or an invalid signal was specified during a restart " +"request." +msgstr "" +"Задано неверное значение I<request>, или была попытка чтения или записи " +"информации в неподходящую область памяти трассируемой нити или " +"трассировщика; ошибка выравнивания слов по границе, или при запросе " +"возобновления работы дочернего процесса был задан неверно номер сигнала." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<EPERM>" +msgstr "B<EPERM>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "The specified process cannot be traced. This could be because the tracer " +#| "has insufficient privileges (the required capability is " +#| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that " +#| "they cannot send signals to or those running set-user-ID/set-group-ID " +#| "programs, for obvious reasons. Alternatively, the process may already be " +#| "being traced, or (on kernels before 2.6.26) be B<init>(1) (PID 1)." +msgid "" +"The specified process cannot be traced. This could be because the tracer " +"has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); " +"unprivileged processes cannot trace processes that they cannot send signals " +"to or those running set-user-ID/set-group-ID programs, for obvious reasons. " +"Alternatively, the process may already be being traced, or (before Linux " +"2.6.26) be B<init>(1) (PID 1)." +msgstr "" +"Указанный процесс не может быть трассирован. Это может произойти потому, что " +"трассировщик не имеет прав на трассировку (требуется мандат " +"B<CAP_SYS_PTRACE>); непривилегированные процессы не могут трассировать " +"процессы, так как они не могут посылать сигналы, или если у них установлен " +"set-user-ID/set-group-ID бит. Также, процесс может уже трассироваться или " +"(на ядрах до версии 2.6.26) быть B<init>(1) (PID 1)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<ESRCH>" +msgstr "B<ESRCH>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The specified process does not exist, or is not currently being traced by " +"the caller, or is not stopped (for requests that require a stopped tracee)." +msgstr "" +"Указанный процесс не существует, в данный момент не трассируется вызывающим " +"процессом, или не остановлен (для выполнения действий, которые требуют " +"остановки трассируемой нити)." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "STANDARDS" +msgstr "СТАНДАРТЫ" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "None" +msgid "None." +msgstr "None" + +#. type: SH +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "HISTORY" +msgstr "ИСТОРИЯ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "SVr4, 4.3BSD." +msgstr "SVr4, 4.3BSD." + +#. See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "In Linux kernels before 2.6.26, B<init>(1), the process with PID 1, may " +#| "not be traced." +msgid "" +"Before Linux 2.6.26, B<init>(1), the process with PID 1, may not be traced." +msgstr "" +"В ядрах Linux до версии 2.6.26, процесс B<init>(1) с PID 1 не может быть " +"трассирован." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NOTES" +msgstr "ЗАМЕЧАНИЯ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Although arguments to B<ptrace>() are interpreted according to the " +"prototype given, glibc currently declares B<ptrace>() as a variadic " +"function with only the I<request> argument fixed. It is recommended to " +"always supply four arguments, even if the requested operation does not use " +"them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>." +msgstr "" +"Хотя параметры B<ptrace>() воспринимаются согласно заданному прототипу, в " +"настоящее время в glibc B<ptrace>() объявлена как функция с переменным " +"числом параметров, в которой фиксирован только параметр I<request>. " +"Рекомендуется всегда передавать четыре параметра, даже если в запрашиваемом " +"действии они не используются (неиспользуемые аргументы указывайте как I<0L> " +"или I<(void\\ *)\\ 0>)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A tracees parent continues to be the tracer even if that tracer calls " +"B<execve>(2)." +msgstr "" +"Родитель трассируемой нити остаётся трассировщиком даже, если трассировщик " +"вызывает B<execve>(2)." + +#. See http://lkml.org/lkml/2008/5/8/375 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The layout of the contents of memory and the USER area are quite operating-" +"system- and architecture-specific. The offset supplied, and the data " +"returned, might not entirely match with the definition of I<struct user>." +msgstr "" +"Структура памяти и области USER зависят от ОС и архитектуры системы. " +"Указываемое смещение и возвращаемые данные могут не полностью " +"соответствовать определению I<struct user>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The size of a \"word\" is determined by the operating-system variant (e.g., " +"for 32-bit Linux it is 32 bits)." +msgstr "" +"Размер «слова» определяется вариантом ОС (например, для 32-битного варианта " +"Linux слово будет 32-битным)." + +#. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"This page documents the way the B<ptrace>() call works currently in Linux. " +"Its behavior differs significantly on other flavors of UNIX. In any case, " +"use of B<ptrace>() is highly specific to the operating system and " +"architecture." +msgstr "" +"Эта страница описывает работу системного вызова B<ptrace>() в Linux. Его " +"работа значительно отличается от поведения в других системах UNIX. В любом " +"случае, использование B<ptrace>() очень сильно зависит от ОС и архитектуры." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Ptrace access mode checking" +msgstr "Проверка режима доступа ptrace" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "Various parts of the kernel-user-space API (not just B<ptrace>() " +#| "operations), require so-called \"ptrace access mode\" checks, whose " +#| "outcome determines whether an operation is permitted (or, in a few cases, " +#| "causes a \"read\" operation to return sanitized data). These checks are " +#| "performed in cases where one process can inspect sensitive information " +#| "about, or in some cases modify the state of, another process. The checks " +#| "are based on factors such as the credentials and capabilities of the two " +#| "processes, whether or not the \"target\" process is dumpable, and the " +#| "results of checks performed by any enabled Linux Security Module " +#| "(LSM)\\(emfor example, SELinux, Yama, or Smack\\(emand by the commoncap " +#| "LSM (which is always invoked)." +msgid "" +"Various parts of the kernel-user-space API (not just B<ptrace>() " +"operations), require so-called \"ptrace access mode\" checks, whose outcome " +"determines whether an operation is permitted (or, in a few cases, causes a " +"\"read\" operation to return sanitized data). These checks are performed in " +"cases where one process can inspect sensitive information about, or in some " +"cases modify the state of, another process. The checks are based on factors " +"such as the credentials and capabilities of the two processes, whether or " +"not the \"target\" process is dumpable, and the results of checks performed " +"by any enabled Linux Security Module (LSM)\\[em]for example, SELinux, Yama, " +"or Smack\\[em]and by the commoncap LSM (which is always invoked)." +msgstr "" +"Для различных частей программного интерфейса ядро — пользовательское " +"пространство (не только операции B<ptrace>()) требуются так называемые " +"проверки «режима доступа ptrace», чьими результатами определяется будет ли " +"разрешена операция (или это, в некоторых случаях, заставит операцию «чтения» " +"цензурировать возвращаемые данные). Эти проверки выполняются в случаях, " +"когда один процесс может просмотреть конфиденциальную информацию или, в " +"некоторых случаях, изменять состояние другого процесса. Проверки " +"основываются на учётных данных и мандатах двух процессов, разрешено ли " +"создание дампа «целевого» процесса, а результаты проверок выполняются любым " +"включённым модулем безопасности Linux (LSM) — например, SELinux, Yama и " +"Smack — и commoncap LSM (который вызывается всегда)." + +#. commit 006ebb40d3d65338bd74abb03b945f8d60e362bd +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Prior to Linux 2.6.27, all access checks were of a single type. Since Linux " +"2.6.27, two access mode levels are distinguished:" +msgstr "" +"До Linux 2.6.27 все проверки доступа были одного вида. Начиная с Linux " +"2.6.27 различают два уровня проверок доступа:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_MODE_READ>" +msgstr "B<PTRACE_MODE_READ>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "For \"read\" operations or other operations that are less dangerous, such " +#| "as: B<get_robust_list>(2); B<kcmp>(2); reading I</proc/[pid]/auxv>, I</" +#| "proc/[pid]/environ>, or I</proc/[pid]/stat>; or B<readlink>(2) of a I</" +#| "proc/[pid]/ns/*> file." +msgid "" +"For \"read\" operations or other operations that are less dangerous, such " +"as: B<get_robust_list>(2); B<kcmp>(2); reading I</proc/>pidI</auxv>, I</proc/" +">pidI</environ>, or I</proc/>pidI</stat>; or B<readlink>(2) of a I</proc/" +">pidI</ns/*> file." +msgstr "" +"Для операций «чтения» или других менее опасных операций: " +"B<get_robust_list>(2); B<kcmp>(2); чтение I</proc/[pid]/auxv>, I</proc/[pid]/" +"environ> или I</proc/[pid]/stat>, или B<readlink>(2) для файла I</proc/[pid]/" +"ns/*>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_MODE_ATTACH>" +msgstr "B<PTRACE_MODE_ATTACH>" + +#. Regarding the above description of the distinction between +#. PTRACE_MODE_READ and PTRACE_MODE_ATTACH, Stephen Smalley notes: +#. That was the intent when the distinction was introduced, but it doesn't +#. appear to have been properly maintained, e.g. there is now a common +#. helper lock_trace() that is used for +#. /proc/pid/{stack,syscall,personality} but checks PTRACE_MODE_ATTACH, and +#. PTRACE_MODE_ATTACH is also used in timerslack_ns_write/show(). Likely +#. should review and make them consistent. There was also some debate +#. about proper handling of /proc/pid/fd. Arguably that one might belong +#. back in the _ATTACH camp. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"For \"write\" operations, or other operations that are more dangerous, such " +"as: ptrace attaching (B<PTRACE_ATTACH>) to another process or calling " +"B<process_vm_writev>(2). (B<PTRACE_MODE_ATTACH> was effectively the default " +"before Linux 2.6.27.)" +msgstr "" +"Для операций «записи» или других более опасных операций: присоединение " +"ptrace (B<PTRACE_ATTACH>) к другому процессу или вызов " +"B<process_vm_writev>(2) (B<PTRACE_MODE_ATTACH> было эффективным значением по " +"умолчанию до Linux 2.6.27)." + +#. commit caaee6234d05a58c5b4d05e7bf766131b810a657 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Since Linux 4.5, the above access mode checks are combined (ORed) with one " +"of the following modifiers:" +msgstr "" +"Начиная с Linux 4.5 приведённые выше проверки режима доступа объединяются " +"(ИЛИ) с одним из следующих модификаторов:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_MODE_FSCREDS>" +msgstr "B<PTRACE_MODE_FSCREDS>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Use the caller's filesystem UID and GID (see B<credentials>(7)) or " +"effective capabilities for LSM checks." +msgstr "" +"Использовать UID и GID файловой системы у вызывающего (смотрите " +"B<credentials>(7)) или эффективные мандаты для проверок LSM." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_MODE_REALCREDS>" +msgstr "B<PTRACE_MODE_REALCREDS>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Use the caller's real UID and GID or permitted capabilities for LSM checks. " +"This was effectively the default before Linux 4.5." +msgstr "" +"Использовать реальные UID и GID у вызывающего или разрешающие мандаты для " +"проверок LSM. Это было эффективным значением по умолчанию до Linux 4.5." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Because combining one of the credential modifiers with one of the " +"aforementioned access modes is typical, some macros are defined in the " +"kernel sources for the combinations:" +msgstr "" +"Так как объединение модификаторов мандатов с одной из вышеупомянутых режимов " +"доступа часто используется, то в исходном коде ядра было определено " +"несколько макросов:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_MODE_READ_FSCREDS>" +msgstr "B<PTRACE_MODE_READ_FSCREDS>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Defined as B<PTRACE_MODE_READ | PTRACE_MODE_FSCREDS>." +msgstr "Определён как B<PTRACE_MODE_READ | PTRACE_MODE_FSCREDS>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_MODE_READ_REALCREDS>" +msgstr "B<PTRACE_MODE_READ_REALCREDS>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Defined as B<PTRACE_MODE_READ | PTRACE_MODE_REALCREDS>." +msgstr "Определён как B<PTRACE_MODE_READ | PTRACE_MODE_REALCREDS>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_MODE_ATTACH_FSCREDS>" +msgstr "B<PTRACE_MODE_ATTACH_FSCREDS>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Defined as B<PTRACE_MODE_ATTACH | PTRACE_MODE_FSCREDS>." +msgstr "Определён как B<PTRACE_MODE_ATTACH | PTRACE_MODE_FSCREDS>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_MODE_ATTACH_REALCREDS>" +msgstr "B<PTRACE_MODE_ATTACH_REALCREDS>" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Defined as B<PTRACE_MODE_ATTACH | PTRACE_MODE_REALCREDS>." +msgstr "Определён как B<PTRACE_MODE_ATTACH | PTRACE_MODE_REALCREDS>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "One further modifier can be ORed with the access mode:" +msgstr "" +"Один из следующих модификаторов может быть объединённых с режимом доступа:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_MODE_NOAUDIT> (since Linux 3.3)" +msgstr "B<PTRACE_MODE_NOAUDIT> (начиная с Linux 3.3)" + +#. commit 69f594a38967f4540ce7a29b3fd214e68a8330bd +#. Just for /proc/pid/stat +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Don't audit this access mode check. This modifier is employed for ptrace " +"access mode checks (such as checks when reading I</proc/>pidI</stat>) that " +"merely cause the output to be filtered or sanitized, rather than causing an " +"error to be returned to the caller. In these cases, accessing the file is " +"not a security violation and there is no reason to generate a security audit " +"record. This modifier suppresses the generation of such an audit record for " +"the particular access check." +msgstr "" +"Не протоколировать (audit) проверку режима доступа. Данный модификатор " +"применяется для проверок режима доступа ptrace (например, проверки при " +"чтении I</proc/>pidI</stat>), которые просто фильтруют или цензурируют " +"вывод, вместо возврата ошибки вызывающему. В этих случаях, доступ к файлу не " +"нарушает правила безопасности и нет причины генерировать запись о нарушении. " +"Данный модификатор отключает создание подобных протокольных записей для " +"определённых проверок доступа." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note that all of the B<PTRACE_MODE_*> constants described in this subsection " +"are kernel-internal, and not visible to user space. The constant names are " +"mentioned here in order to label the various kinds of ptrace access mode " +"checks that are performed for various system calls and accesses to various " +"pseudofiles (e.g., under I</proc>). These names are used in other manual " +"pages to provide a simple shorthand for labeling the different kernel checks." +msgstr "" +"Заметим, что все константы B<PTRACE_MODE_*>, описанные в данном разделе, " +"доступны только для ядра и не видны из пользовательского пространства. Имена " +"упомянутых констант служат обозначением различных видов проверок режима " +"доступа ptrace, которые выполняются для разных системных вызовов и получении " +"доступа к разным псевдо-файлам (например, в каталоге I</proc>). Эти имена " +"используются в других справочных страницах как простые сокращения различных " +"проверок ядра." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The algorithm employed for ptrace access mode checking determines whether " +"the calling process is allowed to perform the corresponding action on the " +"target process. (In the case of opening I</proc/>pid files, the \"calling " +"process\" is the one opening the file, and the process with the " +"corresponding PID is the \"target process\".) The algorithm is as follows:" +msgstr "" +"Задействуемый алгоритм проверок режима доступа ptrace определяется по " +"разрешению вызывающему процессу выполнять соответствующее действие над " +"процессом назначения (в случае открытия файлов I</proc/>pid «вызывающий " +"процесс» это открывающий файл, а процесс с соответствующим PID — «процесс " +"назначения»). Возможные алгоритмы:" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(1)" +msgstr "(1)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the calling thread and the target thread are in the same thread group, " +"access is always allowed." +msgstr "" +"Если вызывающая нить и нить назначения в одной группе нитей, то доступ " +"всегда разрешён." + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(2)" +msgstr "(2)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the access mode specifies B<PTRACE_MODE_FSCREDS>, then, for the check in " +"the next step, employ the caller's filesystem UID and GID. (As noted in " +"B<credentials>(7), the filesystem UID and GID almost always have the same " +"values as the corresponding effective IDs.)" +msgstr "" +"Если режим доступа равен B<PTRACE_MODE_FSCREDS>, то для проверки на " +"следующем шаге используется UID и GID файловой системы у вызывающего (как " +"упомянуто в B<credentials>(7), UID и GID файловой системы почти всегда равны " +"значениям соответствующих эффективных идентификаторов)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Otherwise, the access mode specifies B<PTRACE_MODE_REALCREDS>, so use the " +"caller's real UID and GID for the checks in the next step. (Most APIs that " +"check the caller's UID and GID use the effective IDs. For historical " +"reasons, the B<PTRACE_MODE_REALCREDS> check uses the real IDs instead.)" +msgstr "" +"В противном случае режим доступа равен B<PTRACE_MODE_REALCREDS>, и на " +"следующем шаге проверок используются реальные UID и GID вызывающего " +"(большинство программных интерфейсов, которые проверяют UID и GID " +"вызывающего, используют эффективные идентификаторы. В проверке " +"B<PTRACE_MODE_REALCREDS> используются реальные ID только в силу исторических " +"причин)." + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(3)" +msgstr "(3)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Deny access if I<neither> of the following is true:" +msgstr "Запрещается доступ, если срабатывает I<любое> из этих правил:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The real, effective, and saved-set user IDs of the target match the caller's " +"user ID, I<and> the real, effective, and saved-set group IDs of the target " +"match the caller's group ID." +msgstr "" +"Реальные, эффективные и сохранённые пользовательские ID назначения совпадают " +"с пользовательским ID вызывающего, I<и> Реальные, эффективные и сохранённые " +"групповые ID назначения совпадают с групповым ID вызывающего." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The caller has the B<CAP_SYS_PTRACE> capability in the user namespace of the " +"target." +msgstr "" +"Вызывающий имеет мандат B<CAP_SYS_PTRACE> в пользовательском пространстве " +"имён назначения." + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(4)" +msgstr "(4)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Deny access if the target process \"dumpable\" attribute has a value other " +"than 1 (B<SUID_DUMP_USER>; see the discussion of B<PR_SET_DUMPABLE> in " +"B<prctl>(2)), and the caller does not have the B<CAP_SYS_PTRACE> capability " +"in the user namespace of the target process." +msgstr "" +"Доступ запрещается, если у процесса назначения значение атрибута " +"«возможности дампа» не равно 1 (B<SUID_DUMP_USER>; смотрите обсуждение " +"B<PR_SET_DUMPABLE> в B<prctl>(2)), и вызывающий не имеет мандата " +"B<CAP_SYS_PTRACE> в пользовательском пространстве имён назначения." + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(5)" +msgstr "(5)" + +#. (in cap_ptrace_access_check()): +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The kernel LSM I<security_ptrace_access_check>() interface is invoked to " +"see if ptrace access is permitted. The results depend on the LSM(s). The " +"implementation of this interface in the commoncap LSM performs the following " +"steps:" +msgstr "" +"Для проверки того, что доступ ptrace разрешён, вызывается интерфейс ядра LSM " +"I<security_ptrace_access_check>(). Результат зависит от LSM. Реализация " +"интерфейса в commoncap LSM выполняет следующие шаги:" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(5.1)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the access mode includes B<PTRACE_MODE_FSCREDS>, then use the caller's " +"I<effective> capability set in the following check; otherwise (the access " +"mode specifies B<PTRACE_MODE_REALCREDS>, so) use the caller's I<permitted> " +"capability set." +msgstr "" +"Если режим доступа включает B<PTRACE_MODE_FSCREDS>, то используется " +"I<эффективный> набор мандатов вызывающего в последующей проверке; в " +"противном случае (режим доступа равен B<PTRACE_MODE_REALCREDS>) используется " +"I<допускающий> набор мандатов." + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(5.2)" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The caller and the target process are in the same user namespace, and the " +"caller's capabilities are a superset of the target process's I<permitted> " +"capabilities." +msgstr "" +"Вызывающий и процесс назначения находятся в одном пользовательском " +"пространстве имён, и мандаты вызывающего составляют покрывающий набор " +"I<допускающих> мандатов процесса назначения." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The caller has the B<CAP_SYS_PTRACE> capability in the target process's user " +"namespace." +msgstr "" +"Вызывающий имеет мандат B<CAP_SYS_PTRACE> в пользовательском пространстве " +"имён процесса назначения." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Note that the commoncap LSM does not distinguish between B<PTRACE_MODE_READ> " +"and B<PTRACE_MODE_ATTACH>." +msgstr "" +"Заметим, что commoncap LSM не различает B<PTRACE_MODE_READ> и " +"B<PTRACE_MODE_ATTACH>." + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "(6)" +msgstr "(6)" + +#. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If access has not been denied by any of the preceding steps, then access is " +"allowed." +msgstr "Если доступ не был запрещён в предыдущих шагах, то доступ разрешается." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "/proc/sys/kernel/yama/ptrace_scope" +msgstr "/proc/sys/kernel/yama/ptrace_scope" + +#. commit 2d514487faf188938a4ee4fb3464eeecfbdcf8eb +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"On systems with the Yama Linux Security Module (LSM) installed (i.e., the " +"kernel was configured with B<CONFIG_SECURITY_YAMA>), the I</proc/sys/kernel/" +"yama/ptrace_scope> file (available since Linux 3.4) can be used to restrict " +"the ability to trace a process with B<ptrace>() (and thus also the ability " +"to use tools such as B<strace>(1) and B<gdb>(1)). The goal of such " +"restrictions is to prevent attack escalation whereby a compromised process " +"can ptrace-attach to other sensitive processes (e.g., a GPG agent or an SSH " +"session) owned by the user in order to gain additional credentials that may " +"exist in memory and thus expand the scope of the attack." +msgstr "" +"В системах с установленным модулем Yama Linux Security Module (LSM) (т. е., " +"ядро было настроено с параметром B<CONFIG_SECURITY_YAMA>) можно использовать " +"файл I</proc/sys/kernel/yama/ptrace_scope> (доступен, начиная с Linux 3.4) " +"для того, чтобы огранить возможность трассировки процесса с помощью " +"B<ptrace>() (то есть ограничить использование таких инструментов как " +"B<strace>(1) и B<gdb>(1)). Целью ограничения является предотвращение " +"возможности атаки, посредством которой скомпроментированный процесс " +"подключается через ptrace к другим ответственным процессам (например, к " +"агенту GPG или сеансу SSH), принадлежащим пользователю, чтобы получить " +"дополнительные полномочия (которые могут существовать в памяти) и, таким " +"образом, расширить атакуемое пространство." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "More precisely, the Yama LSM limits two types of operations:" +msgstr "Более точно, Yama LSM ограничивает два типа операций:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "Any operation that performs a ptrace access mode B<PTRACE_MODE_ATTACH> " +#| "check\\(emfor example, B<ptrace>() B<PTRACE_ATTACH>. (See the \"Ptrace " +#| "access mode checking\" discussion above.)" +msgid "" +"Any operation that performs a ptrace access mode B<PTRACE_MODE_ATTACH> " +"check\\[em]for example, B<ptrace>() B<PTRACE_ATTACH>. (See the \"Ptrace " +"access mode checking\" discussion above.)" +msgstr "" +"Все операции, которые выполняют проверку режима доступа ptrace " +"B<PTRACE_MODE_ATTACH>, например, B<ptrace>() B<PTRACE_ATTACH> (смотрите " +"«Проверка режима доступа ptrace» выше)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "B<ptrace>() B<PTRACE_TRACEME>." +msgstr "B<ptrace>() B<PTRACE_TRACEME>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A process that has the B<CAP_SYS_PTRACE> capability can update the I</proc/" +"sys/kernel/yama/ptrace_scope> file with one of the following values:" +msgstr "" +"Процесс, имеющий мандат B<CAP_SYS_PTRACE>, может записать в файл I</proc/sys/" +"kernel/yama/ptrace_scope> одно из следующих значений:" + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "0 (\"classic ptrace permissions\")" +msgstr "0 («обычные права ptrace»)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"No additional restrictions on operations that perform B<PTRACE_MODE_ATTACH> " +"checks (beyond those imposed by the commoncap and other LSMs)." +msgstr "" +"Без дополнительных ограничений на операции, выполняющие проверки " +"B<PTRACE_MODE_ATTACH> (кроме накладываемых commoncap и другими LSM)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The use of B<PTRACE_TRACEME> is unchanged." +msgstr "Использование B<PTRACE_TRACEME> не изменяется." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "1 (\"restricted ptrace\") [default value]" +msgstr "1 («ограниченный ptrace») [значение по умолчанию]" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When performing an operation that requires a B<PTRACE_MODE_ATTACH> check, " +"the calling process must either have the B<CAP_SYS_PTRACE> capability in the " +"user namespace of the target process or it must have a predefined " +"relationship with the target process. By default, the predefined " +"relationship is that the target process must be a descendant of the caller." +msgstr "" +"Когда выполняется операция, требующая проверки B<PTRACE_MODE_ATTACH>, " +"вызывающий процесс должен иметь мандат B<CAP_SYS_PTRACE> в пользовательском " +"пространстве имён процесса назначения или должен иметь предопределённые " +"отношения с процессом назначения. По умолчанию, предопределённые отношения " +"это когда процесс назначения должен быть потомком вызывающего." + +#. commit 90bb766440f2147486a2acc3e793d7b8348b0c22 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A target process can employ the B<prctl>(2) B<PR_SET_PTRACER> operation to " +"declare an additional PID that is allowed to perform B<PTRACE_MODE_ATTACH> " +"operations on the target. See the kernel source file I<Documentation/admin-" +"guide/LSM/Yama.rst> (or I<Documentation/security/Yama.txt> before Linux " +"4.13) for further details." +msgstr "" +"Процесс назначения может выполнить операцию B<prctl>(2) B<PR_SET_PTRACER> " +"для объявления дополнительного PID, которому разрешено выполнять операции " +"B<PTRACE_MODE_ATTACH> над процессом назначения. Подробности смотрите в файле " +"исходного кода ядра I<Documentation/admin-guide/LSM/Yama.rst> (или " +"I<Documentation/security/Yama.txt> до Linux 4.13)." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "2 (\"admin-only attach\")" +msgstr "2 («только администраторское присоединение»)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Only processes with the B<CAP_SYS_PTRACE> capability in the user namespace " +"of the target process may perform B<PTRACE_MODE_ATTACH> operations or trace " +"children that employ B<PTRACE_TRACEME>." +msgstr "" +"Только процессы с мандатом B<CAP_SYS_PTRACE> в пользовательском пространстве " +"имён процесса назначения могут выполнять операции B<PTRACE_MODE_ATTACH> или " +"трассировать потомков, выполнивших B<PTRACE_TRACEME>." + +#. type: TP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "3 (\"no attach\")" +msgstr "3 («присоединение заблокировано»)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"No process may perform B<PTRACE_MODE_ATTACH> operations or trace children " +"that employ B<PTRACE_TRACEME>." +msgstr "" +"Никакие процессы не могут выполнять операции B<PTRACE_MODE_ATTACH> или " +"трассировать потомков, выполнивших B<PTRACE_TRACEME>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Once this value has been written to the file, it cannot be changed." +msgstr "После записи такого значения в файл, его нельзя изменить." + +#. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"With respect to values 1 and 2, note that creating a new user namespace " +"effectively removes the protection offered by Yama. This is because a " +"process in the parent user namespace whose effective UID matches the UID of " +"the creator of a child namespace has all capabilities (including " +"B<CAP_SYS_PTRACE>) when performing operations within the child user " +"namespace (and further-removed descendants of that namespace). " +"Consequently, when a process tries to use user namespaces to sandbox itself, " +"it inadvertently weakens the protections offered by the Yama LSM." +msgstr "" +"Относительно значений 1 и 2 заметим, что создание нового пользовательского " +"пространства имён фактически удаляет защиту, предлагаемую Yama. Это " +"происходит из-за того, что процесс в родительском пользовательском " +"пространстве имён, у которого эффективный UID совпадает с UID создателя " +"дочернего пространства имён, имеет все мандаты (включая B<CAP_SYS_PTRACE>) " +"при выполнении им операций внутри дочернего пользовательского пространства " +"имён (вплоть до удаления потомков этого пространства имён). В результате, " +"когда процесс сам пытается использовать пользовательские пространства имён " +"для песочницы, это непреднамеренно ослабляет защиту, предлагаемую Yama LSM." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "C library/kernel differences" +msgstr "Отличия между библиотекой C и ядром" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"At the system call level, the B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>, and " +"B<PTRACE_PEEKUSER> requests have a different API: they store the result at " +"the address specified by the I<data> parameter, and the return value is the " +"error flag. The glibc wrapper function provides the API given in " +"DESCRIPTION above, with the result being returned via the function return " +"value." +msgstr "" +"На уровне системных вызовов запросы B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA> и " +"B<PTRACE_PEEKUSER> имеют разный программный интерфейс: они сохраняют " +"результат по адресу, указанному в параметре I<data>, а возвращаемое значение " +"является индикатором ошибки. Обёрточная функция glibc предоставляет " +"программный интерфейс, описанные ОПИСАНИЕ выше, а результат возвращается в " +"виде возвращаемого значения функции." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "BUGS" +msgstr "ДЕФЕКТЫ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a " +#| "different value than the one for 2.4. This leads to applications " +#| "compiled with 2.6 kernel headers failing when run on 2.4 kernels. This " +#| "can be worked around by redefining B<PTRACE_SETOPTIONS> to " +#| "B<PTRACE_OLDSETOPTIONS>, if that is defined." +msgid "" +"On hosts with Linux 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared " +"with a different value than the one for Linux 2.4. This leads to " +"applications compiled with Linux 2.6 kernel headers failing when run on " +"Linux 2.4. This can be worked around by redefining B<PTRACE_SETOPTIONS> to " +"B<PTRACE_OLDSETOPTIONS>, if that is defined." +msgstr "" +"На машинах с заголовочными файлами ядра 2.6 значение B<PTRACE_SETOPTIONS> " +"отличается от использованного в версии 2.4. Это приводит к тому, что " +"приложения, скомпилированные с такими заголовочными файлами, не работают при " +"использовании ядер 2.4. Этого можно избежать сделав B<PTRACE_SETOPTIONS> " +"равным B<PTRACE_OLDSETOPTIONS>, если данная константа определена." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Group-stop notifications are sent to the tracer, but not to real parent. " +"Last confirmed on 2.6.38.6." +msgstr "" +"Уведомления group-stop посылаются трассировщику, но не реальному родителю. " +"Последнее подтверждение в версии 2.6.38.6." + +#. Note from Denys Vlasenko: +#. Here "exits" means any kind of death - _exit, exit_group, +#. signal death. Signal death and exit_group cases are trivial, +#. though: since signal death and exit_group kill all other threads +#. too, "until all other threads exit" thing happens rather soon +#. in these cases. Therefore, only _exit presents observably +#. puzzling behavior to ptrace users: thread leader _exit's, +#. but WIFEXITED isn't reported! We are trying to explain here +#. why it is so. +#. FIXME . need to test/verify this scenario +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If a thread group leader is traced and exits by calling B<_exit>(2), a " +"B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the " +"subsequent B<WIFEXITED> notification will not be delivered until all other " +"threads exit. As explained above, if one of other threads calls " +"B<execve>(2), the death of the thread group leader will I<never> be " +"reported. If the execed thread is not traced by this tracer, the tracer " +"will never know that B<execve>(2) happened. One possible workaround is to " +"B<PTRACE_DETACH> the thread group leader instead of restarting it in this " +"case. Last confirmed on 2.6.38.6." +msgstr "" +"Если трассируется лидер группы нитей и завершается с помощью вызова " +"B<_exit>(2), то происходит его останов B<PTRACE_EVENT_EXIT> (если это " +"запрашивалось), но последующее уведомление B<WIFEXITED> не будет доставлено " +"пока все остальные нити не завершат работу. Как объяснялось выше, если одна " +"из остальных нитей вызывает B<execve>(2), то о завершении лидера группы " +"I<никогда> не будет сообщено. Если исполняемая нить не трассируется этим " +"трассировщиком, то трассировщик никогда не узнает, что происходил " +"B<execve>(2). Одним из обходных вариантов решения в этом случае является " +"выполнение B<PTRACE_DETACH> для лидера группы вместо перезапуска. Последнее " +"подтверждение в версии 2.6.38.6." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before " +"actual signal death. This may be changed in the future; B<SIGKILL> is meant " +"to always immediately kill tasks even under ptrace. Last confirmed on Linux " +"3.13." +msgstr "" +"Сигнал B<SIGKILL> всё ещё может вызвать остановку B<PTRACE_EVENT_EXIT> перед " +"настоящем завершением процесса по сигналу. Это поведение может измениться в " +"будущем; B<SIGKILL> всегда подразумевает немедленное завершение задач даже " +"под ptrace. Последняя подтверждённая версия Linux — 3.13." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Some system calls return with B<EINTR> if a signal was sent to a tracee, but " +"delivery was suppressed by the tracer. (This is very typical operation: it " +"is usually done by debuggers on every attach, in order to not introduce a " +"bogus B<SIGSTOP>). As of Linux 3.2.9, the following system calls are " +"affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2) " +"from an B<inotify>(7) file descriptor. The usual symptom of this bug is " +"that when you attach to a quiescent process with the command" +msgstr "" +"Некоторые системные вызовы возвращаются с B<EINTR>, если сигнал был послан " +"трассируемой нити, но доставка была подавлена трассировщиком (это очень " +"распространённая операция: она обычно выполняется отладчиками при каждом " +"присоединении, чтобы не вызывать ненужный B<SIGSTOP>). Начиная с Linux " +"3.2.9, подвержены следующие системные вызовы (вероятно, это не полный " +"список): B<epoll_wait>(2) и B<read>(2) из файлового дескриптора " +"B<inotify>(7). Обычный симптом этой ошибки: когда вы присоединяетесь к " +"неактивному процессу с помощью команды" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "strace -p E<lt>process-IDE<gt>\n" +msgstr "strace -p E<lt>process-IDE<gt>\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "then, instead of the usual and expected one-line output such as" +msgstr "то вместо обычного и ожидаемого вывода одной строки" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n" +msgstr "restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "select(6, [5], NULL, [5], NULL_\n" +msgstr "select(6, [5], NULL, [5], NULL_\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"('_' denotes the cursor position), you observe more than one line. For " +"example:" +msgstr "(«_» означает позицию курсора), вы видите несколько строк. Пример:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +" clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n" +" epoll_wait(4,_\n" +msgstr "" +" clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n" +" epoll_wait(4,_\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"What is not visible here is that the process was blocked in " +"B<epoll_wait>(2) before B<strace>(1) has attached to it. Attaching caused " +"B<epoll_wait>(2) to return to user space with the error B<EINTR>. In this " +"particular case, the program reacted to B<EINTR> by checking the current " +"time, and then executing B<epoll_wait>(2) again. (Programs which do not " +"expect such \"stray\" B<EINTR> errors may behave in an unintended way upon " +"an B<strace>(1) attach.)" +msgstr "" +"Здесь не видно, что процесс был заблокирован в B<epoll_wait>(2) до того, как " +"B<strace>(1) присоединился к нему. Присоединение заставляет B<epoll_wait>(2) " +"вернуться в пользовательское пространство с ошибкой B<EINTR>. В этом частном " +"случае, программа отвечает на B<EINTR> проверкой текущего времени и затем " +"вызывает B<epoll_wait>(2) снова (программы, которые не ожидают таких " +"«побочных» ошибок B<EINTR>, при присоединении B<strace>(1) могут повести " +"себя непредсказуемо)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Contrary to the normal rules, the glibc wrapper for B<ptrace>() can set " +"I<errno> to zero." +msgstr "" +"В отличие от обычных правил, обёрточная функция glibc для B<ptrace>() может " +"присваивать I<errno> значение нуля." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "SEE ALSO" +msgstr "СМ. ТАКЖЕ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<gdb>(1), B<ltrace>(1), B<strace>(1), B<clone>(2), B<execve>(2), " +"B<fork>(2), B<gettid>(2), B<prctl>(2), B<seccomp>(2), B<sigaction>(2), " +"B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), B<capabilities>(7), " +"B<signal>(7)" +msgstr "" +"B<gdb>(1), B<ltrace>(1), B<strace>(1), B<clone>(2), B<execve>(2), " +"B<fork>(2), B<gettid>(2), B<prctl>(2), B<seccomp>(2), B<sigaction>(2), " +"B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), B<capabilities>(7), " +"B<signal>(7)" + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "2023-02-05" +msgstr "5 февраля 2023 г." + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "Linux man-pages 6.03" +msgstr "Linux man-pages 6.03" + +#. type: TP +#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>" +msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>" + +#. type: TP +#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>" +msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>" + +#. type: TP +#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>" +msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>" + +#. type: TP +#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>" +msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>" + +#. type: TP +#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>" +msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>" + +#. type: TP +#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)" +msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (начиная с Linux 2.6.14)" + +#. type: TH +#: debian-unstable opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "2023-03-30" +msgstr "30 марта 2023 г." + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "Linux man-pages 6.05.01" +msgstr "Linux man-pages 6.05.01" + +#. type: TH +#: opensuse-leap-15-6 +#, no-wrap +msgid "Linux man-pages 6.04" +msgstr "Linux man-pages 6.04" |