[pacman-dev] [PATCH] tolerate broken logpipe

Eli Schwartz eschwartz at archlinux.org
Wed Jul 10 02:52:07 UTC 2019


On 7/9/19 9:57 PM, Yardena Cohen wrote:
> Sometimes makechrootpkg fails with:
> 
>    rm: cannot remove '/logdest/logpipe.xxxxxxxx': No such file or directory
> 
> This shouldn't cause the whole script to fail, so let's tolerate a missing pipe

As a matter of curiosity, when does this happen? I don't recall offhand
seeing it.

I'm not saying it's fundamentally wrong to make this change, but I
wouldn't have expected this to be a problem.

> Signed-off-by: Yardena Cohen <yardenack at gmail.com>
> ---
>  scripts/makepkg.sh.in | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index aa03e9d9..9f8c9096 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -344,7 +344,7 @@ remove_deps() {
>  
>  error_function() {
>  	if [[ -p $logpipe ]]; then
> -		rm "$logpipe"
> +		rm -f "$logpipe"

If we just checked using [[ -p namedpipe ]] then it seems like the
window for a TOCTOU is pretty narrow...

Aside for which, if we've reached this point then we're already erroring
out, so -f would only silence a warning, not make anything succeed. So
this should not be what is causing the whole script to fail.

>  	fi
>  	# first exit all subshells, then print the error
>  	if (( ! BASH_SUBSHELL )); then
> @@ -428,7 +428,7 @@ run_function() {
>  		$pkgfunc &>"$logpipe"
>  
>  		wait $teepid
> -		rm "$logpipe"
> +		rm -f "$logpipe"

I'm curious under what situation we could tee to a file, wait until tee
exits, and then try but fail to delete the file.

IIRC the only times we use run_function() are inside run_function_safe()
which sets up errexit, so if this fails then that would explain why the
script would abort, but I don't get how the file is supposed to
disappear in the first place.

>  	else
>  		"$pkgfunc"
>  	fi
> 


-- 
Eli Schwartz
Bug Wrangler and Trusted User

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 1601 bytes
Desc: OpenPGP digital signature
URL: <https://lists.archlinux.org/pipermail/pacman-dev/attachments/20190709/a2d246fd/attachment.sig>


More information about the pacman-dev mailing list