From: Yigang Wen Date: Tue, 16 Oct 2012 08:41:42 +0000 (+0800) Subject: "^C" problem when multithreads stop at "sudo -v" X-Git-Tag: 0.2~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9b280014e93a8a1ad7db76c67cc16bc8e3846ffb;p=tools%2Fdepanneur.git "^C" problem when multithreads stop at "sudo -v" when multithreads stop at "sudo -v", you need input ^C more than one time to terminate depanneur. The reason is main thread blocked by "lock($DETACHING)" and it can't response to ^C immediately. So use another lock variable "$SUDOV_LOCK" for "sudo -v". --- diff --git a/depanneur b/depanneur index 6c9bd82..dc49453 100755 --- a/depanneur +++ b/depanneur @@ -32,6 +32,9 @@ my $TERM:shared=0; # Prevents double detach attempts my $DETACHING:shared; +# Prevents main thread response to "^C" be blocked by DETACHING +my $SUDOV_LOCK:shared; + # Flag to inform main thread update pkgdeps my $dirty:shared=0; @@ -789,7 +792,7 @@ sub build_package { my @args = (); my @args_inc = (); { - lock ($DETACHING); + lock ($SUDOV_LOCK); if ($TERM == 1 || my_system("sudo -v") != 0) { return -1; }