summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/utils.py')
-rw-r--r--bitbake/lib/bb/utils.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index 0df522b372..8c79159573 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -1841,3 +1841,16 @@ def mkstemp(suffix=None, prefix=None, dir=None, text=False):
1841 else: 1841 else:
1842 prefix = tempfile.gettempprefix() + entropy 1842 prefix = tempfile.gettempprefix() + entropy
1843 return tempfile.mkstemp(suffix=suffix, prefix=prefix, dir=dir, text=text) 1843 return tempfile.mkstemp(suffix=suffix, prefix=prefix, dir=dir, text=text)
1844
1845# If we don't have a timeout of some kind and a process/thread exits badly (for example
1846# OOM killed) and held a lock, we'd just hang in the lock futex forever. It is better
1847# we exit at some point than hang. 5 minutes with no progress means we're probably deadlocked.
1848@contextmanager
1849def lock_timeout(lock):
1850 held = lock.acquire(timeout=5*60)
1851 try:
1852 if not held:
1853 os._exit(1)
1854 yield held
1855 finally:
1856 lock.release()