Staging
v0.5.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
History
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)
Tip revision: 749afe8
File Mode Size
_asyncio.vcxproj -rw-r--r-- 3.0 KB
_asyncio.vcxproj.filters -rw-r--r-- 520 bytes
_bz2.vcxproj -rw-r--r-- 3.9 KB
_bz2.vcxproj.filters -rw-r--r-- 1.7 KB
_ctypes.vcxproj -rw-r--r-- 4.7 KB
_ctypes.vcxproj.filters -rw-r--r-- 2.3 KB
_ctypes_test.vcxproj -rw-r--r-- 3.1 KB
_ctypes_test.vcxproj.filters -rw-r--r-- 718 bytes
_decimal.vcxproj -rw-r--r-- 6.0 KB
_decimal.vcxproj.filters -rw-r--r-- 4.3 KB
_distutils_findvs.vcxproj -rw-r--r-- 3.4 KB
_distutils_findvs.vcxproj.filters -rw-r--r-- 510 bytes
_elementtree.vcxproj -rw-r--r-- 4.5 KB
_elementtree.vcxproj.filters -rw-r--r-- 2.6 KB
_freeze_importlib.vcxproj -rw-r--r-- 5.2 KB
_freeze_importlib.vcxproj.filters -rw-r--r-- 1.1 KB
_hashlib.vcxproj -rw-r--r-- 3.8 KB
_hashlib.vcxproj.filters -rw-r--r-- 436 bytes
_lzma.vcxproj -rw-r--r-- 3.7 KB
_lzma.vcxproj.filters -rw-r--r-- 435 bytes
_msi.vcxproj -rw-r--r-- 3.2 KB
_msi.vcxproj.filters -rw-r--r-- 423 bytes
_multiprocessing.vcxproj -rw-r--r-- 3.4 KB
_multiprocessing.vcxproj.filters -rw-r--r-- 861 bytes
_overlapped.vcxproj -rw-r--r-- 3.2 KB
_overlapped.vcxproj.filters -rw-r--r-- 434 bytes
_socket.vcxproj -rw-r--r-- 3.3 KB
_socket.vcxproj.filters -rw-r--r-- 702 bytes
_sqlite3.vcxproj -rw-r--r-- 4.5 KB
_sqlite3.vcxproj.filters -rw-r--r-- 2.4 KB
_ssl.vcxproj -rw-r--r-- 3.9 KB
_ssl.vcxproj.filters -rw-r--r-- 428 bytes
_testbuffer.vcxproj -rw-r--r-- 3.1 KB
_testbuffer.vcxproj.filters -rw-r--r-- 435 bytes
_testcapi.vcxproj -rw-r--r-- 3.1 KB
_testcapi.vcxproj.filters -rw-r--r-- 439 bytes
_testconsole.vcxproj -rw-r--r-- 3.2 KB
_testconsole.vcxproj.filters -rw-r--r-- 952 bytes
_testembed.vcxproj -rw-r--r-- 3.1 KB
_testembed.vcxproj.filters -rw-r--r-- 948 bytes
_testimportmultiple.vcxproj -rw-r--r-- 3.2 KB
_testimportmultiple.vcxproj.filters -rw-r--r-- 444 bytes
_testmultiphase.vcxproj -rw-r--r-- 3.2 KB
_testmultiphase.vcxproj.filters -rw-r--r-- 952 bytes
_tkinter.vcxproj -rw-r--r-- 3.9 KB
_tkinter.vcxproj.filters -rw-r--r-- 534 bytes
build.bat -rw-r--r-- 5.4 KB
build_env.bat -rw-r--r-- 25 bytes
clean.bat -rw-r--r-- 128 bytes
env.bat -rw-r--r-- 712 bytes
field3.py -rw-r--r-- 974 bytes
find_msbuild.bat -rw-r--r-- 2.4 KB
find_python.bat -rw-r--r-- 3.0 KB
get_external.py -rw-r--r-- 1.8 KB
get_externals.bat -rw-r--r-- 3.4 KB
idle.bat -rw-r--r-- 296 bytes
libeay.vcxproj -rw-r--r-- 45.3 KB
liblzma.vcxproj -rw-r--r-- 13.0 KB
openssl.props -rw-r--r-- 3.5 KB
pcbuild.proj -rw-r--r-- 5.5 KB
pcbuild.sln -rw-r--r-- 59.0 KB
prepare_ssl.bat -rw-r--r-- 269 bytes
prepare_ssl.py -rw-r--r-- 6.3 KB
pyexpat.vcxproj -rw-r--r-- 3.6 KB
pyexpat.vcxproj.filters -rw-r--r-- 1.2 KB
pylauncher.vcxproj -rw-r--r-- 3.2 KB
pylauncher.vcxproj.filters -rw-r--r-- 1.2 KB
pyproject.props -rw-r--r-- 10.4 KB
pyshellext.vcxproj -rw-r--r-- 3.4 KB
pyshellext.vcxproj.filters -rw-r--r-- 1.4 KB
python.props -rw-r--r-- 12.0 KB
python.vcxproj -rw-r--r-- 5.0 KB
python.vcxproj.filters -rw-r--r-- 824 bytes
python3dll.vcxproj -rw-r--r-- 5.8 KB
python3dll.vcxproj.filters -rw-r--r-- 1.2 KB
pythoncore.vcxproj -rw-r--r-- 21.6 KB
pythoncore.vcxproj.filters -rw-r--r-- 32.5 KB
pythonw.vcxproj -rw-r--r-- 3.0 KB
pythonw.vcxproj.filters -rw-r--r-- 702 bytes
pywlauncher.vcxproj -rw-r--r-- 3.2 KB
pywlauncher.vcxproj.filters -rw-r--r-- 1.2 KB
readme.txt -rw-r--r-- 12.7 KB
rmpyc.py -rw-r--r-- 409 bytes
rt.bat -rw-r--r-- 2.0 KB
select.vcxproj -rw-r--r-- 3.2 KB
select.vcxproj.filters -rw-r--r-- 436 bytes
sqlite3.vcxproj -rw-r--r-- 4.1 KB
sqlite3.vcxproj.filters -rw-r--r-- 804 bytes
ssleay.vcxproj -rw-r--r-- 4.8 KB
tcl.vcxproj -rw-r--r-- 3.6 KB
tcltk.props -rw-r--r-- 3.2 KB
tix.vcxproj -rw-r--r-- 3.5 KB
tk.vcxproj -rw-r--r-- 3.7 KB
unicodedata.vcxproj -rw-r--r-- 3.2 KB
unicodedata.vcxproj.filters -rw-r--r-- 810 bytes
urlretrieve.py -rw-r--r-- 1.2 KB
winsound.vcxproj -rw-r--r-- 3.1 KB
winsound.vcxproj.filters -rw-r--r-- 500 bytes
xxlimited.vcxproj -rw-r--r-- 3.2 KB
xxlimited.vcxproj.filters -rw-r--r-- 433 bytes

readme.txt

back to top