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
@refack so this is because of timer precision on Windows. I can fix later today. Or someone else could... just needs the timeout and while loop to be bigger than like 16ms or whatever the platform granularity is (can't recall the exact number).
For example the above mentioned timeGetDevCaps/timeBeginPeriod are (1) global per process 🤷♂️ (2) part of the Multimedia API 😕 (3) depend on power (as in electricity) saving profile 🤦♂️
IIUC this setting's name is just a coincidence, since it's shared by many other uses of "Multimedia Timers"
Activity
refack commentedon Nov 19, 2018
/CC @apapirovski might this be related to #22842?
Trott commentedon Nov 19, 2018
Attempting to replicate with a stress test: https://ci.nodejs.org/job/node-stress-single-test/2087/
Worker: test-azure_msft-win2016-x64-6
Non-default parameters:
RUN_TESTS: -J --repeat 10 parallel/test-timers-immediate-queue
RUN_TIMES: 100
RUN_LABEL: win2016-1p-vs2017
apapirovski commentedon Nov 20, 2018
@refack so this is because of timer precision on Windows. I can fix later today. Or someone else could... just needs the timeout and while loop to be bigger than like 16ms or whatever the platform granularity is (can't recall the exact number).
refack commentedon Nov 20, 2018
FTR stress failed with 49% -
19:59:42 100 OK: 51 NOT OK: 49 TOTAL: 100Seems like it's fixable via
timeGetDevCapsbut that's should be a libuv feature.Ref: https://stackoverflow.com/questions/448761/accurate-windows-timer-system-timers-timer-is-limited-to-15-msec
Anyway, I'm trying to create a test that 100% reproduces so we can add it to
known-issuesTrott commentedon Nov 26, 2018
@refack Meaning that it can be fixed in libuv but currently is not?
refack commentedon Nov 26, 2018
Yes, exactly.
It might be possible to implement, but complicated to do in a bug-free-cross-platform-compatible way...
refack commentedon Nov 26, 2018
For example the above mentioned

timeGetDevCaps/timeBeginPeriodare (1) global per process 🤷♂️ (2) part of the Multimedia API 😕 (3) depend on power (as in electricity) saving profile 🤦♂️IIUC this setting's name is just a coincidence, since it's shared by many other uses of "Multimedia Timers"
refack commentedon Nov 26, 2018
The interwebs say > 15ms, but I'm not sure I grok the test, and know how to change it without eliminating it's essence.
BTW: It doesn't repro on my computer (Windows 10 1809 build 18282)
Trott commentedon Mar 6, 2021
https://ci.nodejs.org/job/node-test-commit-arm/nodes=centos7-arm64-gcc8/36235/console
Trott commentedon Mar 18, 2021
https://ci.nodejs.org/job/node-test-commit-arm/36447/nodes=centos7-arm64-gcc8/console
Trott commentedon Mar 18, 2021
@nodejs/timers @nodejs/libuv
Fishrock123 commentedon Mar 18, 2021
I'd say revert recent timers commits but everything looks pretty mundane
test: replace flaky immediates event loop test
Trott commentedon Jun 29, 2023
Closing per #48575