[Apport-hackers] [Merge] lp:~juliank/apport/lp1746874 into lp:apport

2018-02-14 Thread noreply
The proposal to merge lp:~juliank/apport/lp1746874 into lp:apport has been 
updated.

Status: Needs review => Merged

For more details, see:
https://code.launchpad.net/~juliank/apport/lp1746874/+merge/337558
-- 
Your team Apport upstream developers is requested to review the proposed merge 
of lp:~juliank/apport/lp1746874 into lp:apport.

___
Mailing list: https://launchpad.net/~apport-hackers
Post to : apport-hackers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~apport-hackers
More help   : https://help.launchpad.net/ListHelp


[Apport-hackers] [Merge] lp:~juliank/apport/lp1746874 into lp:apport

2018-02-12 Thread Julian Andres Klode
Julian Andres Klode has proposed merging lp:~juliank/apport/lp1746874 into 
lp:apport.

Requested reviews:
  Apport upstream developers (apport-hackers)

For more details, see:
https://code.launchpad.net/~juliank/apport/lp1746874/+merge/337558

Use a 30s time out on the lock to workaround the issue where two apps crash at 
the same (or very close) time like in bug 1746874
-- 
Your team Apport upstream developers is requested to review the proposed merge 
of lp:~juliank/apport/lp1746874 into lp:apport.
=== modified file 'NEWS'
--- NEWS	2018-02-02 01:22:59 +
+++ NEWS	2018-02-12 13:42:44 +
@@ -26,6 +26,7 @@
 case so check for both.
   * data/apport: add an exception handler in case either name space can not be
 found.
+  * data/apport: wait for lock, with 30s timeout (LP: #1746874)
 
 2.20.8 (2017-11-15)
 ---

=== modified file 'data/apport'
--- data/apport	2018-02-02 01:22:59 +
+++ data/apport	2018-02-12 13:42:44 +
@@ -40,12 +40,19 @@
 error_log('cannot create lock file (uid %i): %s' % (os.getuid(), str(e)))
 sys.exit(1)
 
-try:
-fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
-except IOError:
+def error_running(*args):
 error_log('another apport instance is already running, aborting')
 sys.exit(1)
 
+original_handler = signal.signal(signal.SIGALRM, error_running)
+signal.alarm(30) # Timeout after that many seconds
+try:
+fcntl.lockf(fd, fcntl.LOCK_EX)
+except IOError:
+error_running()
+finally:
+signal.alarm(0)
+signal.signal(signal.SIGALRM, original_handler)
 
 (pidstat, real_uid, real_gid, cwd) = (None, None, None, None)
 

___
Mailing list: https://launchpad.net/~apport-hackers
Post to : apport-hackers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~apport-hackers
More help   : https://help.launchpad.net/ListHelp