diff --git a/.efrocachemap b/.efrocachemap index 890f384a..17d5a493 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4038,50 +4038,50 @@ "build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1", "build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "dc369671ed8cf359dc975fb374228e72", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "e68906c43196a9d1155a4123011100b0", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "c8d9ff095234fed4a7fd53c38b32d373", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "f74e32bce84c8adec701f73d95ab4aa0", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "3469fce4b1822fbaac3259e4f4093813", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "102e124c031cd2fbb0d8f07b011a6570", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "aa9c9d30698c6e4ffe6cf2ea6b8abccf", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "e851caab7095c8fb4e86371a07fe1ef3", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "1e7d3dd4ee831e1b4fef02dac2cdf2c0", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "c6f5942cd35a6f209d22a304475ecc94", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "5dcc548316208f72622bd8bbdd2a766e", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "39d8555b9519033ff29619cd5753b1ae", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "83be5f800c1b705bb14df420547dd6ec", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "ccc1fd541825bf5a0efadef750e915ee", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "2e33f242beb0d9b586ca5af2e1e5f41c", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "37f2931b93009be12f2d0d4b4009324c", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "c8a99fc6e23280073703e707507a35d3", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "5d48cdcb174073091faafbd8d24fd909", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "afe045e68caca489e2573b60580c42e3", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "b769836453e5e027b1608e7da7d3dad7", - "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "c471e06d03862e91a2a949806803efbd", - "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "4f7b8eed54eb4c7d2b6400aaa4dfa37c", - "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "c471e06d03862e91a2a949806803efbd", - "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "4f7b8eed54eb4c7d2b6400aaa4dfa37c", - "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "ec5f39fe33f753cace45ecda7b78e376", - "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "5ca18c2abecb1b369ddd7ff43880baa0", - "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "ec5f39fe33f753cace45ecda7b78e376", - "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "5ca18c2abecb1b369ddd7ff43880baa0", - "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "789b8d5e80d66c74af1ff0b978301704", - "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "4fa185d99e799027b324704de3925aca", - "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "789b8d5e80d66c74af1ff0b978301704", - "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "4fa185d99e799027b324704de3925aca", - "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "3b9db190dc436e7bfd4521b94d9b5974", - "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "cd5c91eecddb1da4e8204e3496466a07", - "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "9adc2dc1c5c3cdc1ca6fc98fc76644c5", - "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "cd5c91eecddb1da4e8204e3496466a07", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "f129bbdc61d24d31cea6105b6cf45461", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "289d0bc2a5e77eef85b681967c0b8988", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "58f826bab8e8cde386a92426f68acd4a", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "d1f4ce60d3f02ea0e6ae4397ea7d08f6", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "b05c5926eda50c9c31452824da8544cd", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "5cb7beea136bd1aa9873e8b3397f52e2", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "4071322052a81a5f4ed13bf51523829b", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "e4db16386e09a1bbf3103919a2e653af", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "d9afde0c1cc61b1fa27aed723afd9ede", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "42fc71b128260196094cc517deba76db", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "764f0b4661e0c92d5c376356f5fa8825", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "a6ae3a8df85d6b245a944164c437471b", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "b5a068b26fc52668bbb4f79eba5c047d", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "b3636e3fb8e268ced15daa2a2256ee44", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "d5b503fe1aa2681724581e02ea049f73", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "d465f04ba2c8fa98624db8cf38e9177e", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "d0b8c22e04f83f712b0033b427282eea", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "03e09fdffcbcb6a0ea967e81c3b0c7c9", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "932a3acd7abd13074eebfc03e0e7d56c", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "bbe5aa04abb57add770af26fc101d488", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "3c33079f35aff14e62117f30f297b2c5", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "36567f3012c97261d54ddff9d682e4da", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "5c30ad4693e19c3f4261711e38b6b5a5", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "ec40d7abbe4d0ad4cc35667fb9685784", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "cb685b901201a75b094c1f5ac655155c", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "0d2c6f859dc14ee5eb5267e06128e090", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "df7849c6f6bee1c20ce74cb46fa591b2", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "069841aea1eb622b693c98eed7482a35", + "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "f231b10895bdcb542de87b887ca181fd", + "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "ae936a119668ede7b36f38c8672f4bf8", + "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "f231b10895bdcb542de87b887ca181fd", + "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "ae936a119668ede7b36f38c8672f4bf8", + "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "419b7edff05748a74370f29945bca90c", + "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "1e75c6c1f0b0aae130bacfb8b65507cc", + "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "419b7edff05748a74370f29945bca90c", + "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "1e75c6c1f0b0aae130bacfb8b65507cc", + "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "d965aa38a18627966633308f5a4e61b9", + "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "5d12b05022f064c2aaf096c466da687c", + "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "d965aa38a18627966633308f5a4e61b9", + "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "5d12b05022f064c2aaf096c466da687c", + "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "ff5b18144bf249558517bff7c97dc84f", + "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "efffc4f330e77530accd9a9f82840a6c", + "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "c20363fe2af3d54e666b1c8ee67f6b76", + "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "efffc4f330e77530accd9a9f82840a6c", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "a75854a744d9f2abe9027fe03ea4d458", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "4581a1ce0934b7b3ea5bf8a46823a761", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "99ee35add584cbdeead0d845a637ad18", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "83ec9375d7c1bc790cc3e784488960b0", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "7838f2899be0eedeb352a9f31bd9f860", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "c27c37020a0c0b29792435f05a8c19b6", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "40326b4848a648ece17d2f2f50e2cc27", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "281f67c8179e1f5d7fd1445ed4069699", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "5548f407d97e380069f6c596c4e36cd7", "src/ballistica/base/mgen/pyembed/binding_base.inc": "efa61468cf098f77cc6a234461d8b86d", diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b439435..f001af9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.36 (build 21894, api 8, 2024-06-22) +### 1.7.36 (build 21895, api 8, 2024-06-26) ### 1.7.35 (build 21889, api 8, 2024-06-20) - Fixed an issue where the engine would block at exit on some version of Linux diff --git a/config/requirements.txt b/config/requirements.txt index 6b32c2b5..83f0d150 100644 --- a/config/requirements.txt +++ b/config/requirements.txt @@ -2,11 +2,11 @@ cpplint==1.6.1 dmgbuild==1.6.1 filelock==3.15.4 furo==2024.5.6 -mypy==1.10.0 -pbxproj==4.1.0 -pdoc==14.5.0 +mypy==1.10.1 +pbxproj==4.2.0 +pdoc==14.5.1 pur==7.3.2 -pylint==3.2.3 +pylint==3.2.4 pylsp-mypy==0.6.8 pytest==8.2.2 python-daemon==3.0.1 diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 9dd9a141..66b9109c 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -52,7 +52,7 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 21894 +TARGET_BALLISTICA_BUILD = 21895 TARGET_BALLISTICA_VERSION = '1.7.36' diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 89153814..ca0845c6 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int { namespace ballistica { // These are set automatically via script; don't modify them here. -const int kEngineBuildNumber = 21894; +const int kEngineBuildNumber = 21895; const char* kEngineVersion = "1.7.36"; const int kEngineApiVersion = 8; diff --git a/tools/efro/debug.py b/tools/efro/debug.py index 024efcc1..01a3f778 100644 --- a/tools/efro/debug.py +++ b/tools/efro/debug.py @@ -399,8 +399,8 @@ class DeadlockWatcher: Use the enable_deadlock_watchers() to enable this system. - Next, create these in contexts where they will be torn down after - some operation completes. If any is not torn down within the + Next, use these wrapped in a with statement around some operation + that may deadlock. If the with statement does not complete within the timeout period, a traceback of all threads will be dumped. Note that the checker thread runs a cycle every ~5 seconds, so @@ -442,10 +442,39 @@ class DeadlockWatcher: if curthread.ident is None else hex(curthread.ident).removeprefix('0x') ) + self.active = False with cls.watchers_lock: cls.watchers.append(weakref.ref(self)) + # Support the with statement. + def __enter__(self) -> Any: + self.active = True + return self + + def __exit__(self, exc_type: Any, exc_value: Any, exc_tb: Any) -> None: + self.active = False + + # Print if we lived past our deadline. This is just an extra + # data point. The watcher thread should be doing the actual + # stack dumps/etc. + if self.logger is None or self.logextra is None: + return + + duration = time.monotonic() - self.create_time + if duration > self.timeout: + self.logger.error( + 'DeadlockWatcher %s at %s in thread %s lived %.2fs,' + ' past timeout %.2fs. This should have triggered' + ' a deadlock dump.', + id(self), + self.caller_source_loc, + self.thread_id, + duration, + self.timeout, + extra=self.logextra, + ) + @classmethod def enable_deadlock_watchers(cls) -> None: """Spins up deadlock-watcher functionality. @@ -486,7 +515,7 @@ class DeadlockWatcher: found_fresh_expired = False - # If any watcher is still alive but expired, sleep past the + # If any watcher is still active and expired, sleep past the # timeout to force the dumper to do its thing. with cls.watchers_lock: @@ -496,14 +525,16 @@ class DeadlockWatcher: w is not None and now - w.create_time > w.timeout and not w.noted_expire + and w.active ): # If they supplied a logger, let them know they # should check stderr for a dump. if w.logger is not None: w.logger.error( - 'DeadlockWatcher at %s in thread %s' + 'DeadlockWatcher %s at %s in thread %s' ' with time %.2f expired;' ' check stderr for stack traces.', + id(w), w.caller_source_loc, w.thread_id, w.timeout,