@@ -53,7 +53,6 @@ import Control.Monad.IO.Class
53
53
import Control.Monad.Trans.Cont
54
54
import Data.Maybe
55
55
import Data.Function
56
- import Data.ByteString qualified as BS
57
56
import Data.ByteString.Unsafe qualified as BS
58
57
import Foreign.Concurrent qualified as GHC
59
58
import Foreign.Ptr
@@ -305,10 +304,10 @@ finalizePython = join $ atomically $ readTVar globalPyState >>= \case
305
304
Py_Finalize();
306
305
} |]
307
306
-- We need to call Py_Finalize on main thread
308
- RunningN _ eval _ tid_gc -> checkLock $ do
307
+ RunningN _ lock_eval _ tid_gc -> checkLock $ do
309
308
killThread tid_gc
310
309
resp <- newEmptyMVar
311
- putMVar eval $ StopReq resp
310
+ putMVar lock_eval $ StopReq resp
312
311
takeMVar resp
313
312
where
314
313
checkLock action = readTVar globalPyLock >>= \ case
@@ -485,17 +484,17 @@ runPyInMain py
485
484
InInitialization -> retry
486
485
InFinalization -> retry
487
486
Running1 -> throwSTM $ PyInternalError " runPyInMain: Running1"
488
- RunningN _ eval tid_main _ -> readTVar globalPyLock >>= \ case
487
+ RunningN _ eval_lock tid_main _ -> readTVar globalPyLock >>= \ case
489
488
LockUninialized -> throwSTM PythonNotInitialized
490
489
LockFinalized -> throwSTM PythonIsFinalized
491
490
LockedByGC -> retry
492
491
-- We need to send closure to main python thread when we're grabbing lock.
493
492
LockUnlocked -> do
494
493
writeTVar globalPyLock $ Locked tid_main []
495
494
pure ( atomically (releaseLock tid_main)
496
- , evalInOtherThread tid_main eval
495
+ , evalInOtherThread tid_main eval_lock
497
496
)
498
- -- If we can grab lock and main thread taken lock we're
497
+ -- If we513 can grab lock and main thread taken lock we're
499
498
-- already executing on main thread. We can simply execute code
500
499
Locked t ts
501
500
| t /= tid
@@ -508,12 +507,12 @@ runPyInMain py
508
507
| otherwise -> do
509
508
writeTVar globalPyLock $ Locked tid_main (t : ts)
510
509
pure ( atomically (releaseLock tid_main)
511
- , evalInOtherThread tid_main eval
510
+ , evalInOtherThread tid_main eval_lock
512
511
)
513
512
--
514
- evalInOtherThread tid_main eval = do
513
+ evalInOtherThread tid_main eval_lock = do
515
514
r <- mask_ $ do resp <- newEmptyMVar
516
- putMVar eval $ EvalReq py resp
515
+ putMVar eval_lock $ EvalReq py resp
517
516
takeMVar resp `onException` throwTo tid_main InterruptMain
518
517
either throwM pure r
519
518
0 commit comments