From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00, DNS_FROM_OPENWHOIS, RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=no version=3.2.5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:date:from:to:subject:message-id :mail-followup-to:references:mime-version:content-type :content-disposition:content-transfer-encoding:in-reply-to; bh=NUgC9QO8bh5PtaLoJsj4JGKnTT319v8GwBTUxjmFBk8=; b=YVjkcSrvJI7wfwi6C6GAToG/TR9wIEe9OXOtSURb6tueKfKLzIkY3VgreWl2MLUnG4 zD1NrM0MMBu1SKOxKos5ZW1tk8qI7Z9YagO6INbv1/xUaRNecZkpROsV2zY6Rz7ufOXW edzuOvHBmjDg5vYFw00wTwLMp8113LnkSdQiE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:subject:message-id:mail-followup-to:references :mime-version:content-type:content-disposition :content-transfer-encoding:in-reply-to; b=rfKz3bN3ivdPR3uISxK4AYVBOO4arQ0FOGwhEC+ZR2BjgzbJKgxjR95aUREnj2oCPV eipkB+IO9sKv2xqxJBNdRoPgY5KnyROr4deEArvEwTbQt1nzxrm3XhiT2l9Lzhdhq4PK hmg9+9KHMvIvG5GIzCbKwSjnO49XbaEM9cHq0= Date: Thu, 24 Feb 2011 21:28:20 +0300 From: Dmitry Chistikov To: ALT Linux Community general discussions Message-ID: <20110224182820.GA7247@conflux.foliandre> Mail-Followup-To: ALT Linux Community general discussions References: <4D65F5B9.3060600@avtlg.ru> <20110224092844.GB7131@conflux.foliandre> <4D66398D.2070606@avtlg.ru> <20110224125527.GA13973@conflux.foliandre> <4D668B5C.9070300@avtlg.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4D668B5C.9070300@avtlg.ru> Subject: Re: [Comm] =?koi8-r?b?bWFuIN7F0sXaIHNzaA==?= X-BeenThere: community@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Community general discussions List-Id: ALT Linux Community general discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Feb 2011 18:28:21 -0000 Archived-At: List-Archive: List-Post: > > Кстати, честно говоря, я не понимаю вот этого (последний write() в stdout > > потомка): > > > >> [pid 27496] write(1, " unfinished .\nWhen the call retu"..., 4096) = -32 > > > > Почему он возвращает -32, а не -1? > > Не знаю, даже если я доберусь до исходного кода приведенного фрагмента в > bzip2, я вряд ли разберусь. Могу предположить, что это код ошибки "I/O > or other error", во всяком случае вроде именно так ругается в дальнейшем > bzip2 Мое непонимание не имеет отношения к bzip2. write() - это системный вызов, должен работать заранее известным образом в большинстве стандартных ситуаций. write() никогда не должен возвращать отрицательных значений, отличных от -1. Я совершенно не понимаю, откуда взялось число -32. > Дмитрий, я еще только учусь понимать strace, поэтому поный вывод привел ниже > $ ssh localhost -- strace -e trace=signal sh -c true > rt_sigprocmask(SIG_BLOCK, NULL, [PIPE], 8) = 0 Вот здесь смотрим в man этого вызова и видим, что третий аргумент - это возвращенное значение и оно (при данных параметрах) задает маску игнорируемых (blocked) сигналов. Таким образом, SIGPIPE как раз игнорируется. > $ strace -e trace=signal sh -c true > rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 Здесь то же самое, но маска пуста, то есть игнорируемых сигналов нет. По-видимому, это следы работы sshd (или его "сподвижников" ;)). > Кстати, аналогичную ситуацию наблюдается не только в сизифе, но и гноме P5. > [...] > Доберусь до 5.1 - проверю и там У меня есть машины с 5.1 и 4.1, на них такого эффекта не наблюдается. Попробуйте присоединиться (-p) strace'ом (-f -e trace=process,signal) к sshd, после чего устроить ssh localhost true (вроде все должно быть видно даже в таком простом варианте) и поглядеть на происходящее. Сам sshd игнорирует SIGPIPE, но, насколько я понимаю, выставляет умолчательный режим для запускаемых "через ssh" потомков. У меня это выглядит так (прямо перед execve("/bin/bash", ...)): [pid 2878] rt_sigaction(SIGPIPE, NULL, {SIG_IGN, [], 0}, 8) = 0 [pid 2878] rt_sigaction(SIGPIPE, {SIG_DFL, [], 0}, NULL, 8) = 0 Первый вызов запрашивает, какова реакция на SIGPIPE. Видно, что он игнорируется (SIG_IGN). Второй вызов устанавливает для этого сигнала поведение по умолчанию (SIG_DFL) - у SIGPIPE это означает завершение процесса. -- Дмитрий Чистиков