Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1c10cac855587753cfb42e0e7f3b62e2480eb62e
      
https://github.com/WebKit/WebKit/commit/1c10cac855587753cfb42e0e7f3b62e2480eb62e
  Author: Jonathan Bedard <[email protected]>
  Date:   2023-05-22 (Mon, 22 May 2023)

  Changed paths:
    M Tools/Scripts/libraries/webkitcorepy/setup.py
    M Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py
    M Tools/Scripts/libraries/webkitcorepy/webkitcorepy/file_lock.py
    M 
Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/file_lock_unittest.py

  Log Message:
  -----------
  [webkitcorepy] Fix race condition in FileLock
https://bugs.webkit.org/show_bug.cgi?id=256931
rdar://109487762

Reviewed by Alexey Proskuryakov.

* Tools/Scripts/libraries/webkitcorepy/setup.py: Bump version.
* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Ditto.
* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/file_lock.py:
(FileLock.is_process_running): Check if a specific PID is running.
(FileLock.acquire): Create and acquire lock in a single operation on Unix 
systems.
Save the current PID to the file, which allows future processes to ignore this 
lock
if the PID saved in it is dead. For systems which support it, use O_EXLOCK and 
interrupts
instead of a spinlock. Raise exceptions when we fail to acquire the lock.
(FileLock.release): Delete the lockfile before releasing it on Unix systems. 
Systems using
O_EXLOCK simply need to close their file handle.
(FileLock.__exit__): Don't raise a 2nd exception if __enter__ has raised one.
* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/file_lock_unittest.py:
(action):
(FileLockTestCase.test_locked):
(FileLockTestCase.test_locked_timeout):
(FileLockTestCase.test_double):
(FileLockTestCase.test_race):

Canonical link: https://commits.webkit.org/264321@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to