mainloop/update_time_jumps: [forking] FAIL src/test/test_mainloop.c:115: expected log to not contain entries Captured logs: 1. notice: "Your system clock just jumped 1800 seconds forward; assuming established circuits no longer work.\n" [update_time_jumps FAILED]
Should we set up macOS i386 CI to detect issues like this?
Or should we remove macOS i386 from our supported platforms?
(Apple won't support i386 in the next macOS, so in ~3 years time, we won't need to support it.)
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items 0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items 0
Link issues together to show that they're related.
Learn more.
Consistent, with exactly those numbers in the tests every time.
I don't see the same failures on macOS x86_64, but I do occasionally see odd time jumps after sleep on x86_64, see #26987 (moved). Maybe they are the same bug.
I'd be okay with or without OSX i386 CI.
Same here. Tor Browser doesn't distribute i386 builds on macOS, and Homebrew only supports 64-bit. (MacPorts still builds 32 bit tor, though.)
Okay, I think I have it. The problem was in our 32-bit monotime_coarse_diff_msec32_ implementation: it wasn't precise enough, and it didn't try hard enough to avoid integer overflows. One of our unit tests was assuming an amount of precision it just couldn't provide.
I tested this by editing the compat_time.h header so that the monotime_coarse_diff_msec32() inline function would always use the 32-bit implementation.
Looks good to me! I only tested using nickm's strategy of forcing the use of the 32-bit computation on 64-bit, and trust teor's evidence.
I'm a little nervous about some of the fixed-point hackery here, but given that it's increasingly unlikely that 32-bit macOS will continue to be relevant, I guess we can fix it later if it turns out to be a problem.
I'm a little nervous about some of the fixed-point hackery here, but given that it's increasingly unlikely that 32-bit macOS will continue to be relevant, I guess we can fix it later if it turns out to be a problem.