# 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 , 2014-2017. # kogamatranslator49 , 2015. # Darima Kogan , 2014. # Max Is , 2016. # Yuri Kozlov , 2011-2019. # Иван Павлов , 2017. msgid "" msgstr "" "Project-Id-Version: manpages-l10n\n" "POT-Creation-Date: 2024-06-01 06:13+0200\n" "PO-Revision-Date: 2019-10-12 08:58+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \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 debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "2 мая 2024 г." #. type: TH #: archlinux debian-unstable #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages 6.8" msgstr "Linux man-pages 6.7" #. 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, 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 Esys/ptrace.hE>\n" msgstr "B<#include Esys/ptrace.hE>\n" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "" #| "BIB<, pid_t >IB<,>\n" #| "B< void *>IB<, void *>IB<);>\n" msgid "" "BIB<, pid_t >IB<,>\n" "B< void *>IB<, void *>IB<);>\n" msgstr "" "BIB<, pid_t >IB<,>\n" "B< void *>IB<, void *>IB<);>\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() 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() позволяет указать какому процессу " "(«трассировщику») можно наблюдать и контролировать выполнение другого " "процесса («трассироемого»), просматривать и изменять его память и регистры. " "Обычно, он используется для реализации отладочных точек прерывания и для " "отслеживания системных вызовов." #. 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 is the thread ID of the corresponding Linux thread." msgstr "где I — идентификатор соответствующей нити 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(2) B flag.)" msgstr "" "Заметим, что в этой странице «многонитевой процесс» означает группу нитей, " "состоящую из нитей, созданных с помощью B(2) с флагом B." #. 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(2) and having the " "resulting child do a B, followed (typically) by an " "B(2). Alternatively, one process may commence tracing another " "process using B or B." msgstr "" "Процесс может начать трассировку с вызова B(2), в получившемся " "дочернем процессе выполнить действие B, после чего (обычно) " "выполнить B(2). Или же один процесс может начать отладку другого " "процесса при помощи B или B." #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| 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, which " #| "has its usual effect.) The tracer will be notified at its next call to " #| "B(2) (or one of the related \"wait\" system calls); that call " #| "will return a I 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)." 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, which has " "its usual effect.) The tracer will be notified at its next call to " "B(2) (or one of the related \"wait\" system calls); that call will " "return a I value containing information that indicates the cause of " "the stop in the tracee. While the tracee is stopped, the tracer can use " "various ptrace operations 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, работающий обычным образом). Трассировщик будет уведомлён об " "этом при следующем вызове B(2) (или подобном «ожидающем» системном " "вызове); этот вызов вернёт значение I, в котором содержится " "информация, указывающая на причину остановки трассируемой нити. Так как " "трассируемая нить остановлена, трассировщик может использовать различные " "запросы 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 option is not in effect, all successful calls " "to B(2) by the traced process will cause it to be sent a B " "signal, giving the parent a chance to gain control before the new program " "begins execution." msgstr "" "Если флаг B не действует, то все успешные вызовы " "B(2) трассируемой нитью будут приводить к отправки сигнала " "B, давая таким образом родителю шанс перехватить управление до " "того, как начнёт выполняться новая программа." #. 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." msgstr "" "По окончании трассировки трассировщик может заставить трассируемую нить " "продолжить свою работу в обычном не трассируемом режиме с помощью " "B." #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "The value of I determines the action to be performed:" msgid "The value of I determines the operation to be performed:" msgstr "Значение аргумента I определяет выполняемое действие:" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| 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, I, and I are ignored.)" msgid "" "Indicate that this process is to be traced by its parent. A process " "probably shouldn't make this operation if its parent isn't expecting to " "trace it. (I, I, and I are ignored.)" msgstr "" "Указывает, что этот процесс будет трассирован своим родительским процессом. " "Вероятно, процессу не следует посылать этот запрос, если родительский " "процесс не готов к трассировке (аргументы I, I и I " "игнорируются)." #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "The B request is used only by the tracee; the remaining " #| "requests are used only by the tracer. In the following requests, I " #| "specifies the thread ID of the tracee to be acted on. For requests other " #| "than B, B, B, and " #| "B, the tracee must be stopped." msgid "" "The B operation is used only by the tracee; the remaining " "operations are used only by the tracer. In the following operations, I " "specifies the thread ID of the tracee to be acted on. For operations other " "than B, B, B, and " "B, the tracee must be stopped." msgstr "" "Действие B используется только в трассируемой нити; " "остальные действия предназначены только для трассировщика. Для значений, " "описанных ниже, в параметре I задаётся идентификатор трассируемой нити, " "над которой будет производиться действие. Перед выполнением действий (кроме " "B, B, B и B) " "трассируемая нить должна быть остановлена." #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "Read a word at the address I in the tracee's memory, returning the " #| "word as the result of the B() call. Linux does not have " #| "separate text and data address spaces, so these two requests are " #| "currently equivalent. (I is ignored; but see NOTES.)" msgid "" "Read a word at the address I in the tracee's memory, returning the " "word as the result of the B() call. Linux does not have separate " "text and data address spaces, so these two operations are currently " "equivalent. (I is ignored; but see NOTES.)" msgstr "" "Читает слово по адресу I, находящееся в памяти трассируемой нити, " "возвращая это слово как результат вызова B() Linux не разделяет " "адресные пространства текста и данных, поэтому оба вызова абсолютно " "идентичны (значение I игнорируется; но смотрите ЗАМЕЧАНИЯ)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 in the tracee's USER area, which holds the " "registers and other information about the process (see Isys/user." "hE>). The word is returned as the result of the B() call. " "Typically, the offset must be word-aligned, though this might vary by " "architecture. See NOTES. (I is ignored; but see NOTES.)" msgstr "" "Читает слово по смещению I из области USER трассируемой нити, которая " "содержит информацию о регистрах и процессе (смотрите Isys/" "userhE>). Слово возвращается в качестве результата вызова B(). " "Обычно, смещение должно быть выровнено по границе слова, хотя это может " "зависеть от архитектуры системы. Смотрите ЗАМЕЧАНИЯ (значение I " "игнорируется; но смотрите ЗАМЕЧАНИЯ)." #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "Copy the word I to the address I in the tracee's memory. As " #| "for B and B, these two requests are " #| "currently equivalent." msgid "" "Copy the word I to the address I in the tracee's memory. As for " "B and B, these two operations are " "currently equivalent." msgstr "" "Копирует слово I в память трассируемой нити по адресу I. В " "настоящее время, как и для B и B, эти два " "действия одинаковы." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 to offset I in the tracee's USER area. As for " "B, 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 по смещению I в область USER трассирумой нити. " "Как и для B, смещение должно быть выровнено по границе " "слова. Для того, чтобы сохранить целостность ядра, некоторые изменения в " "область USER вносить запрещено." #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. 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 in the tracer. See Isys/user.hE> for " "information on the format of this data. (I is ignored.) Note that " "SPARC systems have the meaning of I and I reversed; that is, " "I is ignored and the registers are copied to the address I. " "B and B are not present on all " "architectures." msgstr "" "Копирует, соответственно, регистры общего назначения или регистры " "сопроцессора трассируемой нити в память трассировщика по адресу I. " "Формат передаваемой структуры описан в файле Isys/user.hE> " "(значение I игнорируется). Заметим, что в системах SPARC " "предназначение I и I поменяны местами; то есть I " "игнорируется, а регистры копируются по адресу I. B и " "B есть не на всех архитектурах." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.34)" msgstr "B (начиная с 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 specifies, in an architecture-" "dependent way, the type of registers to be read. B (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 to the corresponding " "B constant. I points to a B, which describes " "the destination buffer's location and length. On return, the kernel " "modifies B to indicate the actual number of bytes returned." msgstr "" "Читает регистры трассируемой нити. В I указывается, в зависящей от " "архитектуры форме, тип читаемых регистров. Значение B (равно 1) " "обычно служит для чтения регистров общего назначения. Если в ЦП есть, " "например, векторные регистры и для плавающей запятой, то их можно получить " "назначив I соответствующую константу B. Значение I " "указывает на B, которая описывает расположение буфера " "назначения и длину. При возврате ядро изменяет B, возвращая " "реальное количество возвращаемых байт." #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. 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 in the tracer. As for " "B, some general-purpose register modifications may be " "disallowed. (I is ignored.) Note that SPARC systems have the meaning " "of I and I reversed; that is, I is ignored and the " "registers are copied from the address I. B and " "B are not present on all architectures." msgstr "" "Копирует, соответственно, регистры общего назначения или регистры для " "плавающей запятой трассируемой нити из памяти трассировщика по адресу " "I. Как и в случае c B, изменения некоторых регистров " "общего назначения запрещены (значение I игнорируется). Заметим, что в " "системах SPARC предназначение I и I переставлены местами; то " "есть I игнорируется, а регистры копируются из памяти, на которую " "указывает адрес I. B и B есть не для " "всех архитектур." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.34)" msgstr "B (начиная с 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 and I is " "analogous to B." msgstr "" "Изменяет регистры трассируемой нити. Значение I и I аналогичны " "B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.3.99-pre6)" msgstr "B (начиная с 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 structure (see B(2)) from the tracee to the address " "I in the tracer. (I is ignored.)" msgstr "" "Получает информацию о сигнале, который вызвал остановку. Копирует структуру " "I (смотрите B(2)) из трассируемой нити в память " "трассировщика по адресу I (значение I игнорируется)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.3.99-pre6)" msgstr "B (начиная с 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 structure from the address " "I 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() itself. (I is ignored.)" msgstr "" "Устанавливает информацию о сигнале. Копирует структуру I, " "расположенную по адресу I трассировщика, в память трассируемой нити. " "Влияет только на сигналы, которые обычно были бы доставлены трассируемой " "нити и были пойманы трассировщиком. Затруднительно отличить обычные сигналы " "от созданных самим B() (значение I игнорируется)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.10)" msgstr "B (начиная с 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 structures without removing signals from a queue. " "I points to a I structure that specifies the " "ordinal position from which copying of signals should start, and the number " "of signals to copy. I structures are copied into the buffer " "pointed to by I. 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 structures, the " "I field includes information (B<__SI_CHLD>, B<__SI_FAULT>, etc.) " "that are not otherwise exposed to user space." msgstr "" "Получает структуры I не удаляя сигналы из очереди. Значение " "I указывает на структуру I, которая задаёт " "начальную позицию, из которой нужно начать копирование сигналов, а также их " "количество. Структуры I копируются в буфер, указываемый в " "I. Возвращаемое значение содержит количество скопированных сигналов " "(ноль означает, что сигналов в указанной позиции нет). Внутри возвращаемых " "структур I в поле I включается информация (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, 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, " "служащий для выборки сигналов из общей очереди сигналов процессов. Если этот " "флаг не указан, то сигналы читаются из очереди указанной нити." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.11)" msgstr "B (начиная с 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(2)) in the " "buffer pointed to by I, which should be a pointer to a buffer of type " "I. The I argument contains the size of the buffer pointed " "to by I (i.e., I)." msgstr "" "Помещает копию маски блокированных сигналов (смотрите B(2)) в " "буфер, указанный в I (должен быть указателем на буфер с типом " "I). Аргумент I содержит размер буфера, указанного в I " "(т. е. I)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.11)" msgstr "B (начиная с 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(2)) to the value " "specified in the buffer pointed to by I, which should be a pointer to " "a buffer of type I. The I argument contains the size of the " "buffer pointed to by I (i.e., I)." msgstr "" "Изменяет маску блокированных сигналов (смотрите B(2)) на " "значение из буфера, указанного в I (должен быть указателем на буфер с " "типом I). Аргумент I содержит размер буфера, указанного в " "I (т. е. I)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.4.6; see BUGS for caveats)" msgstr "B (начиная с 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. (I is ignored.) I is " "interpreted as a bit mask of options, which are specified by the following " "flags:" msgstr "" "Устанавливает флаги ptrace из I (значение I игнорируется). " "Значение I воспринимается как битовая маска, в которой задаются " "следующие флаги:" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.8)" msgstr "B (начиная с 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 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 трассируемому, если трассировщик существует. Этот " "параметр полезен для надзирателей ptrace, которые хотят убедиться, что " "трассируемые никогда не выйдут из-под контроля трассировщика." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.5.46)" msgstr "B (начиная с 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(2) and automatically start tracing the " "newly cloned process, which will start with a B, or " "B if B was used. A B(2) by the " "tracer will return a I value such that" msgstr "" "Останавливать трассируемую нить при следующем вызове B(2) и " "автоматически запускать трассировку только что склонированного процесса, " "который начнёт выполнение с обработки сигнала B или " "B, если используется B. Вызов B(2) " "вернёт трассировщику значение I, которое равно" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid " statusEE8 == (SIGTRAP | (PTRACE_EVENT_CLONEEE8))\n" msgstr " statusEE8 == (SIGTRAP | (PTRACE_EVENT_CLONEEE8))\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." msgstr "" "Значение PID нового процесса можно получить с помощью B." #. 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(2) calls in all cases. If the tracee " "calls B(2) with the B flag, B will " "be delivered instead if B is set; otherwise if the " "tracee calls B(2) with the exit signal set to B, " "B will be delivered if B is set." msgstr "" "В некоторых случаях вызовы B(2) могут быть не пойманы. Если " "трассируемая нить вызывает B(2) с флагом B, то будет " "доставлен B, если установлен B; в " "противном случае, если трассируемая нить вызывает B(2) с " "установленным сигналом выхода равным B, то будет доставлен " "B, если установлен B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.5.46)" msgstr "B (начиная с 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(2). A B(2) by the tracer " "will return a I value such that" msgstr "" "Останавливать трассируемую нить при следующем вызове B(). Вызов " "B(2) вернёт трассировщику значение I, которое равно" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid " statusEE8 == (SIGTRAP | (PTRACE_EVENT_EXECEE8))\n" msgstr " statusEE8 == (SIGTRAP | (PTRACE_EVENT_EXECEE8))\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." msgstr "" "Если исполняемая нить не является лидером группы нитей, то идентификатор " "нити сбрасывается в значение идентификатора лидера группы нитей перед его " "остановкой. Начиная с Linux 3.0, предыдущий идентификатор нити может быть " "получен с помощью B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.5.60)" msgstr "B (начиная с 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(2) by the tracer will return a " "I value such that" msgstr "" "Останавливать трассируемую нить при его завершении (exit). Вызов " "B() вернёт трассировщику значение I, которое равно" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid " statusEE8 == (SIGTRAP | (PTRACE_EVENT_EXITEE8))\n" msgstr " statusEE8 == (SIGTRAP | (PTRACE_EVENT_EXITEE8))\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." msgstr "" "Значение кода завершения трассируемой нити можно получить с помощью " "B." #. 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 (since Linux 2.5.46)" msgstr "B (начиная с 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(2) and automatically start tracing the " "newly forked process, which will start with a B, or " "B if B was used. A B(2) by the " "tracer will return a I value such that" msgstr "" "Останавливать трассируемую нить при следующем вызове B(2) и " "автоматически запускать трассировку только что созданного с помощью fork " "процесса, который начнёт выполнение с обработки сигнала B или " "B, если используется B. Вызов B(2) " "вернёт трассировщику значение I, которое равно" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid " statusEE8 == (SIGTRAP | (PTRACE_EVENT_FORKEE8))\n" msgstr " statusEE8 == (SIGTRAP | (PTRACE_EVENT_FORKEE8))\n" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.4.6)" msgstr "B (начиная с 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). This makes it easy for the tracer to distinguish " "normal traps from those caused by a system call." msgstr "" "При доставке сигналов ловушек системных вызовов, устанавливать бит 7 в " "номере сигнала (т. е., доставляется I). Это позволяет " "трассировщику легко отличить обычные ловушки от тех, которые были вызваны " "системным вызовом." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.5.46)" msgstr "B (начиная с 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(2) and automatically start tracing the " "newly vforked process, which will start with a B, or " "B if B was used. A B(2) by the " "tracer will return a I value such that" msgstr "" "Останавливать трассируемую нить при следующем вызове B(2) и " "автоматически запускать трассировку только что созданного с помощью vfork " "процесса, который начнёт выполнение с обработки сигнала B или " "B, если используется B. Вызов B(2) " "вернёт трассировщику значение I, которое равно" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid " statusEE8 == (SIGTRAP | (PTRACE_EVENT_VFORKEE8))\n" msgstr " statusEE8 == (SIGTRAP | (PTRACE_EVENT_VFORKEE8))\n" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.5.60)" msgstr "B (начиная с 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(2). A B(2) " "by the tracer will return a I value such that" msgstr "" "Останавливать трассируемую нить при следующем вызове B(2). Вызов " "B(2) вернёт трассировщику значение I, которое равно" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid " statusEE8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEEE8))\n" msgstr " statusEE8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEEE8))\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." msgstr "" "Значение PID нового процесса можно получить (начиная с Linux 2.6.18) с " "помощью B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.5)" msgstr "B (начиная с 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(2) B rule is " "triggered. A B(2) by the tracer will return a I value " "such that" msgstr "" "Останавливать трассируемую нить при возникновении правила B(2) " "B. Вызов B(2) вернёт трассировщику значение " "I, которое равно" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid " statusEE8 == (SIGTRAP | (PTRACE_EVENT_SECCOMPEE8))\n" msgstr " statusEE8 == (SIGTRAP | (PTRACE_EVENT_SECCOMPEE8))\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 stop, it is similar to a syscall-enter-" "stop. For details, see the note on B below. The " "seccomp event message data (from the B portion of the " "seccomp filter rule) can be retrieved with B." msgstr "" "Так как это останавливает B, это похоже на syscall-enter-stop. " "Дополнительную информацию смотрите в замечании к B " "ниже. Данные сообщения события seccomp (из части B правила " "фильтрации seccomp) можно получить с помощью B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.3)" msgstr "B (начиная с 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 capability, not " "have any seccomp protections installed, and not have " "B set on itself." msgstr "" "Приостановить защиты seccomp трассируемого. Это применяется независимо от " "режима и может быть использовано когда трассируемый ещё не установил фильтры " "seccomp. То есть, корректным действием будет приостановка защит seccomp " "трассируемого, до того как их установит трассируемый, позволить " "трассируемому установить фильтры, и затем очистить этот флаг, когда нужно " "возобновить работу фильтров. Установка этого параметра требует, чтобы " "трассировщик имел мандат B, не было установлено никаких защит " "seccomp и не установлен сам B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.5.46)" msgstr "B (начиная с 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) about the ptrace event that " "just happened, placing it at the address I in the tracer. For " "B, this is the tracee's exit status. For " "B, B, B, and " "B, this is the PID of the new process. For " "B, this is the B(2) filter's " "B associated with the triggered rule. (I is " "ignored.)" msgstr "" "Возвращает сообщения (с типом I) о событии ptrace, которое " "только что произошло, помещая его по адресу I в памяти трассировщика. " "Для B это код завершения трассируемой нити. Для " "B, B, B и " "B это PID нового процесса. Для B " "это B из фильтра B(2), связанного со сработавшим " "правилом (значение I игнорируется)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 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 " "is ignored.)" msgstr "" "Возобновляет работу остановленной трассируемой нити. Если значение I " "не равно нулю, то оно считается номером сигнала, который надо доставить " "трассируемой нити; в противном случае сигнал не передаётся. Таким образом, " "например, трассировщик может контролировать передачу сигнала трассируемой " "нити (значение I игнорируется)." #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "PTRACE_SINGLESTEP stops" msgid "B" 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, 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. So, " "for B, for example, the idea is to inspect the arguments to " "the system call at the first stop, then do another B and " "inspect the return value of the system call at the second stop. The I " "argument is treated as for B. (I is ignored.)" msgstr "" "Аналогично B они перезапускают остановленную трассируемую нить, " "но указывают, что процесс должен быть остановлен перед входом/выходом из " "системного вызова, или после исполнения одной инструкции, соответственно " "(трассируемая нить также, как обычно, будет остановлена при получении " "сигнала). С точки зрения трассировщика кажется, что трассируемая нить " "остановлена из-за получения сигнала B. Так, B " "например, позволяет изучить содержимое аргументов перед системным вызовом, а " "при следующем B можно просмотреть результат исполнения " "системного вызова. Аргумент I используется как в B " "(значение I игнорируется)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.16)" msgstr "B (начиная с 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-unstable fedora-rawhide 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 argument. The " "I argument is ignored. This operation 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 debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B" msgid "B" msgstr "B" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "B, B (since Linux 2.6.14)" msgid "B (since Linux 2.6.14)" msgstr "B, B (начиная с Linux 2.6.14)" #. As at 3.7 #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "For B, continue and stop on entry to the next system call, " #| "which will not be executed. See the documentation on syscall-stops " #| "below. For B, 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 argument " #| "is treated as for B. The I argument is ignored. " #| "These requests are currently supported only on x86." msgid "" "For B, continue and stop on entry to the next system call, " "which will not be executed. See the documentation on syscall-stops below. " "For B, 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 argument is treated " "as for B. The I argument is ignored. These operations " "are currently supported only on x86." msgstr "" "Действие B приводит к продолжению и остановке на входе в " "следующий системный вызов, который не будет выполнен . Смотрите описание по " "syscall-stop ниже. Действие B выполняет тоже " "самое, но для одиночной инструкции, если это не системный вызов. Это " "действие используется программами, подобными User Mode Linux, которым нужно " "эмулировать все системные вызовы трассируемых нитей. Аргумент I " "используется также как у B. Аргумент I игнорируется. Эти " "запросы поддерживаются только на x86." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.4)" msgstr "B (начиная с 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 (or other stopping signal). See the \"group-stop\" subsection " "for additional information. B works only on tracees attached " "by B." msgstr "" "Перезапускает остановленную трассируемую нить, но её выполнение не " "начинается. Полученное состояние трассируемой нити подобно процессу, который " "был остановлен по B (или другим останавливающим сигналом). " "Дополнительную информацию смотрите в подразделе «group-stop». " "B работает только для трассируемых нитей, присоединённых с " "помощью B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 to terminate it. (I and I are " "ignored.)" msgstr "" "Посылает трассируемой нити сигнал B для его уничтожения (значения " "I и I игнорируются)." #. [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 Instead, send a B " "directly using B(2) or B(2). The problem with B " "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 directly has no such limitation." msgstr "" "I<Это действие устарело; не используйте его!> Вместо него отправляйте " "B напрямую с помощью B(2) или B(2). Проблема с " "действием B в том, что оно требует, чтобы трассируемая нить " "была режиме signal-delivery-stop, в противном случае оно может не сработать " "(т. е., может завершиться без ошибок, но трассируемая нить не будет " "уничтожена). В отличие от него, отправка B напрямую не имеет " "данного ограничения." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.4)" msgstr "B (начиная с 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 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 was sent to it, the tracee stops with B " "and I 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 with I == B. " "B only works on tracees attached by B." msgstr "" "Остановить трассируемый объект. Если трассируемый объект выполняется или " "спит в пространстве ядра и действует B, то системный вызов " "прерывается и сообщается о syscall-exit-stop (прерванный системный вызов " "перезапускается при перезапуске трассируемого объекта). Если трассируемый " "объект был уже остановлен по сигналу и ему был послан B, то " "трассируемый объект останавливается с B и " "I возвращает сигнал остановки. Если в этот же момент " "генерируется любое другое событие ptrace-stop (например, если трассируемому " "посылается сигнал), то возникает ptrace-stop. Если ничего из " "вышеперечисленного не происходит (например, если трассируемый выполняется в " "пространстве пользователя), то он останавливается с B и " "I == B. B работает только для " "трассируемых объектов, к которым подключились с помощью B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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, making it a tracee of the calling " "process. The tracee is sent a B, but will not necessarily have " "stopped by the completion of this call; use B(2) to wait for the " "tracee to stop. See the \"Attaching and detaching\" subsection for " "additional information. (I and I are ignored.)" msgstr "" "Выполняет присоединение к процессу с указанным I, делая его " "трассируемым для вызывающего процесса. Трассируемой нити посылается " "B, но нет жёсткого правила, что она будет остановлен по завершению " "этого вызова; используйте B(2) для ожидания остановки трассируемой " "нити. Дополнительную информацию смотрите в подразделе «Присоединение и " "отсоединение» (значения I и I игнорируются)." #. 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 is governed by a ptrace access mode " "B check; see below." msgstr "" "Право выполнять B определяется проверкой режима доступа " "ptrace B; смотрите ниже." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 3.4)" msgstr "B (начиная с 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, making it a tracee of the calling " "process. Unlike B, B does not stop the " "process. Group-stops are reported as B and " "I returns the stop signal. Automatically attached " "children stop with B and I returns " "B instead of having B signal delivered to them. " "B(2) does not deliver an extra B. Only a Bd " "process can accept B and B commands. The " "\"seized\" behavior just described is inherited by children that are " "automatically attached using B, B, " "and B. I must be zero. I contains a bit " "mask of ptrace options to activate immediately." msgstr "" "Выполняет присоединение к процессу, указанному в I, делает его " "трассируемым для вызывающего процесса. В отличие от B, " "B не останавливает процесс. О group-stops сообщается как " "B и I возвращает сигнал остановки. " "Автоматически присоединённые потомки останавливаются с B " "и I возвращает B вместо доставки им сигнала " "B. При вызове B(2) дополнительный B не посылается. " "Только подключённые с помощью B процессы могут принимать " "команды B и B. Только что описанное " "поведение «захвата» (seized) наследуется потомками, которые автоматически " "присоединяются с помощью B, B и " "B. Значение I должно быть равно нулю. В I " "содержится битовая маска параметров 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 is governed by a ptrace access mode " "B check; see below." msgstr "" "Право выполнять B определяется проверкой режима доступа ptrace " "B; смотрите ниже." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 4.4)" msgstr "B (начиная с 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 is an integer specifying the index of the filter to be dumped. The " "most recently installed filter has the index 0. If I is greater than " "the number of installed filters, the operation fails with the error " "B." msgstr "" "Значение I имеет тип integer и задаёт индекс фильтра для дампа. Индекс " "последнего установленного фильтра равен 0. Если I больше количества " "установленных фильтров, то операция завершается ошибкой B." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I is either a pointer to a I array that is large " "enough to store the BPF program, or NULL if the program is not to be stored." msgstr "" "Значение I является указателем на массив I " "достаточного размера для сохранения программы 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 was NULL, then this return value can be used to " "correctly size the I array passed in a subsequent call." msgstr "" "При успешном выполнении возвращаемое значение — количество инструкций в " "программе BPF. Если I равнялось NULL, то возвращается значение, " "которое можно использовать для создания массива I " "корректного размера, который будет передан в последующем вызове." #. 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 if the caller does not have " "the B capability or if the caller is in strict or filter " "seccomp mode. If the filter referred to by I is not a classic BPF " "filter, the operation fails with the error B." msgstr "" "Данная операция завершается ошибкой B, если вызывающий не имеет " "мандата B, или если вызывающий находится в ограничительном " "или фильтрующем режиме. Если фильтр, на который ссылается адрес I, не " "является классическим фильтром BPF, то операция завершается ошибкой " "B." #. 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 and the B options." msgstr "" "Эта операция доступна только, если ядро собрано с параметрами " "B и B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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, 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 is ignored.)" msgstr "" "Возобновляет работу остановленной трассируемой нити, аналогично " "B, но сначала отсоединяется от него. В Linux при помощи этого " "вызова трассируемая нить может быть отсоединёна независимо от того, каким " "методом была запущена трассировка (значение I игнорируется)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.0)" msgstr "B (начиная с 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(2). It reads " "the TLS entry in the GDT whose index is given in I, placing a copy of " "the entry into the I pointed to by I. (By contrast " "with B(2), the I of the I " "is ignored.)" msgstr "" "Данная операция выполняет задачу, подобную B(2). Она читает " "элемент TLS из GDT, чей индекс передан в I, помещает копию элемента в " "I, указанную в I (в отличие от " "B(2), значение I структуры I игнорируется)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since Linux 2.6.0)" msgstr "B (начиная с 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(2). It sets " "the TLS entry in the GDT whose index is given in I, assigning it the " "data supplied in the I pointed to by I. (By " "contrast with B(2), the I of the I is ignored; in other words, this ptrace operation can't be used " "to allocate a free TLS entry.)" msgstr "" "Данная операция выполняет задачу, подобную B(2). Она " "изменяет элемент TLS в GDT, чей индекс указан в I, данными, " "переданными в структуре I, на которую указывает I (в " "отличие от B(2), значение I структуры " "I игнорируется; иначе говоря, данная операция 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 (since Linux 5.3)" msgstr "B (начиная с 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 argument, which " "should be a pointer to a buffer of type I. The " "I argument contains the size of the buffer pointed to by the I " "argument (i.e., I). 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 argument, the output data is truncated." msgstr "" "Возвращает информацию о системном вызове, который привёл к останову. " "Информация помещается в буфер, указанный в аргументе I, который должен " "быть указателем на буфер с типом I. Аргумент " "I содержит размер буфера, на который указывает аргумент I (т. " "е., I). Возвращаемое значение равно " "количеству байт, записанных ядром. Если размер записываемых ядром данных " "больше значения из аргумента I, то данные результата обрезаются." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The I structure contains the following fields:" msgstr "Структура I содержит следующие поля:" #. 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, I, I, and I 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 field." msgstr "" "Поля I, I, I и I определены " "для всех видов остановов системных вызовов ptrace. Оставшаяся структура " "является объединением; из неё нужно читать только те поля, которые имеют " "смысл для конкретного вызова останова системного вызова, указанного в поле " "I." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I field has one of the following values (defined in Ilinux/" "ptrace.hE>) indicating what type of stop occurred and which part of the " "union is filled:" msgstr "" "В поле I указывается одно из следующих значений (определены в " "Ilinux/ptrace.hE>), определяющих тип возникшего останова и какая " "часть объединения заполнена:" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I component of the union contains information relating to a " "system call entry stop." msgstr "" "Компонент объединения I содержит информацию о входе в останов " "системного вызова." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I component of the union contains information relating to a system " "call exit stop." msgstr "" "Компонент объединения I содержит информацию о выходе из останова " "системного вызова." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I component of the union contains information relating to a " "B stop." msgstr "" "Компонент объединения I содержит информацию об останове " "B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 is limited to type B " "unless B 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 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(2)." msgstr "" "Когда (возможно, многонитевой) процесс получает уничтожающий сигнал (из-за " "того, что обработчик равен B и что действием по умолчанию является " "уничтожение процесса), все нити завершают работу (exit). Трассируемые нити " "сообщают о своей смерти своим трассировщикам. Уведомления об этом событии " "доставляется с помощью B(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 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 does not generate signal-delivery-stop and therefore the tracer " "can't suppress it. B kills even within system calls (syscall-exit-" "stop is not generated prior to death by B). The net effect is that " "B always kills the process (all its threads), even if some threads " "of the process are ptraced." msgstr "" "Сигнал B не генерирует режим signal-delivery-stop и поэтому " "трассировщик не может подавить его. Сигнал B уничтожает даже внутри " "системных вызовов (syscall-exit-stop не генерируется перед уничтожением по " "B). Конечным результатом B всегда является уничтожение " "процесса (всех его нитей), даже если для некоторых нитей процесса " "выполняется трассировка." #. 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(2), every tracee in its thread group " "reports its death to its tracer." msgstr "" "Если какая-нибудь нить вызывает B(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 option is on, B will happen " "before actual death. This applies to exits via B(2), " "B(2), and signal deaths (except B, depending on the " "kernel version; see BUGS below), and when threads are torn down on " "B(2) in a multithreaded process." msgstr "" "Если установлен флаг B, то перед непосредственным " "уничтожением возникает B. Это случается при выходе " "посредством B(2), B(2) и из-за уничтожения по сигналу (за " "исключением B, в зависимости от версии ядра; смотрите ДЕФЕКТЫ ниже) " "и когда нити многонитевой процесса разрушаются при B(2)." #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| 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). Therefore, the tracer must be prepared to handle an " #| "B 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 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 will reliably report the tracee's death status if a " #| "ptrace operation returned B. I may return 0 " #| "instead. In other words, the tracee may be \"not yet fully dead\", but " #| "already refusing ptrace requests." 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). " "Therefore, the tracer must be prepared to handle an B 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 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 will reliably report the " "tracee's death status if a ptrace operation returned B. " "I may return 0 instead. In other words, the tracee may be " "\"not yet fully dead\", but already refusing ptrace operations." msgstr "" "Трассировщик не может предполагать, что трассируемая нить, остановленная по " "ptrace, существует. Если много случаев, когда трассируемая нить может быть " "уничтожена будучи в остановленном состоянии (например, по B). " "Поэтому, трассировщик должен быть готов обработать ошибку B при любом " "действии ptrace. К сожалению, эта же ошибка возвращается, если трассируемая " "нить существует, но не остановлена по ptrace (для действий, которые требуют " "остановленной трассируемой нити), или если она не трассируется процессом, " "который вызвал ptrace. Трассировщику необходимо отслеживать состояние " "остановки/работы трассируемой нити и воспринимать B как «трассируемая " "нить была неожиданно уничтожена» только, если он знает, что трассируемая " "нить была в состоянии ptrace-stop. Заметим, что нет гарантии того, что " "I всегда сообщит о состоянии уничтожения трассируемой " "нити, если действие ptrace вернуло B. Вызов I " "вместо этого может вернуть 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 ends its life by reporting " "I or I; there are cases where this " "does not occur. For example, if a thread other than thread group leader " "does an B(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 или " "I; есть несколько случаев, когда этого не происходит. " "Например, если нить — не лидер группы нитей — вызывает B(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(2), " "B(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 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(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, it will not respond to signals until B is " "received." msgstr "" "Трассируемый может находиться в двух состояниях: выполнения или остановки. В " "целях ptrace, трассируемый, заблокированный в системном вызове (например, " "B(2), B(2) и т.д.), считается выполняющимся, даже если он " "заблокирован уже долго. Состояние трассируемого после B " "находится, отчасти, в «сумеречной зоне»: не не в каком-либо из ptrace-stop " "(команды ptrace не будут с ним работать и он будет посылать уведомления " "B(2)), но он также может считаться за «остановленный», так как он " "не выполняет инструкций (не планируется для этого), и если он был в group-" "stop до B, он не будет отвечать на сигналы до тех пор, пока " "не получит B." #. 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-" "stops can be further subdivided into I, I, " "I, I, and so on. These stopped states are " "described in detail below." msgstr "" "В этой справочной странице любое состояние останова, в котором трассируемая " "нить готова выполнить действия ptrace трассировщика, называется I. В свою очередь, ptrace-stop можно разделить на I, I, I, I и так далее. " "Далее эти состояния останова будут описаны подробней." #. 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(2) (or one of the other \"wait\" system calls). Most of this " "manual page assumes that the tracer waits with:" msgstr "" "Когда выполняющаяся трассируемая нить входит в ptrace-stop, это видит " "трассировщик с помощью B(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 greater than 0 " "and I true." msgstr "" "О трассируемой нити в состоянии ptrace-stop сообщается возвратом I " "большим 0 и значением истины по I." #. 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 and B flags, " "but implies their functionality." msgstr "" "Флаг B<__WALL> не содержит флагов B и B, но подразумевает " "их назначение." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Setting the B flag when calling B(2) is not " "recommended: the \"continued\" state is per-process and consuming it can " "confuse the real parent of the tracee." msgstr "" "Устанавливать флаг B при вызове B(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 flag may cause B(2) to return 0 (\"no wait " "results available yet\") even if the tracer knows there should be a " "notification. Example:" msgstr "" "Использование флага B может привести к тому, что B(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 stops, syscall-stops. They all are reported by " "B(2) with I true. They may be differentiated " "by examining the value IE8>, and if there is ambiguity in " "that value, by querying B. (Note: the " "I macro can't be used to perform this examination, because " "it returns the value I<(statusEE8)\\ &\\ 0xff>.)" msgstr "" "Существуют следующие разновидности ptrace-stop: signal-delivery-stop, group-" "stop, остановки B, syscall-stop. Все они могут быть получены " "по B(2) с значением истинным по I. Их можно " "различить, если проверить значение IE8>, и, если есть " "неоднозначность этого значения, то запросив B (замечание: " "для выполнения этой проверки не может использоваться макрос " "I, так как он возвращает значение I<(statusEE8)\\ &" "\\ 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-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "When a (possibly multithreaded) process receives any signal except " #| "B, the kernel selects an arbitrary thread which handles the " #| "signal. (If the signal is generated with B(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 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 can't be " #| "blocked." msgid "" "When a (possibly multithreaded) process receives any signal except " "B, the kernel selects an arbitrary thread which handles the " "signal. (If the signal is generated with B(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 operation. This second step of signal delivery is " "called I 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 can't be blocked." msgstr "" "Когда процесс (возможно, многонитевой) принимает какой-либо сигнал кроме " "B, ядро выбирает произвольную нить для его обработки (если сигнал " "генерируется с помощью B(2), то назначаемая нить может быть явно " "выбрана вызывающим). Если над выбранной нитью выполняется трассировка, то " "она попадает в режим signal-delivery-stop. В этот момент сигнал ещё не " "доставлен процессу и может быть отменён трассировщиком. Если трассировщик не " "отменил сигнал, то он передаётся трассируемой нити при следующем запросе " "перезапуска ptrace. Этот второй этап доставки сигнала называется в этой " "справочной странице I<внедрением сигнала>. Заметим, что если сигнал " "блокируется, то signal-delivery-stop не происходит пока сигнал не будет " "разблокирован (исключением, как обычно, является B, который нельзя " "заблокировать)." #. 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(2) returning " "with I true, with the signal returned by " "I. If the signal is B, this may be a different " "kind of ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below " "for details. If I returns a stopping signal, this may be " "a group-stop; see below." msgstr "" "Signal-delivery-stop наблюдается трассировщиком посредством B(2), " "возвращающим истинное значения для I с сигналом, который " "возвращается по I. Если возвращается сигнал B, то " "он может быть разновидностью ptrace-stop; смотрите разделы «Syscall-stops» и " "«execve» далее. Если I возвращает останавливающий сигнал, " "то это может быть 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-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "where B is one of the restarting ptrace requests. If " #| "I is 0, then a signal is not delivered. Otherwise, the signal " #| "I is delivered. This operation is called I in " #| "this manual page, to distinguish it from signal-delivery-stop." msgid "" "where B is one of the restarting ptrace operations. If " "I is 0, then a signal is not delivered. Otherwise, the signal I " "is delivered. This operation is called I in this manual " "page, to distinguish it from signal-delivery-stop." msgstr "" "где B — одно из перезапускающих действий ptrace. Если " "значение I равно 0, то сигнал не доставляется. В противном случае, " "доставляется сигнал I. Данная операция в справочной странице называется " "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 value may be different from the I value: the " "tracer can cause a different signal to be injected." msgstr "" "Значение I может отличаться от значения I: " "трассировщик может поменять внедряемый сигнал." #. 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(2) system call for a few system calls which use a " "different mechanism for restarting) if the tracer uses B. " "Even system calls (such as B(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 even though no " "observable signal is injected to the tracee." msgstr "" "Заметим, что подавленный сигнал всё равно заставит системные вызовы " "завершиться как можно скорее. В этом случае системные вызовы будут " "перезапущены: если трассировщик использует B, то обнаружит, " "когда трассируемая нить повторно выполнила прерванный системный вызов (или " "системный вызов B(2) для некоторых системных вызовов, " "которые используют другой механизм перезапуска). Даже системные вызовы " "(такие как B(2)), которые не перезапускаются по сигналу, будут " "перезапущены после подавления сигнала; однако, в ядре существуют дефекты, из-" "за которых некоторые системные вызовы завершаются с ошибкой B, даже " "если наблюдаемый сигнал не был внедрён в трассируемую нить." #. 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 is nonzero. No " "error is reported; a nonzero I may simply be ignored. Ptrace users " "should not try to \"create a new signal\" this way: use B(2) " "instead." msgstr "" "Перезапускающие действия ptrace, выдаваемые в ptrace-stops, отличные от " "signal-delivery-stop, не гарантируют внедрения сигнала, даже если значение " "I не равно нулю. Об ошибках не сообщается; ненулевое значение I " "может быть просто проигнорировано. Пользователи ptrace не должны пытаться " "«создать новый сигнал» таким способом — используйте вместо этого " "B(2)." #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| 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" msgid "" "The fact that signal injection operations 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, but I gets ignored and " "the tracee continues to run." msgstr "" "пытаясь внедрить I, но I игнорируется и трассируемая нить " "продолжает выполняться." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B 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 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 B, if they were pending when B was " "delivered. In other words, B may be not the first signal observed " "by the tracee after it was sent." msgstr "" "Сигнал B имеет побочный эффект — пробуждает (все нити) процесс, " "находящийся в group-stop. Это случается перед signal-delivery-stop. " "Трассировщик не может повлиять на это побочное действие (он может только " "подавить внедрение сигнала, что приводит к тому, что обработчик B " "не будет выполнен в трассируемой нити, если он установлен). Фактически, " "пробуждение из group-stop может следовать после signal-delivery-stop для " "сигнала(ов) I<отличных от> B, если они ожидают момента доставки " "B. Другими словами, B может быть не первым сигналом, " "который обнаруживает трассируемую нить после её посылки." #. 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 signal can't be injected." msgstr "" "В Linux 2.4 и более ранних версиях, сигнал B не может быть внедрён." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B can be used to retrieve a I structure which " "corresponds to the delivered signal. B may be used to " "modify it. If B has been used to alter I, the " "I field and the I parameter in the restarting command must " "match, otherwise the result is undefined." msgstr "" "Действие B может использоваться для получения структуры " "I, которая соответствует доставленному сигналу. Для её изменения " "можно использовать B. Если B " "использовалась для изменения I, то поле I и параметр " "I в перезапускающем действии должны совпадать, иначе результат " "непредсказуем." #. 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 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(2) returning with " "I true, with the stopping signal available via " "I. 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(2), который " "возвращается с истинным значением I и останавливающим " "сигналом из I. Тот же результат возвращается другими " "классами 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, B, " "B, or B; 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. If B fails " "with B, then it is definitely a group-stop. (Other failure codes " "are possible, such as B (\"no such process\") if a B killed " "the tracee.)" msgstr "" "Вызова можно избежать, если сигнал не равен B, B, " "B или B; только эти четыре сигнала являются " "останавливающими. Если трассировщик видит что-то другое, то это не может " "быть group-stop. В противном случае, трассировщику нужно вызвать " "B. Если B завершается с ошибкой " "B, то это определённо group-stop (возможны другие коды ошибок, " "например, B («нет такого процесса»), если трассируемая нить " "уничтожена по B)." #. 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, group-stop is indicated by " "B: IE16 == PTRACE_EVENT_STOP>. This " "allows detection of group-stops without requiring an extra " "B call." msgstr "" "Если подключение к трассируемому было сделано с помощью B, то " "group-stop указывается B: IE16 == " "PTRACE_EVENT_STOP>. Это позволяет обнаружить group-stop без дополнительного " "вызова B." #. 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 death) to the tracer, even if the tracer " "enters into another B(2) call." msgstr "" "Начиная с Linux 2.6.38, после того как трассировщик увидит ptrace-stop " "трассируемой нити и пока он не перезапустит или завершит её, трассируемая " "нить не будет выполняться, и не будет посылать уведомления (за исключением " "уничтожения по B) трассировщику, даже если трассировщик войдёт в " "другой вызов B(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(2), future " #| "B signals will not be reported to the tracer; this would cause " #| "the B 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(2), future B " "signals will not be reported to the tracer; this would cause the B " "signals to have no effect on the tracee." msgstr "" "Поведение ядра, описанное в предыдущем параграфе, вызывает проблемы с " "прозрачностью обработки останавливающих сигналов. Если трассировщик " "перезапускает трассируемую нить после group-stop, то останавливающий сигнал " "просто игнорируется — трассируемая нить продолжает выполняться. Если " "трассировщик не перезапускает трассируемую нить перед входом в следующий " "B(2), то о будущих сигналах B не будет сообщено " "трассировщику; это привело бы к тому, что сигналы B не повлияли бы " "на трассируемую нить." #. 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, a B 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(2) (such as when it is restarted by a B)." msgstr "" "Начиная с Linux 3.4, появился способ преодоления этой проблемы: вместо " "B для перезапуска трассируемой нити можно использовать " "B, при которой она не выполняется, а ждёт нового события, и " "это можно прочитать с помощью B(2) (например, когда был перезапуск " "по B)." #. 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 options, the tracee will enter ptrace-" "stops called B stops." msgstr "" "Если трассировщик устанавливает флаги B, то трассируемая " "нить будет входить в ptrace-stop-ы, называемые остановками B." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "B stops are observed by the tracer as B(2) " #| "returning with I, and I returns " #| "B. An additional bit is set in the higher byte of the status " #| "word: the value IE8> will be" msgid "" "B stops are observed by the tracer as B(2) returning " "with I, and I returns B (or " "for B, 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 IE8> will be" msgstr "" "Остановки B обнаруживаются трассировщиком когда B(2) " "возвращается с I и I возвращает " "B. В старшем байте слова состояния устанавливается дополнительный " "бит: значение IE8> будет равно" #. 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_fooEE8) | SIGTRAP).\n" msgstr "((PTRACE_EVENT_fooEE8) | 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" msgstr "B" #. 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(2) or B(2) with the B " "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(2))." msgstr "" "Остановка перед возвратом из B(2) или B(2) с флагом " "B. Когда трассируемая нить продолжает выполняться после этой " "остановки, она будет ждать выхода/exec потомка перед продолжением своего " "исполнения (другими словами, обычное поведение при B(2))." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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(2) or B(2) with the exit signal set " "to B." msgstr "" "Остановка перед возвратом из B(2) или B(2) с установленным " "сигналом выхода B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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(2)." msgstr "Остановка перед возвратом из B(2)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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(2) or B(2) with the B " "flag, but after the child unblocked this tracee by exiting or execing." msgstr "" "Остановка перед возвратом из B(2) или B(2) с установленным " "флагом B, но после того, как потомок разблокирует эту " "трассируемую нить, завершив работу или выполнив 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 can be used " "to retrieve the new thread's ID." msgstr "" "Для всех четырёх остановок, описанных выше, остановка происходит в родителе " "(т. е., трассируемой нити), а не в только что созданной нити. Для получения " "ID новой нити может использовать B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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(2). Since Linux 3.0, " "B returns the former thread ID." msgstr "" "Остановка перед возвратом из B(2). Начиная с Linux 3.0, " "B возвращает ID бывшей нити." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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(2)), signal death, or " "exit caused by B(2) in a multithreaded process. " "B returns the exit status. Registers can be examined " "(unlike when \"real\" exit happens). The tracee is still alive; it needs to " "be Bed or Bed to finish exiting." msgstr "" "Остановка перед выходом (включая уничтожение из B(2)), " "уничтожение от сигнала или выход, вызванный B(2) в многонитевом " "процессе. B возвращает код выхода. Можно прочитать " "значения регистров (в отличие от случая, когда происходит «реальный» выход). " "Трассируемая нить всё ещё существует; для завершения выхода должно быть " "выполнено отсоединение с помощью B или B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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 command, or group-stop, or initial " "ptrace-stop when a new child is attached (only if attached using " "B)." msgstr "" "Остановка вызвана командой B, или group-stop, или " "начальным ptrace-stop при присоединении к новому потомку (только если для " "присоединения использовалась B)." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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(2) rule on tracee syscall entry when " "B has been set by the tracer. The seccomp event " "message data (from the B portion of the seccomp filter " "rule) can be retrieved with B. The semantics of this " "stop are described in detail in a separate section below." msgstr "" "Остановка вызвана правилом B(2) из-за элемента syscall " "трассируемого, когда B была установлена " "трассировщиком. Данные сообщения события seccomp (из части " "B фильтрующего правила seccomp) можно получить с помощью " "B. Семантика данного останова подробно описана в " "отдельном разделе далее." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B on B stops returns B in " "I, with I set to I<(eventEE8)\\ |\\ SIGTRAP>." msgstr "" "B при остановке B возвращает B в " "I, а значение I устанавливается в I<(eventEE8)\\ |" "\\ 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 or B, the " "tracee enters syscall-enter-stop just prior to entering any system call " "(which will not be executed if the restart was using B, " "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, 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 " "syscall-exit-stop.). If the tracee is continued using any other method " "(including B), no syscall-exit-stop occurs. Note that all " "mentions B apply equally to B." msgstr "" "Если трассируемый был перезапущен по B или B, " "то он входит в режим syscall-enter-stop сразу перед тем как войти в какой-" "либо системный вызов (который не будет выполняться, если перезапуск был из-" "за B, независимо от каких-либо изменений в регистрах на этот " "момент или если трассируемый перезапускается после своей остановки). Неважно " "какой метод вызвал syscall-entry-stop, если трассировщик перезапускает " "трассируемого с помощью B, то трассируемый входит в syscall-" "exit-stop при окончании системного вызова, или если он прерывается сигналом " "(то есть, signal-delivery-stop никогда не возникает между syscall-enter-stop " "и syscall-exit-stop; он возникает I<после> syscall-exit-stop). Если " "трассируемый продолжает выполнение с помощью какого-то другого метода " "(включая B), то syscall-exit-stop не возникает. Заметим, что " "все упоминания B применяются и к B." #. 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, 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 stop " "(including seccomp stops), exit (if it entered B<_exit>(2) or " "B(2)), be killed by B, or die silently (if it is a " "thread group leader, the B(2) happened in another thread, and that " "thread is not traced by the same tracer; this situation is discussed later)." msgstr "" "Однако даже если трассируемый продолжил выполнение с помощью " "B, это не гарантирует, что следующая остановка будет syscall-" "exit-stop. Также, трассируемый может остановиться в остановке " "B (включая остановку seccomp), при выходе (если он вошёл в " "B<_exit>(2) или B(2)), уничтожении по сигналу B, или " "тихом уничтожении (если он является лидером группы нитей, возникает " "B(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(2) returning with I true, and " "I giving B. If the B " "option was set by the tracer, then I will give the value " "I<(SIGTRAP\\ |\\ 0x80)>." msgstr "" "Syscall-enter-stop и syscall-exit-stop обнаруживаются трассировщиком из " "B(2), возвращающем истинное значение I и " "I выдающем B. Если трассировщиком был установлен " "флаг B, то I выдаст значение " "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 " "by querying B for the following cases:" msgstr "" "Syscall-stop можно отличить от signal-delivery-stop по B, запросив " "B в следующих случаях:" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "I E= 0" msgstr "I E= 0" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "B was delivered as a result of a user-space action, for example, " #| "a system call (B(2), B(2), B(3), etc.), " #| "expiration of a POSIX timer, change of state on a POSIX message queue, or " #| "completion of an asynchronous I/O request." msgid "" "B was delivered as a result of a user-space action, for example, a " "system call (B(2), B(2), B(3), etc.), expiration of " "a POSIX timer, change of state on a POSIX message queue, or completion of an " "asynchronous I/O operation." msgstr "" "B был доставлен в результате действия из пространства пользователя, " "например, системного вызова (B(2), B(2), B(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_KERNEL (0x80)" msgstr "I == 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 was sent by the kernel." msgstr "B был послан ядром." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "I == SIGTRAP or I == (SIGTRAP|0x80)" msgstr "I == SIGTRAP или I == (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 for every syscall-stop may be somewhat " "expensive." msgstr "" "Однако, syscall-stop происходят очень часто (дважды за системный вызов), и " "выполнение B для каждого 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 == -B in syscall-enter-" "stop. Since B (like any other signal) always happens I " "syscall-exit-stop, and at this point I almost never contains -" "B, the B 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 == -B. Так как " "B (как и любой сигнал) всегда возникает I<после> syscall-exit-stop, " "и в этот момент I почти никогда не содержит B, B " "выглядит как «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 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 — рекомендуемый метод " "различения 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 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-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, syscall-exit-stop is not generated." msgstr "" "Если после syscall-enter-stop трассировщик использует перезапускающее " "действие, отличное от B, то 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 on syscall-stops returns B in I, " "with I set to B or I<(SIGTRAP|0x80)>." msgstr "" "B при syscall-stop возвращает B в I, " "значение I устанавливается в B или 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 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 различается от версии к версии. Здесь описано " "поведение от их появления до 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 stop occurs whenever a B 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 and this system call is unconditionally skipped." msgstr "" "Остановка B возникает из-за срабатывания правила " "B. Она не зависит от используемых методов перезапуска " "системного вызова. Примечательно, что seccomp по прежнему работает даже, " "если трассируемый был перезапущен с помощью B и этот " "системный вызов безоговорочно пропускается." #. 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 and " "B will normally cause a subsequent syscall-entry-stop. " "However, if after the B 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 and the tracee is restarted using B, " "the next observed stop will be a syscall-exit-stop, rather than the syscall-" "entry-stop that might have been expected." msgstr "" "Перезапуск из этой остановки будет вести себя как если бы остановка возникла " "прямо перед рассматриваемым системным вызовом. В частности, " "B и B как обычно вызовут последующий syscall-" "entry-stop. Однако, если после B номер системного " "вызова отрицательный, то и syscall-entry-stop и сам системный вызов будут " "пропущены. Это означает, что если номер системного вызова отрицательный " "после B и трассируемый перезапущен с помощью " "B, то следующая наблюдаемая остановка будет 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 stop was reordered to " "occur between syscall-entry-stop and syscall-exit-stop. Note that seccomp " "no longer runs (and no B will be reported) if the " "system call is skipped due to B." msgstr "" "Начиная с Linux 4.8, остановка B была преобразована " "при возникновении между syscall-entry-stop и syscall-exit-stop. Заметим, что " "seccomp больше не выполняется (и B не будет выдан), " "если системный вызов пропускается из-за B." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Functionally, a B stop functions comparably to a " "syscall-entry-stop (i.e., continuations using B 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 работает как syscall-entry-" "stop (т. е., продолжение использования B приведёт к 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 stop, seccomp will be rerun, with a " "B rule now functioning the same as a " "B. Specifically, this means that if registers are not " "modified during the B stop, the system call will then " "be allowed." msgstr "" "После остановки B, seccomp будет выполнен повторно с " "правилом B, которое теперь работает также как " "B. Точнее говоря, это означает, что если регистры не " "изменились во время остановки B,то после этого " "системный вызов будет разрешён." #. 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, B, " "B, B, and B) require the " "tracee to be in a ptrace-stop, otherwise they fail with B." msgstr "" "Для большинства действий ptrace (все, за исключением B, " "B, B, B и B) " "требуется, чтобы трассируемая нить была в режиме ptrace-stop, в противном " "случае они завершаются с ошибкой B." #. 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) may have no effect in some ptrace-stops, yet the " "call may succeed (return 0 and not set I); querying " "B may succeed and return some random value if current " "ptrace-stop is not documented as returning a meaningful event message." msgstr "" "Заметим, что о некоторых ошибках не сообщается. Например, установка " "информации о сигнале (I) может никак не отразиться в некоторых " "ptrace-stop, при этом вызов может завершиться без ошибок (возвращается 0 и " "значение I не устанавливается); действие B может " "выполниться без ошибок и вернуть произвольное значение, если текущий 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, B, or B " "options." msgstr "" "затрагивает одну трассируемую нить. Текущие флаги трассируемой нити " "заменяются. Флаги, наследуемые новой трассируемой нитью, создаются и " "«автоматически присоединяются» через активные флаги B, " "B или B." #. 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 is B, B, B, " "B, B, B, or " "B. If the tracee is in signal-delivery-stop, " "I is the signal to be injected (if it is nonzero). Otherwise, I " "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.)" msgstr "" "где значение I равно B, B, " "B, B, B, B " "или B. Если трассируемая нить в signal-delivery-" "stop, то в I указывается сигнал, который будет внедрён (если не равен " "нулю). В противном случае, I может игнорироваться (при перезапуске " "трассируемой нити из ptrace-stop в отличный от signal-delivery-stop, " "рекомендуется передавать в I значение 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 sends B to this thread. If the tracer wants this " "B 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 is seen, then " "suppress B injection. The design bug here is that a ptrace attach " "and a concurrently delivered B may race and the concurrent " "B may be lost." msgstr "" "B посылает в нить B. Если трассировщик хочет " "отменить действие B, ему нужно его подавить. Заметим, что если при " "присоединении в эту нить в тоже время посылаются другие сигналы, то " "трассировщик может увидеть, что трассируемая нить сначала вошла в signal-" "delivery-stop из этих сигналов! Обычной практикой является повторное " "внедрение этих сигналов до тех пор, пока не будет обнаружен B, а " "затем подавление внедрения B. Здесь есть ошибка в проектировании в " "том, что присоединение ptrace и одновременно доставляемый B могут " "состязаться и одновременный B может быть утерян." #. 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 and the tracer usually suppresses it, this " "may cause a stray B return from the currently executing system call " "in the tracee, as described in the \"Signal injection and suppression\" " "section." msgstr "" "Так как при присоединении посылается B и трассировщик обычно " "подавляет его, то это может привести к блуждающему возврату B из в " "данный момент выполняемого системного вызова в трассируемой нити, как " "описано в разделе «Внедрение и отмена сигнала»." #. 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 can be used instead of B. " "B 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 command." msgstr "" "Начиная с Linux 3.4, вместо B можно использовать " "B. B не останавливает присоединённый. Если вам " "нужно остановить его после присоединения (или в любое другое время) без " "отправки каких-либо, используйте действие B." #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "Special operations" msgid "The operation" 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 with" msgstr "" "включает трассировку вызвавшей нити. Нить продолжает выполняться (не входит " "в ptrace-stop). Обычно, за B следует" #. 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, B, or " "B options are in effect, then children created by, " "respectively, B(2) or B(2) with the B flag, " "B(2) or B(2) with the exit signal set to B, and " "other kinds of B(2), are automatically attached to the same tracer " "which traced their parent. B is delivered to the children, causing " "them to enter signal-delivery-stop after they exit the system call which " "created them." msgstr "" "Если включены флаги B, B или " "B, то потомок, создаваемый, соответственно, B(2) " "или B(2) с флагом B, B(2) или B(2) с " "установленным выходным сигналом равным B, и другими видами " "B(2), автоматически присоединяется к тому же трассировщику, которой " "трассирует их родителя. Сигнал B доставляется потомку, заставляя " "его войти в 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 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 parameter may be silently ignored." msgstr "" "B является перезапускающей операцией, поэтому она требует, " "чтобы трассируемая нить была в ptrace-stop. Если трассируемая нить в signal-" "delivery-stop, то может быть внедрён сигнал. В противном случае параметр " "I может быть проигнорирован." #. 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 (using B(2), to make sure it goes " #| "to the correct thread), wait for the tracee to stop in signal-delivery-" #| "stop for B and then detach it (suppressing B " #| "injection). A design bug is that this can race with concurrent " #| "Bs. Another complication is that the tracee may enter other " #| "ptrace-stops and needs to be restarted and waited for again, until " #| "B 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." msgid "" "If the tracee is running when the tracer wants to detach it, the usual " "solution is to send B (using B(2), to make sure it goes to " "the correct thread), wait for the tracee to stop in signal-delivery-stop for " "B and then detach it (suppressing B injection). A design " "bug is that this can race with concurrent Bs. Another complication " "is that the tracee may enter other ptrace-stops and needs to be restarted " "and waited for again, until B 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." msgstr "" "Если трассировщик хочет отсоединиться,а трассируемая нить выполняется, то " "решением является посылка сигнала B (с помощью B(2), чтобы " "точно достичь текущей нити), ожидание пока трассируемая нить не войдёт в " "signal-delivery-stop для доставки B и затем отсоединение от неё " "(подавив внедрение B). Ошибкой проектирования является возможность " "гонок с параллельно отправленными B. Другая трудность в том, что " "трассируемая нить может войти в другой ptrace-stop и потребуется его " "перезапуск и повторное ожидание появления B. Ещё одной сложностью " "является в проверки, что трассируемая нить уже не в ptrace-stop, так как в " "этом случае доставки сигнала не происходит — даже B." #. 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. If the tracee is restarted from signal-delivery-" "stop, the pending signal is injected." msgstr "" "Если трассировщик завершает работу, то все трассируемые нити автоматически " "отсоединяются и перезапускаются, если они не в group-stop. Выполнение " "перезапуска из group-stop в настоящее время содержит ошибки, но «плановым» " "поведением считается оставить трассируемую нить остановленной и подождать " "B. Если трассируемая нить перезапускается из 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(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(2), at " "completion of the call, it appears as though the B(2) occurred in " "the thread group leader, regardless of which thread did the B(2).) " "This resetting of the thread ID looks very confusing to tracers:" msgstr "" "Когда одна нить многонитевого процесса вызывает B(2), то ядро " "уничтожает все остальные нити процесса и сбрасывает ID выполняющейся нити в " "значение ID группы нитей (ID процесса. Или, говоря иначе, когда многонитевой " "процесс выполняет B(2), то по завершению вызова это выглядит как " "если бы B(2) произошёл в лидере группе нитей, независимо от того, " "какая нить вызвала B(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 stop, if the " "B 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, если " "включён флаг B. Затем все остальные нити, за исключением " "лидера группы нитей, сообщают о завершении, как если бы они кончили работу с " "помощью 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(2). " "(Remember, under ptrace, the \"pid\" returned from B(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(2) (помните, что в ptrace «pid», возвращаемый из B(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 stop happens, if the B " "option was turned on." msgstr "" "Затем происходит остановка B, если включён флаг " "B." #. 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 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 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(2) it will appear as " "if it has become a tracee of the tracer of the execing tracee." msgstr "" "Если в это время лидер группы нитей сообщил о своей остановке " "B в это время, то трассировщику кажется, что " "завершившийся лидер группы «возник из ниоткуда» (замечание: лидер группы " "нитей не сообщает о завершении через I до тех пор, пока " "есть одна работающая нить. Это не даёт возможности трассировщику увидеть его " "завершение и повторное появление). Если лидер группы нитей всё ещё " "выполнялся, то для трассировщика может казаться, что лидер группы нитей " "вернулся из другого системного вызова в который входил, или даже «вернулся " "из системного вызова, хотя не был ни в каком системном вызове». Если лидер " "группы нитей не трассируется (или трассируется другим трассировщиком), то во " "время B(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 option is the recommended tool for dealing with " "this situation. First, it enables B stop, which occurs " "before B(2) returns. In this stop, the tracer can use " "B to retrieve the tracee's former thread ID. (This " "feature was introduced in Linux 3.0.) Second, the B " "option disables legacy B generation on B(2)." msgstr "" "В этой ситуации рекомендуется использовать флаг B. Во-" "первых, он включает остановку B, которая происходит перед " "возвратом из B(2). В этой остановке трассировщик может использовать " "B для получения предыдущего ID трассируемой нити (эта " "возможность появилась в Linux 3.0). Во-вторых, флаг B " "отключает устаревшую генерацию B при B(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 stop notification, it is " "guaranteed that except this tracee and the thread group leader, no other " "threads from the process are alive." msgstr "" "Когда трассировщик получает уведомление об остановке B, " "гарантируется, что за исключением этой трассируемой нити и лидера группы " "нитей, больше живых нитей в этом процессе нет." #. 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 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 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 трассировщик " "должен очистить все свои внутренние структуры данных, описывающие нити этого " "процесса, и оставить только одну структуру данных, которая описывает одну " "ещё выполняющуюся трассируемую нить, у которой" #. 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(2) at the same time:" msgstr "Пример: две нити вызывают B(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\" Eunfinished ...E\n" "*** we issue PTRACE_SYSCALL for thread 1 **\n" "*** we get syscall-enter-stop in thread 2: **\n" "PID2 execve(\"/bin/bar\", \"bar\" Eunfinished ...E\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... execve resumedE ) = 0\n" msgstr "" "*** мы получаем syscall-enter-stop в нити 1: **\n" "PID1 execve(\"/bin/foo\", \"foo\" Eunfinished ...E\n" "*** мы выдаём PTRACE_SYSCALL для нити 1 **\n" "*** мы получаем syscall-enter-stop в нити 2: **\n" "PID2 execve(\"/bin/bar\", \"bar\" Eunfinished ...E\n" "*** мы выдаём PTRACE_SYSCALL для нити 2 **\n" "*** мы получаем PTRACE_EVENT_EXEC for PID0, мы выдаём PTRACE_SYSCALL **\n" "*** мы получаем syscall-exit-stop для PID0: **\n" "PID0 E... execve resumedE ) = 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 option is I in effect for the execing " "tracee, and if the tracee was Bed rather that " "Bd, the kernel delivers an extra B to the tracee " "after B(2) returns. This is an ordinary signal (similar to one " "which can be generated by I), not a special kind of ptrace-" "stop. Employing B for this signal returns I set " "to 0 (I). This signal may be blocked by signal mask, and thus may " "be delivered (much) later." msgstr "" "Если флаг B I<не> действует на выполняющуюся " "трассируемую нить и если трассируемая нить подключена с помощью " "B, а не B, то ядро доставляет ей дополнительный " "B после возврата из B(2). Это обычный сигнал (похожий на " "тот, который генерируется с помощью I), а не какая-то " "специальная разновидность ptrace-stop. Выдача B для этого " "сигнала возвращает I равный 0 (I). Этот сигнал может быть " "блокирован маской сигналов и поэтому может быть доставлен (намного) позже." #. 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(1)) would not want to show this " "extra post-execve B signal to the user, and would suppress its " "delivery to the tracee (if B is set to B, it is a killing " "signal). However, determining I B to suppress is not easy. " "Setting the B option or using B and thus " "suppressing this extra B is the recommended approach." msgstr "" "Обычно, трассировщик (например, B(1)) не хотел бы показывать этот " "дополнительный пост-execve B сигнал пользователю, и хотел бы " "подавить его доставку в трассируемую нить (если обработчик B равен " "B, то это уничтожающий сигнал). Однако, определить I<какой> " "B подавлять, нелегко. Рекомендуется установить флаг " "B или B и затем подавить этот " "дополнительный B." #. 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(2). This used to cause the real parent of the process to stop " "receiving several kinds of B(2) notifications when the child " "process is traced by some other process." msgstr "" "Программный интерфейс ptrace использует стандартный обмен сигналами UNIX " "между родителем и потомком через B(2). Это приводит к тому, что " "настоящий родитель процесса перестаёт получать некоторые виды уведомлений " "B(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(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(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-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "On success, the B requests return the requested data (but " #| "see NOTES), the B request returns the number " #| "of instructions in the BPF program, and other requests return zero." msgid "" "On success, the B operations return the requested data (but " "see NOTES), the B operation returns the number of " "instructions in the BPF program, the B operation " "returns the number of bytes available to be written by the kernel, and other " "operations return zero." msgstr "" "При успешном выполнении запросы B возвращают запрашиваемые " "данные (но смотрите ЗАМЕЧАНИЯ), запрос B " "возвращает количество инструкций в программе BPF, а другие запросы " "возвращают ноль." #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "On error, all requests return -1, and I is set appropriately. " #| "Since the value returned by a successful B request may be " #| "-1, the caller must clear I before the call, and then check it " #| "afterward to determine whether or not an error occurred." msgid "" "On error, all operations return -1, and I is set to indicate the " "error. Since the value returned by a successful B operation " "may be -1, the caller must clear I before the call, and then check it " "afterward to determine whether or not an error occurred." msgstr "" "При ошибке для всех действий возвращается -1, а переменной I " "присваивается номер ошибки. Так как значение, возвращаемое при удачном " "выполнении B, может равняться -1, перед вызовом вызывающий " "должен очистить содержимое I, чтобы узнать, возникала ошибка или нет." #. 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" msgstr "B" #. 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" msgstr "B" #. 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 or B more or less arbitrarily." msgstr "" "Была сделана попытка чтения или записи информации в область памяти " "трассируемой нити или трассировщика, но, скорее всего, эта память не " "отображена или недоступна. К сожалению, в Linux в разных ситуациях в " "результате этой ошибки возвращаются значения B или B, что не " "всегда поддается объяснению." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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" msgstr "B" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "I 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." msgid "" "I 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 operation." msgstr "" "Задано неверное значение I, или была попытка чтения или записи " "информации в неподходящую область памяти трассируемой нити или " "трассировщика; ошибка выравнивания слов по границе, или при запросе " "возобновления работы дочернего процесса был задан неверно номер сигнала." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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); 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(1) (PID 1)." msgid "" "The specified process cannot be traced. This could be because the tracer " "has insufficient privileges (the required capability is B); " "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(1) (PID 1)." msgstr "" "Указанный процесс не может быть трассирован. Это может произойти потому, что " "трассировщик не имеет прав на трассировку (требуется мандат " "B); непривилегированные процессы не могут трассировать " "процессы, так как они не могут посылать сигналы, или если у них установлен " "set-user-ID/set-group-ID бит. Также, процесс может уже трассироваться или " "(на ядрах до версии 2.6.26) быть B(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" msgstr "B" #. type: Plain text #: archlinux debian-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| 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)." msgid "" "The specified process does not exist, or is not currently being traced by " "the caller, or is not stopped (for operations 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(1), the process with PID 1, may " #| "not be traced." msgid "" "Before Linux 2.6.26, B(1), the process with PID 1, may not be traced." msgstr "" "В ядрах Linux до версии 2.6.26, процесс B(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-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "Although arguments to B() are interpreted according to the " #| "prototype given, glibc currently declares B() as a variadic " #| "function with only the I 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>." msgid "" "Although arguments to B() are interpreted according to the " "prototype given, glibc currently declares B() as a variadic " "function with only the I 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() воспринимаются согласно заданному прототипу, в " "настоящее время в glibc B() объявлена как функция с переменным " "числом параметров, в которой фиксирован только параметр I. " "Рекомендуется всегда передавать четыре параметра, даже если в запрашиваемом " "действии они не используются (неиспользуемые аргументы указывайте как 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(2)." msgstr "" "Родитель трассируемой нити остаётся трассировщиком даже, если трассировщик " "вызывает B(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." msgstr "" "Структура памяти и области USER зависят от ОС и архитектуры системы. " "Указываемое смещение и возвращаемые данные могут не полностью " "соответствовать определению I." #. 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() call works currently in Linux. " "Its behavior differs significantly on other flavors of UNIX. In any case, " "use of B() is highly specific to the operating system and " "architecture." msgstr "" "Эта страница описывает работу системного вызова B() в Linux. Его " "работа значительно отличается от поведения в других системах UNIX. В любом " "случае, использование B() очень сильно зависит от ОС и архитектуры." #. 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() " #| "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() " "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», чьими результатами определяется будет ли " "разрешена операция (или это, в некоторых случаях, заставит операцию «чтения» " "цензурировать возвращаемые данные). Эти проверки выполняются в случаях, " "когда один процесс может просмотреть конфиденциальную информацию или, в " "некоторых случаях, изменять состояние другого процесса. Проверки " "основываются на учётных данных и мандатах двух процессов, разрешено ли " "создание дампа «целевого» процесса, а результаты проверок выполняются любым " "включённым модулем безопасности 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" msgstr "B" #. 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(2); B(2); reading I, I, or I; or B(2) of a I file." msgid "" "For \"read\" operations or other operations that are less dangerous, such " "as: B(2); B(2); reading IpidI, IpidI, or IpidI; or B(2) of a IpidI file." msgstr "" "Для операций «чтения» или других менее опасных операций: " "B(2); B(2); чтение I, I или I, или B(2) для файла I." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. 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) to another process or calling " "B(2). (B was effectively the default " "before Linux 2.6.27.)" msgstr "" "Для операций «записи» или других более опасных операций: присоединение " "ptrace (B) к другому процессу или вызов " "B(2) (B было эффективным значением по " "умолчанию до 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" msgstr "B" #. 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(7)) or " "effective capabilities for LSM checks." msgstr "" "Использовать UID и GID файловой системы у вызывающего (смотрите " "B(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" msgstr "B" #. 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" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Defined as B." msgstr "Определён как B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Defined as B." msgstr "Определён как B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Defined as B." msgstr "Определён как B." #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "B" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Defined as B." msgstr "Определён как B." #. 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 (since Linux 3.3)" msgstr "B (начиная с 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 IpidI) 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 (например, проверки при " "чтении IpidI), которые просто фильтруют или цензурируют " "вывод, вместо возврата ошибки вызывающему. В этих случаях, доступ к файлу не " "нарушает правила безопасности и нет причины генерировать запись о нарушении. " "Данный модификатор отключает создание подобных протокольных записей для " "определённых проверок доступа." #. 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 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). These names are used in other manual " "pages to provide a simple shorthand for labeling the different kernel checks." msgstr "" "Заметим, что все константы B, описанные в данном разделе, " "доступны только для ядра и не видны из пользовательского пространства. Имена " "упомянутых констант служат обозначением различных видов проверок режима " "доступа ptrace, которые выполняются для разных системных вызовов и получении " "доступа к разным псевдо-файлам (например, в каталоге I). Эти имена " "используются в других справочных страницах как простые сокращения различных " "проверок ядра." #. 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 Ipid 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 определяется по " "разрешению вызывающему процессу выполнять соответствующее действие над " "процессом назначения (в случае открытия файлов Ipid «вызывающий " "процесс» это открывающий файл, а процесс с соответствующим 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, then, for the check in " "the next step, employ the caller's filesystem UID and GID. (As noted in " "B(7), the filesystem UID and GID almost always have the same " "values as the corresponding effective IDs.)" msgstr "" "Если режим доступа равен B, то для проверки на " "следующем шаге используется UID и GID файловой системы у вызывающего (как " "упомянуто в B(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, 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 check uses the real IDs instead.)" msgstr "" "В противном случае режим доступа равен B, и на " "следующем шаге проверок используются реальные UID и GID вызывающего " "(большинство программных интерфейсов, которые проверяют UID и GID " "вызывающего, используют эффективные идентификаторы. В проверке " "B используются реальные 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 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 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 capability in the user namespace of the " "target." msgstr "" "Вызывающий имеет мандат B в пользовательском пространстве " "имён назначения." #. 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; see the discussion of B in " "B(2)), and the caller does not have the B capability " "in the user namespace of the target process." msgstr "" "Доступ запрещается, если у процесса назначения значение атрибута " "«возможности дампа» не равно 1 (B; смотрите обсуждение " "B в B(2)), и вызывающий не имеет мандата " "B в пользовательском пространстве имён назначения." #. 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() 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(). Результат зависит от 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, then use the caller's " "I capability set in the following check; otherwise (the access " "mode specifies B, so) use the caller's I " "capability set." msgstr "" "Если режим доступа включает B, то используется " "I<эффективный> набор мандатов вызывающего в последующей проверке; в " "противном случае (режим доступа равен B) используется " "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 " "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 capability in the target process's user " "namespace." msgstr "" "Вызывающий имеет мандат B в пользовательском пространстве " "имён процесса назначения." #. 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 " "and B." msgstr "" "Заметим, что commoncap LSM не различает B и " "B." #. 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), the I file (available since Linux 3.4) can be used to restrict " "the ability to trace a process with B() (and thus also the ability " "to use tools such as B(1) and B(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) можно использовать " "файл I (доступен, начиная с Linux 3.4) " "для того, чтобы огранить возможность трассировки процесса с помощью " "B() (то есть ограничить использование таких инструментов как " "B(1) и B(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 " #| "check\\(emfor example, B() B. (See the \"Ptrace " #| "access mode checking\" discussion above.)" msgid "" "Any operation that performs a ptrace access mode B check" "\\[em]for example, B() B. (See the \"Ptrace access " "mode checking\" discussion above.)" msgstr "" "Все операции, которые выполняют проверку режима доступа ptrace " "B, например, B() B (смотрите " "«Проверка режима доступа ptrace» выше)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B() B." msgstr "B() B." #. 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 capability can update the I file with one of the following values:" msgstr "" "Процесс, имеющий мандат B, может записать в файл I одно из следующих значений:" #. 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 " "checks (beyond those imposed by the commoncap and other LSMs)." msgstr "" "Без дополнительных ограничений на операции, выполняющие проверки " "B (кроме накладываемых 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 is unchanged." msgstr "Использование B не изменяется." #. 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 check, " "the calling process must either have the B 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, " "вызывающий процесс должен иметь мандат B в пользовательском " "пространстве имён процесса назначения или должен иметь предопределённые " "отношения с процессом назначения. По умолчанию, предопределённые отношения " "это когда процесс назначения должен быть потомком вызывающего." #. 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(2) B operation to " "declare an additional PID that is allowed to perform B " "operations on the target. See the kernel source file I (or I before Linux " "4.13) for further details." msgstr "" "Процесс назначения может выполнить операцию B(2) B " "для объявления дополнительного PID, которому разрешено выполнять операции " "B над процессом назначения. Подробности смотрите в файле " "исходного кода ядра I (или " "I до 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 capability in the user namespace " "of the target process may perform B operations or trace " "children that employ B." msgstr "" "Только процессы с мандатом B в пользовательском пространстве " "имён процесса назначения могут выполнять операции B или " "трассировать потомков, выполнивших B." #. 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 operations or trace children " "that employ B." msgstr "" "Никакие процессы не могут выполнять операции B или " "трассировать потомков, выполнивших B." #. 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) 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) " "при выполнении им операций внутри дочернего пользовательского пространства " "имён (вплоть до удаления потомков этого пространства имён). В результате, " "когда процесс сам пытается использовать пользовательские пространства имён " "для песочницы, это непреднамеренно ослабляет защиту, предлагаемую 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-unstable fedora-rawhide opensuse-tumbleweed #, fuzzy #| msgid "" #| "At the system call level, the B, B, and " #| "B requests have a different API: they store the result " #| "at the address specified by the I 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." msgid "" "At the system call level, the B, B, and " "B operations have a different API: they store the result at " "the address specified by the I 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, B и " "B имеют разный программный интерфейс: они сохраняют " "результат по адресу, указанному в параметре I, а возвращаемое значение " "является индикатором ошибки. Обёрточная функция 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 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 to " #| "B, if that is defined." msgid "" "On hosts with Linux 2.6 kernel headers, B 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 to " "B, if that is defined." msgstr "" "На машинах с заголовочными файлами ядра 2.6 значение B " "отличается от использованного в версии 2.4. Это приводит к тому, что " "приложения, скомпилированные с такими заголовочными файлами, не работают при " "использовании ядер 2.4. Этого можно избежать сделав B " "равным B, если данная константа определена." #. 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 stop will happen for it (if requested), but the " "subsequent B notification will not be delivered until all other " "threads exit. As explained above, if one of other threads calls " "B(2), the death of the thread group leader will I be " "reported. If the execed thread is not traced by this tracer, the tracer " "will never know that B(2) happened. One possible workaround is to " "B the thread group leader instead of restarting it in this " "case. Last confirmed on 2.6.38.6." msgstr "" "Если трассируется лидер группы нитей и завершается с помощью вызова " "B<_exit>(2), то происходит его останов B (если это " "запрашивалось), но последующее уведомление B не будет доставлено " "пока все остальные нити не завершат работу. Как объяснялось выше, если одна " "из остальных нитей вызывает B(2), то о завершении лидера группы " "I<никогда> не будет сообщено. Если исполняемая нить не трассируется этим " "трассировщиком, то трассировщик никогда не узнает, что происходил " "B(2). Одним из обходных вариантов решения в этом случае является " "выполнение B для лидера группы вместо перезапуска. Последнее " "подтверждение в версии 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 signal may still cause a B stop before " "actual signal death. This may be changed in the future; B is meant " "to always immediately kill tasks even under ptrace. Last confirmed on Linux " "3.13." msgstr "" "Сигнал B всё ещё может вызвать остановку B перед " "настоящем завершением процесса по сигналу. Это поведение может измениться в " "будущем; B всегда подразумевает немедленное завершение задач даже " "под 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 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). As of Linux 3.2.9, the following system calls are " "affected (this list is likely incomplete): B(2), and B(2) " "from an B(7) file descriptor. The usual symptom of this bug is " "that when you attach to a quiescent process with the command" msgstr "" "Некоторые системные вызовы возвращаются с B, если сигнал был послан " "трассируемой нити, но доставка была подавлена трассировщиком (это очень " "распространённая операция: она обычно выполняется отладчиками при каждом " "присоединении, чтобы не вызывать ненужный B). Начиная с Linux " "3.2.9, подвержены следующие системные вызовы (вероятно, это не полный " "список): B(2) и B(2) из файлового дескриптора " "B(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 Eprocess-IDE\n" msgstr "strace -p Eprocess-IDE\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... resuming interrupted call ...E_\n" msgstr "restart_syscall(E... resuming interrupted call ...E_\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(2) before B(1) has attached to it. Attaching caused " "B(2) to return to user space with the error B. In this " "particular case, the program reacted to B by checking the current " "time, and then executing B(2) again. (Programs which do not " "expect such \"stray\" B errors may behave in an unintended way upon " "an B(1) attach.)" msgstr "" "Здесь не видно, что процесс был заблокирован в B(2) до того, как " "B(1) присоединился к нему. Присоединение заставляет B(2) " "вернуться в пользовательское пространство с ошибкой B. В этом частном " "случае, программа отвечает на B проверкой текущего времени и затем " "вызывает B(2) снова (программы, которые не ожидают таких " "«побочных» ошибок B, при присоединении B(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() can set " "I to zero." msgstr "" "В отличие от обычных правил, обёрточная функция glibc для B() может " "присваивать I значение нуля." #. 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(1), B(1), B(1), B(2), B(2), " "B(2), B(2), B(2), B(2), B(2), " "B(2), B(2), B(2), B(3), B(7), " "B(7)" msgstr "" "B(1), B(1), B(1), B(2), B(2), " "B(2), B(2), B(2), B(2), B(2), " "B(2), B(2), B(2), B(3), B(7), " "B(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: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 #, no-wrap msgid "" "BIB<, pid_t >IB<,>\n" "B< void *>IB<, void *>IB<);>\n" msgstr "" "BIB<, pid_t >IB<,>\n" "B< void *>IB<, void *>IB<);>\n" #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 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, which has " "its usual effect.) The tracer will be notified at its next call to " "B(2) (or one of the related \"wait\" system calls); that call will " "return a I 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, работающий обычным образом). Трассировщик будет уведомлён об " "этом при следующем вызове B(2) (или подобном «ожидающем» системном " "вызове); этот вызов вернёт значение I, в котором содержится " "информация, указывающая на причину остановки трассируемой нити. Так как " "трассируемая нить остановлена, трассировщик может использовать различные " "запросы ptrace для обследования и изменения трассируемой нити. По окончании " "трассировщик разрешает трассируемой нити продолжить работу, возможно " "подавляя посылаемый ему сигнал (или даже отправляя вместо него другой " "сигнал)." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "The value of I determines the action to be performed:" msgstr "Значение аргумента I определяет выполняемое действие:" #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 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, I, and I are ignored.)" msgstr "" "Указывает, что этот процесс будет трассирован своим родительским процессом. " "Вероятно, процессу не следует посылать этот запрос, если родительский " "процесс не готов к трассировке (аргументы I, I и I " "игнорируются)." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "The B request is used only by the tracee; the remaining " "requests are used only by the tracer. In the following requests, I " "specifies the thread ID of the tracee to be acted on. For requests other " "than B, B, B, and " "B, the tracee must be stopped." msgstr "" "Действие B используется только в трассируемой нити; " "остальные действия предназначены только для трассировщика. Для значений, " "описанных ниже, в параметре I задаётся идентификатор трассируемой нити, " "над которой будет производиться действие. Перед выполнением действий (кроме " "B, B, B и B) " "трассируемая нить должна быть остановлена." #. type: TP #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "B, B" msgstr "B, B" #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "Read a word at the address I in the tracee's memory, returning the " "word as the result of the B() call. Linux does not have separate " "text and data address spaces, so these two requests are currently " "equivalent. (I is ignored; but see NOTES.)" msgstr "" "Читает слово по адресу I, находящееся в памяти трассируемой нити, " "возвращая это слово как результат вызова B() Linux не разделяет " "адресные пространства текста и данных, поэтому оба вызова абсолютно " "идентичны (значение I игнорируется; но смотрите ЗАМЕЧАНИЯ)." #. type: TP #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "B, B" msgstr "B, B" #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "Copy the word I to the address I in the tracee's memory. As for " "B and B, these two requests are currently " "equivalent." msgstr "" "Копирует слово I в память трассируемой нити по адресу I. В " "настоящее время, как и для B и B, эти два " "действия одинаковы." #. type: TP #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "B, B" msgstr "B, B" #. type: TP #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "B, B" msgstr "B, B" #. type: TP #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "B, B" msgstr "B, B" #. 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 #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 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 argument. The " "I 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 #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "B, B (since Linux 2.6.14)" msgstr "B, B (начиная с Linux 2.6.14)" #. As at 3.7 #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "For B, continue and stop on entry to the next system call, " "which will not be executed. See the documentation on syscall-stops below. " "For B, 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 argument is treated " "as for B. The I argument is ignored. These requests are " "currently supported only on x86." msgstr "" "Действие B приводит к продолжению и остановке на входе в " "следующий системный вызов, который не будет выполнен . Смотрите описание по " "syscall-stop ниже. Действие B выполняет тоже " "самое, но для одиночной инструкции, если это не системный вызов. Это " "действие используется программами, подобными User Mode Linux, которым нужно " "эмулировать все системные вызовы трассируемых нитей. Аргумент I " "используется также как у B. Аргумент I игнорируется. Эти " "запросы поддерживаются только на x86." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 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). " "Therefore, the tracer must be prepared to handle an B 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 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 will reliably report the " "tracee's death status if a ptrace operation returned B. " "I may return 0 instead. In other words, the tracee may be " "\"not yet fully dead\", but already refusing ptrace requests." msgstr "" "Трассировщик не может предполагать, что трассируемая нить, остановленная по " "ptrace, существует. Если много случаев, когда трассируемая нить может быть " "уничтожена будучи в остановленном состоянии (например, по B). " "Поэтому, трассировщик должен быть готов обработать ошибку B при любом " "действии ptrace. К сожалению, эта же ошибка возвращается, если трассируемая " "нить существует, но не остановлена по ptrace (для действий, которые требуют " "остановленной трассируемой нити), или если она не трассируется процессом, " "который вызвал ptrace. Трассировщику необходимо отслеживать состояние " "остановки/работы трассируемой нити и воспринимать B как «трассируемая " "нить была неожиданно уничтожена» только, если он знает, что трассируемая " "нить была в состоянии ptrace-stop. Заметим, что нет гарантии того, что " "I всегда сообщит о состоянии уничтожения трассируемой " "нити, если действие ptrace вернуло B. Вызов I " "вместо этого может вернуть 0. Другими словами, трассируемая нить может быть " "«ещё не полностью уничтожена», но уже отклонять действия ptrace." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "When a (possibly multithreaded) process receives any signal except " "B, the kernel selects an arbitrary thread which handles the " "signal. (If the signal is generated with B(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 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 can't be blocked." msgstr "" "Когда процесс (возможно, многонитевой) принимает какой-либо сигнал кроме " "B, ядро выбирает произвольную нить для его обработки (если сигнал " "генерируется с помощью B(2), то назначаемая нить может быть явно " "выбрана вызывающим). Если над выбранной нитью выполняется трассировка, то " "она попадает в режим signal-delivery-stop. В этот момент сигнал ещё не " "доставлен процессу и может быть отменён трассировщиком. Если трассировщик не " "отменил сигнал, то он передаётся трассируемой нити при следующем запросе " "перезапуска ptrace. Этот второй этап доставки сигнала называется в этой " "справочной странице I<внедрением сигнала>. Заметим, что если сигнал " "блокируется, то signal-delivery-stop не происходит пока сигнал не будет " "разблокирован (исключением, как обычно, является B, который нельзя " "заблокировать)." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "where B is one of the restarting ptrace requests. If I " "is 0, then a signal is not delivered. Otherwise, the signal I is " "delivered. This operation is called I in this manual " "page, to distinguish it from signal-delivery-stop." msgstr "" "где B — одно из перезапускающих действий ptrace. Если " "значение I равно 0, то сигнал не доставляется. В противном случае, " "доставляется сигнал I. Данная операция в справочной странице называется " "I<внедрением сигнала> для того, чтобы можно отличить её от signal-delivery-" "stop." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 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 #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "B was delivered as a result of a user-space action, for example, a " "system call (B(2), B(2), B(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 был доставлен в результате действия из пространства пользователя, " "например, системного вызова (B(2), B(2), B(3) и т. " "д.), истечении таймера POSIX, изменении состояния очереди сообщений POSIX " "или выполнении асинхронного запроса ввода/вывода." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "The request" msgstr "Запрос" #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 #, fuzzy #| msgid "" #| "On success, the B requests return the requested data (but " #| "see NOTES), the B request returns the number " #| "of instructions in the BPF program, and other requests return zero." msgid "" "On success, the B requests return the requested data (but see " "NOTES), the B request returns the number of " "instructions in the BPF program, the B request " "returns the number of bytes available to be written by the kernel, and other " "requests return zero." msgstr "" "При успешном выполнении запросы B возвращают запрашиваемые " "данные (но смотрите ЗАМЕЧАНИЯ), запрос B " "возвращает количество инструкций в программе BPF, а другие запросы " "возвращают ноль." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 #, fuzzy #| msgid "" #| "On error, all requests return -1, and I is set appropriately. " #| "Since the value returned by a successful B request may be " #| "-1, the caller must clear I 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 is set to indicate the " "error. Since the value returned by a successful B request may " "be -1, the caller must clear I before the call, and then check it " "afterward to determine whether or not an error occurred." msgstr "" "При ошибке для всех действий возвращается -1, а переменной I " "присваивается номер ошибки. Так как значение, возвращаемое при удачном " "выполнении B, может равняться -1, перед вызовом вызывающий " "должен очистить содержимое I, чтобы узнать, возникала ошибка или нет." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "I 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, или была попытка чтения или записи " "информации в неподходящую область памяти трассируемой нити или " "трассировщика; ошибка выравнивания слов по границе, или при запросе " "возобновления работы дочернего процесса был задан неверно номер сигнала." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 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: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "Although arguments to B() are interpreted according to the " "prototype given, glibc currently declares B() as a variadic " "function with only the I 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() воспринимаются согласно заданному прототипу, в " "настоящее время в glibc B() объявлена как функция с переменным " "числом параметров, в которой фиксирован только параметр I. " "Рекомендуется всегда передавать четыре параметра, даже если в запрашиваемом " "действии они не используются (неиспользуемые аргументы указывайте как I<0L> " "или I<(void\\ *)\\ 0>)." #. type: Plain text #: debian-bookworm fedora-40 mageia-cauldron opensuse-leap-15-6 msgid "" "At the system call level, the B, B, and " "B requests have a different API: they store the result at " "the address specified by the I 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, B и " "B имеют разный программный интерфейс: они сохраняют " "результат по адресу, указанному в параметре I, а возвращаемое значение " "является индикатором ошибки. Обёрточная функция glibc предоставляет " "программный интерфейс, описанные ОПИСАНИЕ выше, а результат возвращается в " "виде возвращаемого значения функции." #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "31 октября 2023 г." #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "Linux man-pages 6.06" #. type: TH #: fedora-rawhide #, no-wrap msgid "2024-03-03" msgstr "3 марта 2024 г." #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "Linux man-pages 6.7" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-03-30" msgstr "30 марта 2023 г." #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "Linux man-pages 6.04" #. type: TH #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages (unreleased)" msgstr "Linux man-pages 6.7"