- 论坛徽章:
- 27
|
OTP-12082 A bug in the VM code implementing sending of signals to ports
could cause the receiving port queue to remain in a busy
state forever. When this state had been reached, processes
sending command signals to the port either got suspended
forever, or, if the nosuspend feature was used, always failed
to send to the port. This bug was introduced in ERTS version
5.10.
In order for this bug to be triggered on a port, one had to
at least once utilize the nosuspend functionality when
passing a signal to the port. This by either calling
-- port_command(Port, Data, [nosuspend | Options]),
-- erlang:send(Port, {PortOwner, {command, Data}}, [nosuspend
| Options]),
-- erlang:send_nosuspend(Port, {PortOwner, {command, Data}}),
or
-- erlang:send_nosuspend(Port, {PortOwner, {command, Data}},
Options).
Thanks Vasily Demidenok for reporting the issue, and Sergey
Kudryashov for providing a test case. |
|