On Fri, Oct 26, 2007 at 03:28:28PM -0500, Les Mikesell wrote:
> John Rouillard wrote:
> >
> >open("/usr/local/src/fastforward-0.51/warn-auto.sh",
> > O_RDONLY|O_LARGEFILE) = 3
> >fstat64(3, {st_mode=S_IFREG|0644, st_size=64, ...}) = 0
> >read(3, "#!/bin/sh\n# WARNING: This file w"..., 64) = 64
> >close(3) = 0
> >select(2, NULL, [1], NULL, {60, 0}) = 1 (out [1], left (line 2799)
> > {60, 0})
> >write(1, "\300\0\0\7\0waitpid\0__errno_location\0er"...,
> > 196) = 196
> >select(2, NULL, [1], NULL, {60, 0}) = 1 (out [1], left
> > {60, 0})
> >write(1, "\4\0\0\7\377\377\377\377", 8) = 8
> >select(1, [0], [], NULL, {60, 0}) = 0 (Timeout)
> >select(1, [0], [], NULL, {60, 0}) = 0 (Timeout)
> >select(1, [0], [], NULL, {60, 0}) = 0 (Timeout)
> >select(1, [0], [], NULL, {60, 0}) = 0 (Timeout)
> >select(1, [0], [], NULL, {60, 0}) = 0 (Timeout)
> >select(1, [0], [], NULL, {60, 0}) = 0 (Timeout)
> >select(1, [0], [], NULL, {60, 0}) = 0 (Timeout)
> >select(1, [0], [], NULL, {60, 0}) = 0 (Timeout)
> >
> >and toast city.
> >
> >What's wierd is the select 2 after the close.
>
> There are earlier selects on fd2 that aren't followed by a write.
Correct, but they occur before the input file closes.
> The real problem is the select on fd1 (stdout) that tells you that
> a write would block.
>
> >I can make the whole file available on the web if you or anybody else
> >want's it. Contact me off list, no sense spamming people.
>
> I don't think it would help. The question is, why can't you write to
> stdout? It should be connected to sshd which should be passing stuff to
> the invoking ssh and perl should be consuming it.
Do you mean this select?
> >select(2, NULL, [1], NULL, {60, 0}) = 1 (out [1], left (line 2799)
> > {60, 0})
My C is rusty, but I think that means:
look at no fd's for reading and fd 1 for writing and no fd's for
errors. Time out in 60.000 seconds.
What I am not sure of is why the first argument is 2. I would expect
that if the [1] was [1, 2] with two fd's. Since there is
only one fd in the set (namely fd 1), I would expect the 2 to be 1.
In nay case, the select call returns 1 meaning that there is one
file descriptor ready for writing and it waited 0 seconds to
determine the write handle was ready to be written to. Then the write
occurs:
> >write(1, "\300\0\0\7\0waitpid\0__errno_location\0er"...,
> > 196) = 196
writing 196 bytes.
> >select(2, NULL, [1], NULL, {60, 0}) = 1 (out [1], left
> > {60, 0})
again indicates that fd 1 is available for writing. an 8 byte write is
done then fd 0 is checked to see if there is anything to read
> >write(1, "\4\0\0\7\377\377\377\377", 8) = 8
> >select(1, [0], [], NULL, {60, 0}) = 0 (Timeout)
and there never is anything to read.
So by that point it is waiting for data/info from the server and there
is no data forthcoming. Can you point out where my analysis is wrong?
--
-- rouilj
John Rouillard
System Administrator
Renesys Corporation
603-643-9300 x 111
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
BackupPC-users mailing list
[email protected]
List: https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki: http://backuppc.wiki.sourceforge.net
Project: http://backuppc.sourceforge.net/