db: fix check for recursive lock acquire
This commit is contained in:
parent
815910b419
commit
5f66fad355
|
@ -133,8 +133,11 @@
|
||||||
(define sema-peek (lock-sema-peek lk))
|
(define sema-peek (lock-sema-peek lk))
|
||||||
(let loop ()
|
(let loop ()
|
||||||
(define result
|
(define result
|
||||||
(cond [enable-break? (sync/enable-break sema-peek (lock-owner lk))]
|
(let ([owner (lock-owner lk)])
|
||||||
[else (sync sema-peek (lock-owner lk))]))
|
(cond [(eq? owner me)
|
||||||
|
(error 'lock-acquire "attempted to recursively acquire lock")]
|
||||||
|
[enable-break? (sync/enable-break sema-peek owner)]
|
||||||
|
[else (sync sema-peek owner)])))
|
||||||
(cond [(eq? result sema-peek)
|
(cond [(eq? result sema-peek)
|
||||||
;; Got past outer stage
|
;; Got past outer stage
|
||||||
(start-atomic)
|
(start-atomic)
|
||||||
|
@ -151,9 +154,6 @@
|
||||||
[(eq? result (lock-owner lk))
|
[(eq? result (lock-owner lk))
|
||||||
;; Thread holding lock is dead
|
;; Thread holding lock is dead
|
||||||
#f]
|
#f]
|
||||||
[(eq? result me)
|
|
||||||
;; Attempt to recursively acquire lock
|
|
||||||
(error 'lock-acquire "attempted to recursively acquire lock")]
|
|
||||||
[else
|
[else
|
||||||
;; Owner was stale => retry
|
;; Owner was stale => retry
|
||||||
;; This can happen if the thread holding the lock releases
|
;; This can happen if the thread holding the lock releases
|
||||||
|
|
Loading…
Reference in New Issue
Block a user