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.
Created on 2010年02月22日 10:46 by cptnwillard, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| issue7980-test.patch | ruseel, 2010年10月05日 12:16 | unittest for py3k branch | ||
| issue7980-fix.patch | Romuald, 2014年03月18日 20:26 | Fix attempt for 2.7 branch | review | |
| Messages (29) | |||
|---|---|---|---|
| msg99718 - (view) | Author: Willard (cptnwillard) | Date: 2010年02月22日 10:46 | |
The following script raises several "_strptime_time" AttributeErrors (on OS X 10.4 at least).
If time.strptime is used before starting the threads, then no exception is raised (the issue may thus come from strptime.py not being imported in a thread safe manner).
import time
import thread
def f():
for m in xrange(1, 13):
for d in xrange(1,29):
time.strptime("2010%02d%02d"%(m,d),"%Y%m%d")
for _ in xrange(10):
thread.start_new_thread(f, ())
time.sleep(3)
> Traceback (most recent call last):
> File "[...]/test.py", line 75, in f
> time.strptime("2010%02d%02d"%(m,d),"%Y%m%d")
> AttributeError: _strptime_time
|
|||
| msg99724 - (view) | Author: Eric V. Smith (eric.smith) * (Python committer) | Date: 2010年02月22日 12:05 | |
With 10.6's stock python, I've had this test either work or crash Python. On trunk, I get it to either work or give the same error as the original report. Unfortunately I've been unable to get it to crash again in a debugger so I can get a stack trace. But I'm still trying. |
|||
| msg99725 - (view) | Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) | Date: 2010年02月22日 12:19 | |
Which version is "10.6's stock python"? Note that r59678 fixed a "problem with dead locks when mixin threads and imports". |
|||
| msg99726 - (view) | Author: Eric V. Smith (eric.smith) * (Python committer) | Date: 2010年02月22日 12:24 | |
Oops, sorry for not specifying that. It's: Python 2.6.4 (r264:75706, Jan 27 2010, 12:09:19) [GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin |
|||
| msg99749 - (view) | Author: Brett Cannon (brett.cannon) * (Python committer) | Date: 2010年02月22日 15:34 | |
Lib/_strptime.py itself should be thread-safe. I am guessing that it has something to do with the way the C code in time.c imports _strptime.py. A possible solution if it is the C code's import stuff is to create a time.py that imports a _time.c, but that's a total guess as to whether that will solve anything. |
|||
| msg99754 - (view) | Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) | Date: 2010年02月22日 15:49 | |
It would be easier to move the PyImport_ImportModuleNoBlock("_strptime") currently in strptime() into the timemodule.c init function.
|
|||
| msg99768 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2010年02月22日 16:09 | |
FYI there's been a proposal to create a time.py module anyway in order to add some pure python functions not worth writing in c. |
|||
| msg99803 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2010年02月22日 18:29 | |
For reference, it's issue 7989. |
|||
| msg99805 - (view) | Author: Eric V. Smith (eric.smith) * (Python committer) | Date: 2010年02月22日 18:31 | |
I just tried it again under gdb on MacOS 10.6, the supplied python 2.6.4 and got this backtrace: Program received signal SIGTRAP, Trace/breakpoint trap. [Switching to process 61133] 0x00007fff87a4b790 in __CFInitialize () (gdb) bt #0 0x00007fff87a4b790 in __CFInitialize () #1 0x00007fff5fc0d5ce in __dyld__ZN16ImageLoaderMachO11doImageInitERKN11ImageLoader11LinkContextE () #2 0x00007fff5fc0d607 in __dyld__ZN16ImageLoaderMachO16doInitializationERKN11ImageLoader11LinkContextE () #3 0x00007fff5fc0bcec in __dyld__ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj () #4 0x00007fff5fc0bc9d in __dyld__ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj () #5 0x00007fff5fc0bc9d in __dyld__ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj () #6 0x00007fff5fc0bda6 in __dyld__ZN11ImageLoader15runInitializersERKNS_11LinkContextE () #7 0x00007fff5fc08fbb in __dyld_dlopen () #8 0x00007fff8276fe00 in dlopen () #9 0x00000001000e876f in _PyImport_GetDynLoadFunc () #10 0x00000001000d2ce4 in _PyImport_LoadDynamicModule () #11 0x00000001000d0fbf in import_submodule () #12 0x00000001000d14da in load_next () #13 0x00000001000d17ec in PyImport_ImportModuleLevel () #14 0x00000001000aeeb3 in builtin___import__ () #15 0x000000010000c092 in PyObject_Call () #16 0x00000001000b00e7 in PyEval_CallObjectWithKeywords () #17 0x00000001000b43ae in PyEval_EvalFrameEx () #18 0x00000001000b8fd0 in PyEval_EvalCodeEx () #19 0x00000001000b90b6 in PyEval_EvalCode () #20 0x00000001000cdeb0 in PyImport_ExecCodeModuleEx () #21 0x00000001000cf112 in load_source_module () #22 0x00000001000d0fbf in import_submodule () #23 0x00000001000d14da in load_next () #24 0x00000001000d17ec in PyImport_ImportModuleLevel () #25 0x00000001000aeeb3 in builtin___import__ () #26 0x000000010000c092 in PyObject_Call () #27 0x00000001000b00e7 in PyEval_CallObjectWithKeywords () #28 0x00000001000b43ae in PyEval_EvalFrameEx () #29 0x00000001000b8fd0 in PyEval_EvalCodeEx () #30 0x00000001000b90b6 in PyEval_EvalCode () #31 0x00000001000cdeb0 in PyImport_ExecCodeModuleEx () #32 0x00000001000cf112 in load_source_module () #33 0x00000001000d0fbf in import_submodule () #34 0x00000001000d14da in load_next () #35 0x00000001000d17ec in PyImport_ImportModuleLevel () #36 0x00000001000aeeb3 in builtin___import__ () #37 0x000000010000c092 in PyObject_Call () #38 0x000000010000fbe5 in PyObject_CallFunction () #39 0x00000001000d1f9b in PyImport_Import () #40 0x00000001000d250f in PyImport_ImportModuleNoBlock () #41 0x0000000100515733 in time_strptime () #42 0x00000001000b8278 in PyEval_EvalFrameEx () #43 0x00000001000b8fd0 in PyEval_EvalCodeEx () #44 0x000000010003b355 in function_call () #45 0x000000010000c092 in PyObject_Call () #46 0x00000001000b00e7 in PyEval_CallObjectWithKeywords () #47 0x00000001000ef7ae in t_bootstrap () #48 0x00007fff827a2f8e in _pthread_start () #49 0x00007fff827a2e41 in thread_start () (gdb) |
|||
| msg99807 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2010年02月22日 18:36 | |
Attribute error confirmed on linux on trunk and py3k. |
|||
| msg118005 - (view) | Author: MunSic JEONG (ruseel) | Date: 2010年10月05日 12:16 | |
Attribute error confirmed on OSX, and py3k. http://codereview.appspot.com/2371041 |
|||
| msg118021 - (view) | Author: Alexander Belopolsky (belopolsky) * (Python committer) | Date: 2010年10月05日 17:10 | |
MunSic, It looks like issue7980.patch is just a unit test. Do you have a patch to fix the issue? |
|||
| msg118022 - (view) | Author: Alexander Belopolsky (belopolsky) * (Python committer) | Date: 2010年10月05日 17:16 | |
RDM> FYI there's been a proposal to create a time.py module anyway RDM> in order to add some pure python functions not worth writing in c. RDM> For reference, it's issue 7989. Issue #7989 was retargeted to deal with datetime module. The time.py issue is #9528. |
|||
| msg118338 - (view) | Author: MunSic JEONG (ruseel) | Date: 2010年10月10日 16:42 | |
> Do you have a patch to fix the issue? no, I don't. I just wanted to move stage from "unittest needed" to "needs patch" :) After reading issue8098, now I realized that this is broad issue as belopolsky said in msg110095. For new reader of this issue after me, I would like to share my understanding. Patch like below can solve this ticket. (changing "ImportModuleNoBlock" call to "ImportNoBlock") static PyObject * time_strptime(PyObject *self, PyObject *args) { - PyObject *strptime_module = PyImport_ImportModuleNoBlock("_strptime"); + PyObject *strptime_module = PyImport_ImportModule("_strptime"); But "the function PyImport_ImportModuleNoBlock() was introduced and used in modules such as the time module to supposedly avoid deadlocks when using threads." So we could not apply that patch. |
|||
| msg118530 - (view) | Author: Alexander Belopolsky (belopolsky) * (Python committer) | Date: 2010年10月13日 15:26 | |
It seems to me that this is related to if not a duplicate of issue 8098. |
|||
| msg127872 - (view) | Author: Carlos Corbacho (ccorbacho) | Date: 2011年02月04日 08:08 | |
As per my comments on Issue11108 - I suspect that PyImport_ImportModuleNoBlock is a bit of a red herring here - in Python 2.5 and earlier versions (well before PyImport_ImportModuleNoBlock was added), we have occasionally seen 'AttributeError: strptime' from threaded code calling time.strptime(), so whatever this bug is, I don't believe it's caused by the call now being non-blocking from 2.6 onwards. |
|||
| msg147110 - (view) | Author: Zsolt Kendi (kzsolt) | Date: 2011年11月05日 20:59 | |
I recognize the same problem problem at linux with 4 core 64 processor. The python version is 2.6.5 . Looks like occured randomly but maybe this is depend from thread sequence. |
|||
| msg160270 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2012年05月09日 11:12 | |
For the record, issue9260 proposes to fix the issues with PyImport_ImportModuleNoBlock. |
|||
| msg184067 - (view) | Author: William McBrine (William.McBrine) | Date: 2013年03月13日 03:53 | |
I'm still seeing this, in the 2.7.2 that comes with OS X 10.8.2. |
|||
| msg206340 - (view) | Author: David Palms (dpalms2011) | Date: 2013年12月16日 18:25 | |
I am still seeing this in 2.7.5, has a patch been created yet? |
|||
| msg206393 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2013年12月17日 02:11 | |
There's no patch posted here, and the issue is still open, so no. On the other hand, the way imports are handled in 3.3 and later is a bit different, and if I run the unit test (which does still fail for me on 2.7 tip) on 3.3 and 3.4 tip it passes. Given that, I'm guessing it is likely that none of the current Python committers are going to have time to look in to this, so unless someone else comes up with a patch, it isn't likely to get fixed in 2.7. |
|||
| msg214013 - (view) | Author: Stéphane Wirtel (matrixise) * (Python committer) | Date: 2014年03月18日 20:16 | |
This bug has not been fixed in 2.7.6 on OSX 10.9.2. |
|||
| msg214014 - (view) | Author: Romuald Brunet (Romuald) * | Date: 2014年03月18日 20:26 | |
This is a patch attempt to fix issue: import the _strptime module at time / datetime module load instead of method call. Please note that the test is not fully reliable: it may pass without the patch / on current version, since threaded execution isn't controlled |
|||
| msg215900 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2014年04月10日 19:34 | |
There are probably reasons why the import is currently done lazily, so I would advise against changing this in 2.7, unless the reasons are investigated and clearly understood. |
|||
| msg221094 - (view) | Author: Fred Wheeler (fredwheeler) | Date: 2014年06月20日 15:03 | |
This issue should be noted in the documentation of strptime in the time and datetime modules and/or the thread module. As it stands there is no good way for a user of these modules to learn of this problem until one day the right race conditions exist to expose the problem. Perhaps the following notes will do? https://docs.python.org/2/library/time.html#time.strptime Thread safety: The use of strptime is thread safe, but with one important caveat. The first use of strptime is not thread safe because the first use will import _strptime. That import is not thread safe and may throw AttributeError or ImportError. To avoid this issue, import _strptime explicitly before starting threads, or call strptime once before starting threads. https://docs.python.org/2/library/datetime.html (under strptime()) See time.strptime() for important thread safety information. Having just encountered this unusual and undocumented thread safety problem using 2.7.6, I'm wondering if there are other similar lurking thread safety issues that I might only find when the race conditions are just right and my program stops working. |
|||
| msg263985 - (view) | Author: SilentGhost (SilentGhost) * (Python triager) | Date: 2016年04月22日 08:44 | |
Lisa, please be careful with nosy list. |
|||
| msg263988 - (view) | Author: Eryk Sun (eryksun) * (Python triager) | Date: 2016年04月22日 09:07 | |
SilentGhost, msg263977 is spam copied from msg206393 to try to fool people into clicking on the link. I've marked all of these messages from editor-buzzfeed as spam. |
|||
| msg353869 - (view) | Author: Paul Ganssle (p-ganssle) * (Python committer) | Date: 2019年10月03日 18:11 | |
From what I can tell, this is a Python 2.7-only bug, and it's not a security issue, so I think we can close the issue as either "wontfix" (because we won't fix it in Python 2) or "fixed" (because it is already fixed in Python 3), depending on your perspective. |
|||
| msg357579 - (view) | Author: Brett Cannon (brett.cannon) * (Python committer) | Date: 2019年11月27日 18:44 | |
As per Paul's suggestion, closing as "won't fix" as this only pertains to Python 2.7 and it will not be changing. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:57 | admin | set | github: 52228 |
| 2019年11月27日 18:44:21 | brett.cannon | set | status: open -> closed resolution: wont fix messages: + msg357579 stage: needs patch -> resolved |
| 2019年10月03日 18:11:15 | p-ganssle | set | nosy:
+ p-ganssle messages: + msg353869 |
| 2016年04月22日 09:13:29 | martin.panter | set | messages: - msg263977 |
| 2016年04月22日 09:07:16 | eryksun | set | nosy:
+ eryksun messages: + msg263988 |
| 2016年04月22日 08:44:52 | SilentGhost | set | nosy:
+ Romuald, William.McBrine, ruseel, r.david.murray, matrixise, kzsolt, cptnwillard, fredwheeler, ccorbacho, pitrou, belopolsky, epu, amaury.forgeotdarc, brett.cannon, ced, davidfraser, eric.smith, dpalms2011, mark.dickinson, SilentGhost, flox messages: + msg263985 |
| 2016年04月22日 07:46:46 | editor-buzzfeed | set | nosy:
+ editor-buzzfeed, - brett.cannon, amaury.forgeotdarc, mark.dickinson, davidfraser, belopolsky, pitrou, eric.smith, ruseel, cptnwillard, ced, r.david.murray, flox, ccorbacho, kzsolt, matrixise, William.McBrine, epu, dpalms2011, Romuald, fredwheeler messages: + msg263977 |
| 2014年06月20日 15:03:04 | fredwheeler | set | nosy:
+ fredwheeler messages: + msg221094 |
| 2014年04月10日 19:34:14 | pitrou | set | messages: + msg215900 |
| 2014年04月10日 17:35:51 | mark.dickinson | set | nosy:
+ mark.dickinson |
| 2014年04月10日 16:35:52 | epu | set | nosy:
+ epu |
| 2014年03月18日 20:26:27 | Romuald | set | files:
+ issue7980-fix.patch keywords: + patch messages: + msg214014 |
| 2014年03月18日 20:16:13 | matrixise | set | nosy:
+ matrixise messages: + msg214013 |
| 2014年03月18日 14:00:32 | Romuald | set | nosy:
+ Romuald |
| 2013年12月17日 02:11:42 | r.david.murray | set | messages:
+ msg206393 versions: - Python 2.6, Python 3.1, Python 3.2 |
| 2013年12月16日 18:25:18 | dpalms2011 | set | nosy:
+ dpalms2011 messages: + msg206340 |
| 2013年03月13日 03:53:02 | William.McBrine | set | nosy:
+ William.McBrine messages: + msg184067 |
| 2012年05月09日 11:12:32 | pitrou | set | nosy:
+ pitrou messages: + msg160270 |
| 2012年04月19日 09:07:31 | ced | set | nosy:
+ ced |
| 2012年01月19日 07:23:09 | flox | set | nosy:
+ flox |
| 2011年11月05日 20:59:29 | kzsolt | set | nosy:
+ kzsolt messages: + msg147110 |
| 2011年02月04日 08:08:12 | ccorbacho | set | nosy:
+ ccorbacho messages: + msg127872 |
| 2011年02月04日 00:27:14 | amaury.forgeotdarc | link | issue11108 superseder |
| 2010年10月13日 15:26:35 | belopolsky | set | keywords:
- patch messages: + msg118530 |
| 2010年10月10日 16:42:42 | ruseel | set | messages: + msg118338 |
| 2010年10月05日 17:16:06 | belopolsky | set | messages: + msg118022 |
| 2010年10月05日 17:10:28 | belopolsky | set | messages: + msg118021 |
| 2010年10月05日 15:09:42 | pitrou | set | nosy:
+ belopolsky stage: test needed -> needs patch |
| 2010年10月05日 12:16:20 | ruseel | set | files:
+ issue7980-test.patch keywords: + patch messages: + msg118005 |
| 2010年09月28日 12:33:20 | ruseel | set | nosy:
+ ruseel |
| 2010年07月21日 17:55:35 | davidfraser | set | nosy:
+ davidfraser |
| 2010年02月22日 18:37:13 | r.david.murray | set | versions: + Python 3.1, Python 2.7, Python 3.2 |
| 2010年02月22日 18:36:46 | r.david.murray | set | priority: normal messages: + msg99807 stage: test needed |
| 2010年02月22日 18:31:36 | eric.smith | set | messages: + msg99805 |
| 2010年02月22日 18:29:29 | r.david.murray | set | messages: + msg99803 |
| 2010年02月22日 16:09:45 | r.david.murray | set | nosy:
+ r.david.murray messages: + msg99768 |
| 2010年02月22日 15:49:13 | amaury.forgeotdarc | set | messages: + msg99754 |
| 2010年02月22日 15:34:21 | brett.cannon | set | nosy:
+ brett.cannon messages: + msg99749 |
| 2010年02月22日 12:24:21 | eric.smith | set | messages: + msg99726 |
| 2010年02月22日 12:19:02 | amaury.forgeotdarc | set | nosy:
+ amaury.forgeotdarc messages: + msg99725 |
| 2010年02月22日 12:05:22 | eric.smith | set | nosy:
+ eric.smith messages: + msg99724 |
| 2010年02月22日 10:46:36 | cptnwillard | create | |