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=-0.9 required=5.0 tests=AWL,BAYES_00, DNS_FROM_OPENWHOIS,SPF_PASS autolearn=no version=3.2.5 Message-ID: <4D668B5C.9070300@avtlg.ru> Date: Thu, 24 Feb 2011 19:46:20 +0300 From: Alexey Bochenin User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.14pre) Gecko/20110124 Lightning/1.0b3pre Thunderbird/3.1.8pre MIME-Version: 1.0 To: community@lists.altlinux.org References: <4D65F5B9.3060600@avtlg.ru> <20110224092844.GB7131@conflux.foliandre> <4D66398D.2070606@avtlg.ru> <20110224125527.GA13973@conflux.foliandre> In-Reply-To: <20110224125527.GA13973@conflux.foliandre> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit 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 16:46:28 -0000 Archived-At: List-Archive: List-Post: 24.02.2011 15:55, Dmitry Chistikov пишет: > Кстати, честно говоря, я не понимаю вот этого (последний write() в stdout > потомка): > >> [pid 27496] write(1, " unfinished .\nWhen the call retu"..., 4096) = -32 > > Почему он возвращает -32, а не -1? Не знаю, даже если я доберусь до исходного кода приведенного фрагмента в bzip2, я вряд ли разберусь. Могу предположить, что это код ошибки "I/O or other error", во всяком случае вроде именно так ругается в дальнейшем bzip2 >> Да, если не заворачивать все это дело в ssh, то bzip2 молчит. Ниже >> приведен strace по сигналам, но я не вижу SIGPIPE в листинге >> >> $ ssh localhost -- strace -f -e trace=signal,process -- man -w strace >> [...] > > Он там есть, но не выставляется, а уже наблюдается: > >> [pid 24150] rt_sigprocmask(SIG_BLOCK, NULL, [PIPE], 8) = 0 > > По-видимому, его выставяет sshd? Вообще, в его коде реакция на SIGPIPE > для порождаемых сессий сбрасывается на умолчательный (SIG_DFL) вариант. > > Есть ли разница между > $ ssh localhost -- strace -e trace=signal sh -c true > и > > $ strace -e trace=signal sh -c true > > ? > > (У меня ее нет и по вызовам rt_sigprocmask видно, что SIGPIPE не > игнорируется). > Дмитрий, я еще только учусь понимать strace, поэтому поный вывод привел ниже $ ssh localhost -- strace -e trace=signal sh -c true rt_sigprocmask(SIG_BLOCK, NULL, [PIPE], 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [PIPE], 8) = 0 rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, 8) = 0 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, 8) = 0 rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [PIPE], 8) = 0 rt_sigaction(SIGQUIT, {SIG_IGN, [], SA_RESTORER, 0x7f67d5301750}, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, 8) = 0 rt_sigaction(SIGWINCH, {0x43e710, [], SA_RESTORER, 0x7f67d5301750}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGCHLD, {0x42dcc0, [], SA_RESTORER, 0x7f67d5301750}, {SIG_DFL, [], SA_RESTORER, 0x7f67d5301750}, 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [PIPE], 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [PIPE], 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [PIPE], 8) = 0 $ $ strace -e trace=signal sh -c true rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, 8) = 0 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, 8) = 0 rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 rt_sigaction(SIGQUIT, {SIG_IGN, [], SA_RESTORER, 0x7f07ef272750}, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, 8) = 0 rt_sigaction(SIGWINCH, {0x43e710, [], SA_RESTORER, 0x7f07ef272750}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGCHLD, {0x42dcc0, [], SA_RESTORER, 0x7f07ef272750}, {SIG_DFL, [], SA_RESTORER, 0x7f07ef272750}, 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 $ Кстати, аналогичную ситуацию наблюдается не только в сизифе, но и гноме P5. $ ssh localhost -- man -w bash bzip2: I/O or other error, bailing out. Possible reason follows. bzip2: Broken pipe Input file = /usr/share/man/ru/man1/bash.1.bz2, output file = (stdout) /usr/share/man/ru/man1/bash.1.bz2 $ Доберусь до 5.1 - проверю и там -- WBR, Alexey