[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug #33138] .PARLLELSYNC enhancement with patch
From: |
Eli Zaretskii |
Subject: |
Re: [bug #33138] .PARLLELSYNC enhancement with patch |
Date: |
Tue, 16 Apr 2013 11:30:20 +0300 |
> Date: Tue, 16 Apr 2013 05:54:13 +0000
> From: "Paul D. Smith" <address@hidden>
>
> I did a little bit of code rearrangement, but I still think this code will not
> work on Windows and might possibly not compile on Windows.
Indeed, it will not. Some cursory comments below.
> Hopefully we can fix that.
We shall see...
Here's what I see in the changes that is not friendly to Windows:
. STREAM_OK uses fcntl and F_GETFD which both don't exist on Windows.
. FD_NOT_EMPTY will only work if its argument descriptor is connected
to a file, not the console. is this condition always true?
. open_tmpfd will need close examination on Windows, especially since
it closes the stream (the issue is whether the file will still be
automatically deleted when the dup'ed file descriptor is closed).
. pump_from_tmp_fd will need to switch to_fd to binary mode, since
this is how tmpfile opens the temporary file; we need output mode
match the input mode.
. acquire_semaphore uses fcntl and F_SETLKW, which don't exist on
Windows. the commentary to that function is not revealing its
purpose, so I'm unsure how to implement its equivalent on Windows.
can someone explain why is this needed and what should it do? the
name seems to imply that using fcntl is an implementation detail,
as a crude semaphore -- is that right? similarly for
release_semaphore. (see also the next item.)
. is there any significance to the fact that sync_handle is either
stdout or stderr? is that important for the synchronization to
work, or was that just a convenient handle around? also, the
documentation I have indicates that locking works only on files;
is it guaranteed that these handles are redirected to files before
acquire_semaphore is called?
. calculation of combined_output in start_job_command will need to be
reimplemented for Windows, since the reliance on st_dev and st_ino
makes assumptions that are false on Windows.
Other notes:
. outputting stdout and stderr separately is IMO a misfeature: it
breaks the temporal proximity of messages written to these streams,
and this makes it harder to understand failures.
. why is "leaving directory FOO" displayed _before_ releasing the
stderr output? it should be after, I think.
. AFAIU, the call to fcntl inside sync_output can be interrupted by a
signal, and will return -1. shouldn't the code do something
non-trivial to avoid a total failure in this case?
. suggest to use "acquire_semaphore" and "release_semaphore" in the
call to perror in those two functions, as "fcntl" is not specific
enough, and also reveals implementation details.
. likewise, "read()" and "write()" in diagnostics from
pump_from_tmp_fd are less specific than they could be; how about
"read from temporary file" instead?
. btw, why an error in acquire_semaphore and release_semaphore causes
Make to bail out? isn't it better to fall back on the normal
operation mode instead?
. I don't understand why PARLLEL_SYNC is turned on unconditionally in
job.h based on POSIX being defined. it should IMO be in config.h
instead, set at configure time.
. the new argument to log_working_directory is not documented in the
commentary to the function.
Thanks.
- [bug #33138] .PARLLELSYNC enhancement with patch, Paul D. Smith, 2013/04/06
- [bug #33138] .PARLLELSYNC enhancement with patch, Frank Heckenbach, 2013/04/06
- [bug #33138] .PARLLELSYNC enhancement with patch, Frank Heckenbach, 2013/04/07
- [bug #33138] .PARLLELSYNC enhancement with patch, Paul D. Smith, 2013/04/16
- Re: [bug #33138] .PARLLELSYNC enhancement with patch,
Eli Zaretskii <=
- Message not available
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Tim Murphy, 2013/04/16
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Paul Smith, 2013/04/16
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Paul Smith, 2013/04/16
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Tim Murphy, 2013/04/16
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Paul Smith, 2013/04/16
- Message not available
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Eli Zaretskii, 2013/04/16
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Paul Smith, 2013/04/16
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Eli Zaretskii, 2013/04/16
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Paul Smith, 2013/04/16
- Re: [bug #33138] .PARLLELSYNC enhancement with patch, Eli Zaretskii, 2013/04/16