Staging
v0.8.1
v0.8.1
https://github.com/python/cpython
Revision 749afe81ec0a4b92ad6b89a67c82f2c04f79c5ac authored by CtrlZvi on 25 May 2018, 08:03:25 UTC, committed by Andrew Svetlov on 25 May 2018, 08:03:25 UTC
The proactor event loop has a race condition when reading with pausing/resuming. `resume_reading()` unconditionally schedules the read function to read from the current future. If `resume_reading()` was called before the previously scheduled done callback fires, this results in two attempts to get the data from the most recent read and an assertion failure. This commit tracks whether or not `resume_reading` needs to reschedule the callback to restart the loop, preventing a second attempt to read the data.. (cherry picked from commit 4151061855b571bf8a7579daa7875b8e243057b9) Co-authored-by: CtrlZvi <viz+github@flippedperspective.com>
1 parent 36f066a
Tip revision: 749afe81ec0a4b92ad6b89a67c82f2c04f79c5ac authored by CtrlZvi on 25 May 2018, 08:03:25 UTC
[3.6] bpo-26819: Prevent proactor double read on resume (GH-6921) (#7110)
[3.6] bpo-26819: Prevent proactor double read on resume (GH-6921) (#7110)
Tip revision: 749afe8
File | Mode | Size |
---|---|---|
Python-ast.h | -rw-r--r-- | 21.8 KB |
Python.h | -rw-r--r-- | 2.9 KB |
abstract.h | -rw-r--r-- | 46.3 KB |
accu.h | -rw-r--r-- | 1016 bytes |
asdl.h | -rw-r--r-- | 1.2 KB |
ast.h | -rw-r--r-- | 477 bytes |
bitset.h | -rw-r--r-- | 792 bytes |
bltinmodule.h | -rw-r--r-- | 264 bytes |
boolobject.h | -rw-r--r-- | 886 bytes |
bytearrayobject.h | -rw-r--r-- | 2.1 KB |
bytes_methods.h | -rw-r--r-- | 3.1 KB |
bytesobject.h | -rw-r--r-- | 8.2 KB |
cellobject.h | -rw-r--r-- | 701 bytes |
ceval.h | -rw-r--r-- | 8.2 KB |
classobject.h | -rw-r--r-- | 1.6 KB |
code.h | -rw-r--r-- | 5.8 KB |
codecs.h | -rw-r--r-- | 6.6 KB |
compile.h | -rw-r--r-- | 2.1 KB |
complexobject.h | -rw-r--r-- | 1.8 KB |
datetime.h | -rw-r--r-- | 9.2 KB |
descrobject.h | -rw-r--r-- | 2.9 KB |
dictobject.h | -rw-r--r-- | 7.0 KB |
dtoa.h | -rw-r--r-- | 458 bytes |
dynamic_annotations.h | -rw-r--r-- | 21.9 KB |
enumobject.h | -rw-r--r-- | 253 bytes |
errcode.h | -rw-r--r-- | 1.5 KB |
eval.h | -rw-r--r-- | 597 bytes |
fileobject.h | -rw-r--r-- | 1.6 KB |
fileutils.h | -rw-r--r-- | 2.9 KB |
floatobject.h | -rw-r--r-- | 4.7 KB |
frameobject.h | -rw-r--r-- | 3.4 KB |
funcobject.h | -rw-r--r-- | 4.0 KB |
genobject.h | -rw-r--r-- | 3.5 KB |
graminit.h | -rw-r--r-- | 1.9 KB |
grammar.h | -rw-r--r-- | 2.0 KB |
import.h | -rw-r--r-- | 4.1 KB |
intrcheck.h | -rw-r--r-- | 513 bytes |
iterobject.h | -rw-r--r-- | 567 bytes |
listobject.h | -rw-r--r-- | 2.8 KB |
longintrepr.h | -rw-r--r-- | 3.7 KB |
longobject.h | -rw-r--r-- | 8.3 KB |
marshal.h | -rw-r--r-- | 803 bytes |
memoryobject.h | -rw-r--r-- | 2.7 KB |
metagrammar.h | -rw-r--r-- | 253 bytes |
methodobject.h | -rw-r--r-- | 3.8 KB |
modsupport.h | -rw-r--r-- | 7.1 KB |
moduleobject.h | -rw-r--r-- | 2.2 KB |
namespaceobject.h | -rw-r--r-- | 349 bytes |
node.h | -rw-r--r-- | 1007 bytes |
object.h | -rw-r--r-- | 39.4 KB |
objimpl.h | -rw-r--r-- | 13.9 KB |
odictobject.h | -rw-r--r-- | 1.3 KB |
opcode.h | -rw-r--r-- | 5.0 KB |
osdefs.h | -rw-r--r-- | 691 bytes |
osmodule.h | -rw-r--r-- | 291 bytes |
parsetok.h | -rw-r--r-- | 2.8 KB |
patchlevel.h | -rw-r--r-- | 1.1 KB |
pgen.h | -rw-r--r-- | 253 bytes |
pgenheaders.h | -rw-r--r-- | 1.2 KB |
py_curses.h | -rw-r--r-- | 4.2 KB |
pyarena.h | -rw-r--r-- | 2.7 KB |
pyatomic.h | -rw-r--r-- | 7.9 KB |
pycapsule.h | -rw-r--r-- | 1.7 KB |
pyctype.h | -rw-r--r-- | 1.3 KB |
pydebug.h | -rw-r--r-- | 1.2 KB |
pydtrace.d | -rw-r--r-- | 863 bytes |
pydtrace.h | -rw-r--r-- | 1.9 KB |
pyerrors.h | -rw-r--r-- | 16.8 KB |
pyexpat.h | -rw-r--r-- | 2.3 KB |
pyfpe.h | -rw-r--r-- | 8.3 KB |
pygetopt.h | -rw-r--r-- | 410 bytes |
pyhash.h | -rw-r--r-- | 4.0 KB |
pylifecycle.h | -rw-r--r-- | 3.9 KB |
pymacconfig.h | -rw-r--r-- | 2.9 KB |
pymacro.h | -rw-r--r-- | 3.4 KB |
pymath.h | -rw-r--r-- | 8.1 KB |
pymem.h | -rw-r--r-- | 8.3 KB |
pyport.h | -rw-r--r-- | 26.9 KB |
pystate.h | -rw-r--r-- | 10.9 KB |
pystrcmp.h | -rw-r--r-- | 436 bytes |
pystrhex.h | -rw-r--r-- | 495 bytes |
pystrtod.h | -rw-r--r-- | 1.4 KB |
pythonrun.h | -rw-r--r-- | 6.6 KB |
pythread.h | -rw-r--r-- | 2.9 KB |
pytime.h | -rw-r--r-- | 7.4 KB |
rangeobject.h | -rw-r--r-- | 629 bytes |
setobject.h | -rw-r--r-- | 3.3 KB |
sliceobject.h | -rw-r--r-- | 2.4 KB |
structmember.h | -rw-r--r-- | 2.0 KB |
structseq.h | -rw-r--r-- | 1.3 KB |
symtable.h | -rw-r--r-- | 4.9 KB |
sysmodule.h | -rw-r--r-- | 1.3 KB |
token.h | -rw-r--r-- | 1.9 KB |
traceback.h | -rw-r--r-- | 3.6 KB |
tupleobject.h | -rw-r--r-- | 2.4 KB |
typeslots.h | -rw-r--r-- | 2.2 KB |
ucnhash.h | -rw-r--r-- | 1.0 KB |
unicodeobject.h | -rw-r--r-- | 79.9 KB |
warnings.h | -rw-r--r-- | 1.7 KB |
weakrefobject.h | -rw-r--r-- | 2.8 KB |
Computing file changes ...