Uh oh!
There was an error while loading. Please reload this page.
Build against Y2038-compatible glibc for linux arm32 - #102410
Conversation
sbomer
commented
May 18, 2024
/azp run runtime-coreclr libraries-jitstress |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
And avoid passing values that can't be represented in 32 bits when running against openssl that expects 32-bit time_t.
sbomer
commented
May 22, 2024
/azp run runtime-coreclr libraries-jitstress |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Apparently this symbol did not exist in the builds of openssl in Ubuntu 16.04.
Except in opensslshim.c, which is only built for that feature.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
jkotas
commented
May 22, 2024
We may want to simplify runtime/src/native/libs/System.Security.Cryptography.Native/pal_x509.c Lines 1357 to 1364 in f02a695 time_t and instead add assert that will fail the build when time_t is not 64-bit. Something like this: jkotas@8657f6d |
- Revert unintentional change
Apparently the tizen-armel build doesn't use 64-bit time_t. |
sbomer
commented
May 22, 2024
/azp run runtime-coreclr libraries-jitstress |
|
Azure Pipelines successfully started running 1 pipeline(s). |
richlander
commented
May 22, 2024
Will you provided a detailed writeup on what we had to do? I think that will be super useful. |
This updates our linux arm32 build to build against a more recent glibc that supports _TIME_BITS (which we set to 64). Since openssl may be using either 32-bit or 64-bit time_t, this includes detection logic to determine which case we are in, and avoid passing time values that don't fit in 32 bits to openssl. The arm build image is updated to the latest version of the images added in dotnet/dotnet-buildtools-prereqs-docker#1037. The helix test images are updated to debian images added in dotnet/dotnet-buildtools-prereqs-docker#1041. Additional context: Additional context: Reintroduces the fix for Y2038 support on arm32 linux (dotnet#102059), which was reverted due to problems running against openssl built with _TIME_BITS=32. Fixesdotnet#101444 (both the originally reported issue, and the test failures mentioned in dotnet#101444 (comment)). Supports: dotnet#91826
sbomer
commented
May 29, 2024
A writeup is available at https://github.com/dotnet/runtime/blob/main/docs/design/features/y2038.md. |
This updates our linux arm32 build to build against a more recent glibc that supports _TIME_BITS (which we set to 64). Since openssl may be using either 32-bit or 64-bit time_t, this includes detection logic to determine which case we are in, and avoid passing time values that don't fit in 32 bits to openssl. The arm build image is updated to the latest version of the images added in dotnet/dotnet-buildtools-prereqs-docker#1037. The helix test images are updated to debian images added in dotnet/dotnet-buildtools-prereqs-docker#1041. Additional context: Additional context: Reintroduces the fix for Y2038 support on arm32 linux (dotnet#102059), which was reverted due to problems running against openssl built with _TIME_BITS=32. Fixesdotnet#101444 (both the originally reported issue, and the test failures mentioned in dotnet#101444 (comment)). Supports: dotnet#91826
Reintroduces the fix for Y2038 support on arm32 linux (#102059), which was reverted due to problems running against openssl built with _TIME_BITS=32. Thanks to @davidwrighton for help diagnosing the issue.
Fixes#101444 (both the originally reported issue, and the test failures mentioned in #101444 (comment)).
Supports: #91826