Patch Package: OTP 24.1.5 Git Tag: OTP-24.1.5 Date: 2021-11-11 Trouble Report Id: OTP-17734, OTP-17735, OTP-17736, OTP-17737 Seq num: GH-4989, GH-5279, GH-5327, GH-5339, GH-5346 System: OTP Release: 24 Application: erts-12.1.5, kernel-8.1.3 Predecessor: OTP 24.1.4 Check out the git tag OTP-24.1.5, and build a full OTP system including documentation. Apply one or more applications from this build as patches to your installation using the 'otp_patch_apply' tool. For information on install requirements, see descriptions for each application version below. --------------------------------------------------------------------- --- POTENTIAL INCOMPATIBILITIES ------------------------------------- --------------------------------------------------------------------- OTP-17734 Application(s): kernel Related Id(s): GH-5327, OTP-17659 The internal, undocumented, but used, module inet_dns has been fixed to handle mDNS high bit usage of the Class field. Code that uses the previously obsolete, undocumented and unused record field #dns_rr.func will need to be updated since that field is now used as a boolean flag for the mDNS high Class bit. Code that uses the also undocumented record #dns_query will need to be recompiled since a boolean field #dns_query.unicast_response has been added for the mDNS high Class bit. --------------------------------------------------------------------- --- erts-12.1.5 ----------------------------------------------------- --------------------------------------------------------------------- The erts-12.1.5 application can be applied independently of other applications on a full OTP 24 installation. --- Fixed Bugs and Malfunctions --- OTP-17735 Application(s): erts Related Id(s): GH-5339 The runtime system could call select() with a too large timeout value when executing on MacOS. This could in turn cause the runtime system to crash. OTP-17736 Application(s): erts, kernel Related Id(s): GH-5279, OTP-17559, PR-5120 The fix for Linux's behaviour when reconnecting an UDP socket in PR-5120 released in OTP-24.1.2 has been refined to only dissolve the socket's connection before a connect if the socket is already connected, that is: only for a reconnect. This allows code to open a socket with an ephemeral port, get the port number and connect; without the port number changing (on Linux). This turned out to have at least one valid use case (besides test cases). Should one reconnect the socket then the port number may change, on Linux; it is a known quirk, which can be worked around by binding to a specific port number when opening the socket. If you can do without an ephemeral port, that is... OTP-17737 Application(s): erts Related Id(s): GH-4989, GH-5346 Certain distributed signals that for various reasons must to be forced into the distribution buffer even when it is full would instead be lost if the distribution buffer was full when sent. The effected signals: -- EXIT signals with exit reasons of one word size. -- DOWN signals with exit reasons of one word size. -- demonitor signals from a terminating process. -- unlink_ack signals on OTP 23 and 24. -- spawn_reply signals on OTP 23 and 24. Full runtime dependencies of erts-12.1.5: kernel-8.0, sasl-3.3, stdlib-3.13 --------------------------------------------------------------------- --- kernel-8.1.3 ---------------------------------------------------- --------------------------------------------------------------------- The kernel-8.1.3 application can be applied independently of other applications on a full OTP 24 installation. --- Fixed Bugs and Malfunctions --- OTP-17734 Application(s): kernel Related Id(s): GH-5327, OTP-17659 *** POTENTIAL INCOMPATIBILITY *** The internal, undocumented, but used, module inet_dns has been fixed to handle mDNS high bit usage of the Class field. Code that uses the previously obsolete, undocumented and unused record field #dns_rr.func will need to be updated since that field is now used as a boolean flag for the mDNS high Class bit. Code that uses the also undocumented record #dns_query will need to be recompiled since a boolean field #dns_query.unicast_response has been added for the mDNS high Class bit. OTP-17736 Application(s): erts, kernel Related Id(s): GH-5279, OTP-17559, PR-5120 The fix for Linux's behaviour when reconnecting an UDP socket in PR-5120 released in OTP-24.1.2 has been refined to only dissolve the socket's connection before a connect if the socket is already connected, that is: only for a reconnect. This allows code to open a socket with an ephemeral port, get the port number and connect; without the port number changing (on Linux). This turned out to have at least one valid use case (besides test cases). Should one reconnect the socket then the port number may change, on Linux; it is a known quirk, which can be worked around by binding to a specific port number when opening the socket. If you can do without an ephemeral port, that is... Full runtime dependencies of kernel-8.1.3: crypto-5.0, erts-12.0, sasl-3.0, stdlib-3.13 --------------------------------------------------------------------- --------------------------------------------------------------------- ---------------------------------------------------------------------