https://bugs.winehq.org/show_bug.cgi?id=51758
Bug ID: 51758 Summary: Wine's time zone information has gaps in "Dynamic DST" causing InvalidTimeZoneException Product: Wine Version: 6.17 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: madewokherd@gmail.com Distribution: ---
Hi, since commit 3e370f761a24878ae4047fd7803673d108bea430 wine-mono's test suite fails in MonoTests.System.TimeZoneInfoTest+IsDaylightSavingTimeTests:Bug_9664
commit 3e370f761a24878ae4047fd7803673d108bea430 Author: Giovanni Mascellani gmascellani@codeweavers.com Date: Mon Sep 6 17:36:27 2021 +0200
tzres: Regenerate TZ data from de facto standard sources.
The test failure:
1) Bug_9664 (MonoTests.System.TimeZoneInfoTest+IsDaylightSavingTimeTests.Bug_9664) System.InvalidTimeZoneException : The time zone ID 'Iran Standard Time' was found on the local computer, but the registry information was corrupt. at System.TimeZoneInfo.FindSystemTimeZoneById (System.String id) [0x0009c] in <2b59a54be42b4db59a5b1855eee0c040>:0 at MonoTests.System.TimeZoneInfoTest+IsDaylightSavingTimeTests.Bug_9664 () [0x00170] in <f77f913a6a434c5597e82a9098fa240c>:0 at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&) at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in <2b59a54be42b4db59a5b1855eee0c040>:0
The code Mono uses to read registry timezones looks for a Dynamic DST entry for every year between FirstEntry and LastEntry: https://github.com/mono/corefx/blob/main/src/Common/src/CoreLib/System/TimeZ...
If one of the entries doesn't exist, it raises that exception.
This was a problem with some timezones before that commit, it just happened to reveal the problem because it changed "Iran Standard Time" which is used in the Mono test suite.
To test this, download wine-mono-6.3.0-tests.zip and run $ wine run-tests.exe MonoTests.System.TimeZoneInfoTest+IsDaylightSavingTimeTests:Bug_9664
I'd like to create a new testcase that checks all timezones.