mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 05:57:54 +00:00
parallel: Fixed bug #58985: sem stall if .parallel/semaphore is chmod 0
This commit is contained in:
parent
e6c9dfe010
commit
555863c0b5
|
@ -12866,8 +12866,15 @@ sub new($) {
|
||||||
my $parallel_locks = $Global::cache_dir . "/semaphores";
|
my $parallel_locks = $Global::cache_dir . "/semaphores";
|
||||||
-d $parallel_locks or ::mkdir_or_die($parallel_locks);
|
-d $parallel_locks or ::mkdir_or_die($parallel_locks);
|
||||||
my $lockdir = "$parallel_locks/$id";
|
my $lockdir = "$parallel_locks/$id";
|
||||||
|
|
||||||
my $lockfile = $lockdir.".lock";
|
my $lockfile = $lockdir.".lock";
|
||||||
|
if(-d $parallel_locks and -w $parallel_locks
|
||||||
|
and -r $parallel_locks and -x $parallel_locks) {
|
||||||
|
# skip
|
||||||
|
} else {
|
||||||
|
::error("Semaphoredir must be writable: '$parallel_locks'");
|
||||||
|
::wait_and_exit(255);
|
||||||
|
}
|
||||||
|
|
||||||
if($count < 1) { ::die_bug("semaphore-count: $count"); }
|
if($count < 1) { ::die_bug("semaphore-count: $count"); }
|
||||||
return bless {
|
return bless {
|
||||||
'lockfile' => $lockfile,
|
'lockfile' => $lockfile,
|
||||||
|
|
|
@ -15,24 +15,34 @@ install_packages() {
|
||||||
# DEBIAN package
|
# DEBIAN package
|
||||||
packaging_pkgs="dpkg-dev build-essential debhelper osc cvs automake-1.15"
|
packaging_pkgs="dpkg-dev build-essential debhelper osc cvs automake-1.15"
|
||||||
packaging_pkgs="$packaging_pkgs python3-m2crypto alien"
|
packaging_pkgs="$packaging_pkgs python3-m2crypto alien"
|
||||||
|
|
||||||
# SHEBANG TOOLS
|
# SHEBANG TOOLS
|
||||||
shebang_pkgs="gnuplot octave ruby r-base-core"
|
shebang_pkgs="gnuplot octave ruby r-base-core"
|
||||||
|
|
||||||
# SQL TOOLS
|
# SQL TOOLS
|
||||||
sql_pkgs="libdbd-pg-perl libdbd-sqlite3-perl libdbd-csv-perl"
|
sql_pkgs="libdbd-pg-perl libdbd-sqlite3-perl libdbd-csv-perl"
|
||||||
sql_pkgs="$sql_pkgs libdbd-mysql-perl rlwrap"
|
sql_pkgs="$sql_pkgs libdbd-mysql-perl rlwrap"
|
||||||
|
|
||||||
# Compression
|
# Compression
|
||||||
compression_pkgs="zstd clzip liblz4-tool lzop pigz pixz gzip plzip pbzip2"
|
compression_pkgs="zstd clzip liblz4-tool lzop pigz pixz gzip plzip pbzip2"
|
||||||
compression_pkgs="$compression_pkgs lzma xz-utils lzip bzip2 lbzip2 lrzip"
|
compression_pkgs="$compression_pkgs lzma xz-utils lzip bzip2 lbzip2 lrzip"
|
||||||
compression_pkgs_missing="pxz"
|
compression_pkgs_missing="pxz"
|
||||||
|
|
||||||
# Shells
|
# Shells
|
||||||
# (csh = bsd-csh that is broken)
|
# (csh = bsd-csh that is broken)
|
||||||
shell_pkgs="ash dash fdclone fish fizsh ksh ksh93 mksh posh rc rush sash"
|
shell_pkgs="ash dash fdclone fish fizsh ksh ksh93 mksh posh rc rush sash"
|
||||||
shell_pkgs="$shell_pkgs tcsh yash zsh"
|
shell_pkgs="$shell_pkgs tcsh yash zsh"
|
||||||
|
|
||||||
# Databases
|
# Databases
|
||||||
database_pkgs="postgresql mysql-server sqlite"
|
database_pkgs="postgresql mysql-server sqlite"
|
||||||
|
|
||||||
|
# Build packages
|
||||||
|
build_pkgs="libxxhash-dev libzstd-dev liblz4-dev libssl-dev"
|
||||||
|
build_pkgs="$build_pkgs python3-cmarkgfm"
|
||||||
|
|
||||||
sudo dpkg --add-architecture i386; sudo apt update
|
sudo dpkg --add-architecture i386; sudo apt update
|
||||||
if $INSTALL $test_pkgs $packaging_pkgs $shebang_pkgs $sql_pkgs \
|
if $INSTALL $test_pkgs $packaging_pkgs $shebang_pkgs $sql_pkgs \
|
||||||
$compression_pkgs $shell_pkgs $database_pkgs; then
|
$compression_pkgs $shell_pkgs $database_pkgs $build_pkgs ; then
|
||||||
# OK
|
# OK
|
||||||
true
|
true
|
||||||
else
|
else
|
||||||
|
@ -324,6 +334,28 @@ bash_versions() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rsync_versions() {
|
||||||
|
(cd /tmp
|
||||||
|
git clone https://github.com/WayneD/rsync
|
||||||
|
make_one() {
|
||||||
|
rsync -a --delete rsync/ rsync-$1/
|
||||||
|
cd rsync-$1
|
||||||
|
git reset --hard
|
||||||
|
git checkout $1
|
||||||
|
LDFLAGS=-static ./configure &&
|
||||||
|
make -j2 &&
|
||||||
|
sudo cp rsync /usr/local/bin/rsync-$1
|
||||||
|
}
|
||||||
|
export -f make_one
|
||||||
|
echo '# Building rsync'
|
||||||
|
(cd rsync; git tag | grep -v -- '-.*-' | grep -v pre) |
|
||||||
|
stdout parallel --lb --tag \
|
||||||
|
'/usr/local/bin/rsync-{} --version || make_one {}'
|
||||||
|
(cd rsync; git tag | grep -v -- '-.*-' | grep -v pre) |
|
||||||
|
parallel -k -v --tag '/usr/local/bin/rsync-{} --version'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
misc() {
|
misc() {
|
||||||
parallel --record-env
|
parallel --record-env
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
par_sem_dir() {
|
||||||
|
echo '### bug #58985: sem stall if .parallel/semaphores is chmod 0'
|
||||||
|
chmod 0 ~/.parallel/semaphores
|
||||||
|
sem echo
|
||||||
|
chmod 700 ~/.parallel/semaphores
|
||||||
|
}
|
||||||
|
|
||||||
par_parcat_mixing() {
|
par_parcat_mixing() {
|
||||||
echo 'parcat output should mix: a b a b'
|
echo 'parcat output should mix: a b a b'
|
||||||
mktmpfifo() {
|
mktmpfifo() {
|
||||||
|
|
|
@ -86,5 +86,7 @@ par_print_before_halt_on_error 2 exit code 1
|
||||||
par_print_before_halt_on_error 2 0.1 0.1
|
par_print_before_halt_on_error 2 0.1 0.1
|
||||||
par_print_before_halt_on_error 2 parallel: This job failed:
|
par_print_before_halt_on_error 2 parallel: This job failed:
|
||||||
par_print_before_halt_on_error 2 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 2 > 0 ? exit shift : exit not shift;' 1
|
par_print_before_halt_on_error 2 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 2 > 0 ? exit shift : exit not shift;' 1
|
||||||
|
par_sem_dir ### bug #58985: sem stall if .parallel/semaphores is chmod 0
|
||||||
|
par_sem_dir parallel: Error: Semaphoredir must be writable: '~/.parallel/semaphores'
|
||||||
par_tmux_termination ### --tmux test - check termination
|
par_tmux_termination ### --tmux test - check termination
|
||||||
par_tmux_termination See output with: tmux -S /tmp/parallel-local-race01-tmpdir/tmsXXXXX attach
|
par_tmux_termination See output with: tmux -S /tmp/parallel-local-race01-tmpdir/tmsXXXXX attach
|
||||||
|
|
Loading…
Reference in a new issue