mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00
scripts/runqemu-internal: Fix lock races
There are two problems here. Firstly the grep command is unanchored so pid 345 will match against 12345 and so on. The second issue is that there are several context switched between attempting the lock and then writing the pid to it. Between the two issues, there were issues appearing on the autobuilder due to these conflicts. This patch replaces the mechanism with flock on fd 8 which should be a safer mechanism to use. (From OE-Core rev: f1a126f2b0f419b2de573e2367d41d8ccc28b346) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
7911ec5de9
commit
fd428a09ee
|
@ -112,18 +112,12 @@ acquire_lock() {
|
|||
return 1
|
||||
fi
|
||||
|
||||
if [ -e "$lockfile.lock" ]; then
|
||||
# Check that the lockfile is not stale
|
||||
ps=`ps -eo pid | grep $(cat $lockfile.lock)`
|
||||
if [ -z "$ps" ]; then
|
||||
echo "WARNING: Stale lock file detected, deleting $lockfile.lock."
|
||||
rm -f $lockfile.lock
|
||||
echo $$ > $lockfile.lock
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
echo $$ > $lockfile.lock
|
||||
touch $lockfile.lock
|
||||
exec 8>$lockfile.lock
|
||||
flock -n -x 8
|
||||
if [ $? -ne 0 ]; then
|
||||
exec 8>&-
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
|
@ -137,6 +131,7 @@ release_lock() {
|
|||
fi
|
||||
|
||||
rm -f $lockfile.lock
|
||||
exec 8>&-
|
||||
}
|
||||
|
||||
LOCKDIR="/tmp/qemu-tap-locks"
|
||||
|
|
Loading…
Reference in New Issue
Block a user