-
Notifications
You must be signed in to change notification settings - Fork 29.7k
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
possible libuv issue with macos 10.15: empty udp message not registering #30030
Comments
Does this also happen with Node 12.11.1? |
@addaleax Yes, just tried with the binary using https://nodejs.org/dist/v12.11.1/ |
/cc @nodejs/platform-macos @daviehh Have you tried recreating this with e.g. Python? I’m not on a mac but I have the suspicion that this may actually be just a platform quirk of macOS that we can’t do anything about. |
@addaleax I have actually tried Python, empty udp message works there: receiving:
sending:
|
It seems our test suite also fails due to this on macOS Catalina.
|
Thanks! I first noticed this issue with a beta version of another language that uses libuv (julia), so it's likely that it's a libuv bug; is it good for the bug report to be here or is it better to report to libuv? Not sure how to write a simple c code that directly uses libuv to reproduce the issue though. |
Yeah, I've reproduced the issue in |
It looks like a problem with |
@nodejs/libuv Has anybody reported this to Apple yet? I’m assuming that that’s the thing to do here, no? |
Yes... except sending a bug report to Apple is like throwing matter into a black hole: it disappears and is never seen again. |
I have a channel to get some additional information from Apple given the bug report number. Has anyone reported it? |
Oh... I just realized that I might have reported this in 2014 and provided a fix. Here is a repo (by other person) that reproduces the issue using outdated libuv version: https://github.com/misterdjules/udp-empty-dgram-repro |
Here goes the original report: nodejs/node-v0.x-archive#8023 |
So this just regressed then? If nobody has reported a new radar, I'm happy to do that. |
Looks like Apple retired radar, but I've filed this using the new system as FB7503750. |
Signed-off-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
Signed-off-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
They fail on OS X 10.15 (aka "Catalina"), but pass on earlier OS X. Refs: nodejs#30030 Refs: nodejs/build#2189 (comment)
They fail on OS X 10.15 (aka "Catalina"), but pass on earlier OS X. Refs: #30030 Refs: nodejs/build#2189 (comment) PR-URL: #31936 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Beth Griggs <Bethany.Griggs@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rod Vagg <rod@vagg.org>
IMO, I suggest our tests should be reworked to not require platforms support zero-length UDP datagrams, and instead check they either work, or not throw js/c++ errors because our code is broken. For platforms that do support them, its nice that node and libuv do, as well, but its not exactly a critical feature. I'm not aware of any actual uses for zero-length UDP other than port-knocking during network intrusion or crashing unsuspecting UDP listeners, who insufficiently validate the received packet sizes. Making the tests auto-detect what is happening, and pass whether or not the packets are received seems like a long-term robust solution, and will get OS X 10.15 out of perma-yellow. Thoughts? cc: @AshCripps |
@sam-github You could work the tests to do that however, from what I understand the test is supposed to pass on mac, apple just introduced a regression in catlina rather than the feature not being supported. |
They fail on OS X 10.15 (aka "Catalina"), but pass on earlier OS X. Refs: #30030 Refs: nodejs/build#2189 (comment) PR-URL: #31936 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Beth Griggs <Bethany.Griggs@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rod Vagg <rod@vagg.org>
They fail on OS X 10.15 (aka "Catalina"), but pass on earlier OS X. Refs: #30030 Refs: nodejs/build#2189 (comment) PR-URL: #31936 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Beth Griggs <Bethany.Griggs@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rod Vagg <rod@vagg.org>
@sam-github Turns out these tests used to be skipped fully on apple in the first place when the bug first appeared in macos 10.9. This would get the CI out of perma yellow but would need to be swapped back if apple ever fix it. Im going to try and see if I can find out the progress of the apple bug report and see if anythings being done about it tomorrow. #22546 (Can only find the PR to remove the skip) |
Apple has told me that they have identified a fix and will ship it in a future OS update, but have not provided any further details than that. |
@Keno At least that something, thanks for letting us know! |
The skip is very old and was added in the old repository (see #30030 (comment)). |
They fail on OS X 10.15 (aka "Catalina"), but pass on earlier OS X. Refs: nodejs#30030 Refs: nodejs/build#2189 (comment) PR-URL: nodejs#31936 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Beth Griggs <Bethany.Griggs@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rod Vagg <rod@vagg.org>
I'm seeing multiple instances of our test suite not respecting the mark of flaky in these tests, any idea what's up? https://ci.nodejs.org/job/node-test-commit-osx/32536/#showFailuresLink nvm failure is due to |
They fail on OS X 10.15 (aka "Catalina"), but pass on earlier OS X. Refs: #30030 Refs: nodejs/build#2189 (comment) PR-URL: #31936 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Beth Griggs <Bethany.Griggs@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rod Vagg <rod@vagg.org> PR-URL: #32146 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Shelley Vohr <codebytere@gmail.com>
The issue seems to be fixed in macOS 10.15.4 |
Signed-off-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
Signed-off-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
Signed-off-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
Signed-off-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
Other discussion: nodejs/node#30030 Signed-off-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
Other discussion: nodejs/node#30030 Signed-off-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
Other discussion: nodejs/node#30030 Signed-off-by: Kevin Leimkuhler <kevin@kleimkuhler.com>
Closing as based on the comments this is fixed, and the tests are no longer skipped in CI on macOS. |
macOS 10.15 Catalina and iOS 13 have a bug which causes empty UPD packets not to work. This seems to be a regression for a bug that affected macOS 10.10. Ref: nodejs/node#30030
macOS 10.15 Catalina and iOS 13 have a bug which causes empty UPD packets not to work. This seems to be a regression for a bug that affected macOS 10.10. Ref: nodejs/node#30030
v12.12.0
macos catalina/10.15 (19A602)
n/a
When sending an empty udp message, the message will not be received until another non-empty udp message is received.
Example/Reproduce: (may only affect macos 10.15?)
file
server.js
file
client_test.js
file
client_0.js
run the server code, then run the
client_0.js
: no response in server.followed by running client_test.js: server got empty and the "abc" message.
The text was updated successfully, but these errors were encountered: