You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Summary:
Pull Request resolved: #835
SAFETY: ignore SIGPIPE as hyperactor tx/rx channels have the following issue:
When tx tries to send a message, it can either do try_post/post or send.
try_post/post is async and send is sync. However, both methods do not have a
way to tell the receiver's state.
For try_post/post, it will send messages in the background. However, if the
receiver process gets killed,
try_post/post will continue sending messages leading to SIGPIPE and crash the
parent process.
For send, it is a sync call. It waits on the receiver to ack. However, if the
receiver is dead or not started yet,
the send will be blocked.
We need to fix the above issues but before that, ignore SIGPIPE as a
mitigation.
As a specific victim of this, the log sender streams the log to the log
forwarder. However, it doesn't know the state of the log forwarder. It could
have not started yet or being killed. If we use tx.send, it will be blocked
leading to stuck allocator. If we use tx.post, it will get back sigpipe on
child process shutdown.
Reviewed By: LucasLLC, vidhyav
Differential Revision: D80131609
fbshipit-source-id: 374165d1ceb835a3ea618ba0931b7464304022f2
0 commit comments