Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiprocessing resource tracker incorrectly checks pipe write length #96819

Closed
grgsrs opened this issue Sep 14, 2022 · 2 comments
Closed

Multiprocessing resource tracker incorrectly checks pipe write length #96819

grgsrs opened this issue Sep 14, 2022 · 2 comments
Labels
stdlib Python modules in the Lib dir topic-multiprocessing type-bug An unexpected behavior, bug, or error

Comments

@grgsrs
Copy link

grgsrs commented Sep 14, 2022

I think this line should be:

if len(msg) > 512:
@ronaldoussoren ronaldoussoren added type-bug An unexpected behavior, bug, or error stdlib Python modules in the Lib dir topic-multiprocessing labels Sep 14, 2022
@saito828koki
Copy link
Contributor

@grgsrs
Thanks for your report!

Your suggestion seems to be correct. To guarantee that a write operation is atomic, the length of msg has to be less than or equal to PIPE_BUF(the kernel pipe buffer size).
According to this page, the minimum acceptable value of PIPE_BUF is set to 512 bytes in POSIX system , so checking if len(msg) is not greater than 512 is enough.

I will create a PR for this issue.

@grgsrs
Copy link
Author

grgsrs commented Sep 17, 2022 via email

JelleZijlstra pushed a commit that referenced this issue Oct 3, 2022
miss-islington pushed a commit to miss-islington/cpython that referenced this issue Oct 3, 2022
…pipe write <= 512 (pythonGH-96890)

Co-authored-by: Kumar Aditya <[email protected]>
(cherry picked from commit 19ca114)

Co-authored-by: Koki Saito <[email protected]>
miss-islington pushed a commit to miss-islington/cpython that referenced this issue Oct 3, 2022
…pipe write <= 512 (pythonGH-96890)

Co-authored-by: Kumar Aditya <[email protected]>
(cherry picked from commit 19ca114)

Co-authored-by: Koki Saito <[email protected]>
miss-islington added a commit that referenced this issue Oct 3, 2022
…rite <= 512 (GH-96890)

Co-authored-by: Kumar Aditya <[email protected]>
(cherry picked from commit 19ca114)

Co-authored-by: Koki Saito <[email protected]>
miss-islington added a commit that referenced this issue Oct 3, 2022
…rite <= 512 (GH-96890)

Co-authored-by: Kumar Aditya <[email protected]>
(cherry picked from commit 19ca114)

Co-authored-by: Koki Saito <[email protected]>
carljm added a commit to carljm/cpython that referenced this issue Oct 3, 2022
* main: (2069 commits)
  pythongh-96512: Move int_max_str_digits setting to PyConfig (python#96944)
  pythongh-94808: Coverage: Check picklablability of calliter (python#95923)
  pythongh-94808: Add test coverage for PyObject_HasAttrString (python#96627)
  pythongh-94732: Fix KeyboardInterrupt race in asyncio run_forever() (python#97765)
  Fix typos in `bltinmodule.c`. (pythonGH-97766)
  pythongh-94808: `_PyLineTable_StartsLine` was not used (pythonGH-96609)
  pythongh-97681: Remove Tools/demo/ directory (python#97682)
  Fix typo in unittest docs (python#97742)
  pythongh-97728: Argument Clinic: Fix uninitialized variable in the Py_UNICODE converter (pythonGH-97729)
  pythongh-95913: Fix PEP number in PEP 678 What's New ref label (python#97739)
  pythongh-95913: Copyedit/improve New Modules What's New section (python#97721)
  pythongh-97740: Fix bang in Sphinx C domain ref target syntax (python#97741)
  pythongh-96819: multiprocessing.resource_tracker: check if length of pipe write <= 512 (python#96890)
  pythongh-97706: multiprocessing tests: Delete unused variable `rand` (python#97707)
  pythonGH-85447: Clarify docs about awaiting future multiple times (python#97738)
  [docs] Update logging cookbook with recipe for using a logger like an output… (pythonGH-97730)
  pythongh-97607: Fix content parsing in the impl-detail reST directive (python#97652)
  pythongh-95975: Move except/*/finally ref labels to more precise locations (python#95976)
  pythongh-97591: In `Exception.__setstate__()` acquire strong references before calling `tp_hash` slot (python#97700)
  pythongh-95588: Drop the safety claim from `ast.literal_eval` docs. (python#95919)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stdlib Python modules in the Lib dir topic-multiprocessing type-bug An unexpected behavior, bug, or error
Projects
Development

No branches or pull requests

4 participants