homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: _PyImport_ReInitLock() doesn't check return value of PyThread_acquire_lock
Type: behavior Stage: resolved
Components: Interpreter Core Versions: Python 3.2, Python 3.3
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: brett.cannon Nosy List: brett.cannon, christian.heimes, eric.snow, jcea
Priority: normal Keywords:

Created on 2012年09月09日 22:23 by christian.heimes, last changed 2022年04月11日 14:57 by admin. This issue is now closed.

Messages (2)
msg170141 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2012年09月09日 22:23
Coverity claims that the call to PyThread_acquire_lock with NOWAIT_LOCK can fail. It sounds plausible as you don't wait for the lock to succeed.
CID 486861: Unchecked return value (CHECKED_RETURN)At (3): Calling function "PyThread_acquire_lock(PyThread_type_lock, int)" without checking return value (as is done elsewhere 22 out of 23 times).
At (9): No check of the return value of "PyThread_acquire_lock(import_lock, 0)".
 205 PyThread_acquire_lock(import_lock, 0);
 206 /* XXX: can the previous line fail? */
By the way the code would be more readable with NOWAIT_LOCK instead of 0.
msg175665 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2012年11月16日 02:41
The chances of this being a problem is REALLY small and the single function that calls this is a public void function so there is no way for an exception to propagate short of a fatal error which seems a bit much.
I did change to using NOWAIT_LOCK, though.
History
Date User Action Args
2022年04月11日 14:57:35adminsetgithub: 60098
2012年11月16日 02:41:30brett.cannonsetstatus: open -> closed
resolution: wont fix
messages: + msg175665

stage: resolved
2012年11月13日 06:01:27eric.snowsetnosy: + eric.snow
2012年09月10日 02:25:39jceasetnosy: + jcea
2012年09月09日 22:23:13christian.heimescreate

AltStyle によって変換されたページ (->オリジナル) /