Opened 14 years ago
Closed 14 years ago
#15312 closed (invalid)
dispatch signals may be skipped
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Uncategorized | Version: | 1.2 |
Severity: | Keywords: | bug, dispatcher, dispatch, signal, garbage collection | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Because in dispatch.dispatcher.py _live_receivers does not acquire the lock that _remove_receiver does it is possible for the iteration over self.receivers to skip items. This is possible even without threading because _remove_receiver can be called as a result of garbage collection.
The fix is simple: acquire self.lock around the iteration over self.receivers in _live_receivers
Note:
See TracTickets
for help on using tickets.
When you're describing a subtle locking problem, vague hand waving about "_live_receivers does not acquire the lock" isn't even remotely helpful. A bug report needs to include *specific* instructions that allow another person to reproduce a problem.
Marking invalid. If you care to provide a patch, a piece of sample code that demonstrates the problem, or a *specific* set of instructions for the conditions under which the problem can be reproduced, please reopen.