[issue44614] Broken Pipe in Server of Manager in multiprocessing when finalizing, sometimes

Florian Streibelt report at bugs.python.org
Mon Jul 12 18:07:45 EDT 2021


New submission from Florian Streibelt <github at f-streibelt.de>:

It seems that the shutdown() method of the Server in in managers.py is already sending the result of its execution directly into the connection, and then the handle_request() method is trying to send ('#RETURN', None) yet again after returning from the call to shutdown() which sometimes yields a Broken Pipe Exception.

with the following line in handle_request():
    result = func(c, *args, **kwds)
a call to shutown() is made, and in shutdown() I see:
    c.send(('#RETURN', None))

and back in handle_request():
    msg = ('#RETURN', result)
…
    c.send(msg)

attached you find a minimal example that shows this behaviour sometimes, if logging is set to not more than DEBUG. I am guessing that the Broken Pipe depends on a race with the other side being closed.

Although the race condition does not look like having an impact, it is highly confusing when debugging. 


log:
      INFO           MainProcess         util.py:54  sending shutdown message to manager
     DEBUG        BaseManager-12         util.py:50  manager received shutdown message
      INFO        BaseManager-12         util.py:54  Failure to send message: ('#RETURN', None)
      INFO        BaseManager-12         util.py:54  process shutting down
      INFO        BaseManager-12         util.py:54   ... request was (None, 'shutdown', (), {})
     DEBUG        BaseManager-12         util.py:50  running all "atexit" finalizers with priority >= 0
      INFO        BaseManager-12         util.py:54   ... exception was BrokenPipeError(32, 'Broken pipe')
     DEBUG        BaseManager-12         util.py:50  running the remaining "atexit" finalizers
      INFO        BaseManager-12         util.py:54  process exiting with exitcode 0

----------
components: Library (Lib)
files: race2.py
messages: 397358
nosy: mutax
priority: normal
severity: normal
status: open
title: Broken Pipe in Server of Manager in multiprocessing when finalizing, sometimes
type: behavior
versions: Python 3.9
Added file: https://bugs.python.org/file50145/race2.py

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44614>
_______________________________________


More information about the Python-bugs-list mailing list