Skip to content
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

Panic on macOS 10.12 #841

Closed
fralonra opened this issue Oct 11, 2022 · 16 comments
Closed

Panic on macOS 10.12 #841

fralonra opened this issue Oct 11, 2022 · 16 comments
Labels

Comments

@fralonra
Copy link

Hi, all.

The following minimum code panicked and I don't know why:

// main.rs

use chrono::prelude::*;

fn main() {
    let dt = Local::now();
}

panic message:

thread 'main' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")'

from this line:

.expect("unable to select local time type")

env

  • rustc 1.62.1 (e092d0b6b 2022-07-16)
  • rustup 1.25.1 (bb60b1e89 2022-07-12)
  • chrono 0.4.22
  • macOS 10.12.1
@djc
Copy link
Contributor

djc commented Oct 11, 2022

So yes, I guess we might not "support" macOS 10.12 -- looks like that's been out of supported service for about 3 years at this point. If you can come up with a patch for it (and it doesn't add too much complexity) we'll consider fixing it. You can have a look at the file you referenced to get a feeling for what's going on.

@esheppa
Copy link
Collaborator

esheppa commented Oct 11, 2022

It would also be useful to understand what is in the /etc/localtime file - a debug output of the parsed zone file should be sufficient to figure out what is going on. @fralonra if you clone down the chrono source code you can use tz_info::TimeZone::from_file for this

@fralonra
Copy link
Author

Thanks for all!

I cloned the source code and found that the error was generated from:

"no local time type is available for the specified timestamp",

I've also tried time crate, and that crate worked as expected on the target machine.

@esheppa
Copy link
Collaborator

esheppa commented Nov 14, 2022

Thanks @fralonra - could you show the dbg! output of the self type at the start of that function (TimeZoneRef::find_local_time_type)

@test9753
Copy link

test9753 commented Dec 7, 2022

Encountered the same issue on macOS 10.12.6.

Ran cargo test with somedbg! statements (see output below).

$ git log HEAD
commit 74ca661535c68d804abfe0d77bfc68e2a54668b9 (grafted, HEAD -> main, origin/main, origin/HEAD)
Author: hotate29 <hotate_oc@yahoo.co.jp>
Date:   Thu Jun 16 23:30:49 2022 +0900

    Replace `winapi` with `windows-sys`

$ cargo test
   Compiling chrono v0.5.0-alpha.1 (/private/tmp/chrono)
    Finished test [unoptimized + debuginfo] target(s) in 3.76s
     Running unittests src/lib.rs (target/debug/deps/chrono-4f16daf6926001bf)

running 163 tests
test date::tests::test_date_sub_assign ... ok
test date::tests::test_date_add_assign ... ok
test datetime::test_add_sub_months ... ok
test date::tests::test_years_elapsed ... ok
test datetime::test_auto_conversion ... ok
test datetime::tests::test_datetime_add_assign ... ok
test datetime::tests::test_datetime_date_and_time ... ok
test datetime::tests::test_datetime_format_alignment ... ok
test date::tests::test_date_add_assign_local ... FAILED
test date::tests::test_date_sub_assign_local ... FAILED
test datetime::tests::test_datetime_from_local ... ok
test datetime::tests::test_datetime_is_copy ... ok
test datetime::tests::test_datetime_is_send ... ok
test datetime::tests::test_datetime_from_str ... ok
test datetime::tests::test_datetime_offset ... ok
test datetime::tests::test_datetime_add_assign_local ... FAILED
test datetime::tests::test_datetime_parse_from_str ... ok
test datetime::tests::test_datetime_sub_assign ... ok
test datetime::tests::test_datetime_format_with_local ... FAILED
test datetime::tests::test_datetime_rfc2822_and_rfc3339 ... ok
test datetime::tests::test_datetime_sub_assign_local ... FAILED
test datetime::tests::test_datetime_with_timezone ... FAILED
test datetime::tests::test_rfc3339_opts ... ok
test datetime::tests::test_subsecond_part ... ok
test datetime::tests::test_to_string_round_trip ... ok
test datetime::tests::test_years_elapsed ... ok
test datetime::tests::test_from_system_time ... FAILED
test format::parse::parse_rfc850 ... ok
test datetime::tests::test_rfc3339_opts_nonexhaustive - should panic ... ok
test datetime::tests::test_to_string_round_trip_with_local ... FAILED
test format::parsed::tests::test_parsed_set_fields ... ok
test format::parse::test_rfc3339 ... ok
test format::parsed::tests::test_parsed_to_datetime ... ok
test format::parsed::tests::test_parsed_to_datetime_with_timezone ... ok
test format::parse::test_rfc2822 ... ok
test format::parsed::tests::test_parsed_to_naive_datetime_with_offset ... ok
test format::parse::test_parse ... ok
test format::scan::test_rfc2822_comments ... ok
test format::parsed::tests::test_parsed_to_naive_time ... ok
test format::strftime::test_strftime_items ... ok
test month::tests::test_month_enum_succ_pred ... ok
test format::parsed::tests::test_parsed_to_naive_date ... ok
test month::tests::test_month_enum_try_from ... ok
test naive::date::test_date_bounds ... ok
test naive::date::tests::diff_months ... ok
test naive::date::tests::test_date_add ... ok
test format::strftime::test_strftime_docs ... ok
test naive::date::tests::test_date_addassignment ... ok
test naive::date::tests::test_date_add_days ... ok
test naive::date::tests::test_date_fields ... ok
test naive::date::tests::test_date_fmt ... ok
test naive::date::tests::test_date_from_isoywd ... ok
test naive::date::tests::test_date_format ... ok
test naive::date::tests::test_date_from_str ... ok
test naive::date::tests::test_date_from_weekday_of_month_opt ... ok
test naive::date::tests::test_date_from_ymd ... ok
test naive::date::tests::test_date_from_yo ... ok
test naive::date::tests::test_date_parse_from_str ... ok
test naive::date::tests::test_date_pred ... ok
test naive::date::tests::test_date_sub ... ok
test naive::date::tests::test_date_sub_days ... ok
test naive::date::tests::test_date_subassignment ... ok
test naive::date::tests::test_date_succ ... ok
test naive::date::tests::test_date_weekday ... ok
test naive::date::tests::test_date_with_fields ... ok
test naive::date::tests::test_date_from_num_days_from_ce ... ok
test naive::date::tests::test_day_iterator_limit ... ok
test naive::date::tests::test_naiveweek ... ok
test naive::date::tests::test_week_iterator_limit ... ok
test naive::datetime::tests::test_and_timezone ... ok
test naive::datetime::tests::test_datetime_add ... ok
test naive::datetime::tests::test_datetime_add_sub_invariant ... ok
test naive::datetime::tests::test_datetime_addassignment ... ok
test naive::datetime::tests::test_datetime_format ... ok
test naive::datetime::tests::test_datetime_from_str ... ok
test naive::datetime::tests::test_datetime_from_timestamp ... ok
test naive::datetime::tests::test_datetime_parse_from_str ... ok
test naive::datetime::tests::test_datetime_sub ... ok
test naive::datetime::tests::test_datetime_subassignment ... ok
test naive::datetime::tests::test_datetime_timestamp ... ok
test naive::datetime::tests::test_nanosecond_range ... ok
test naive::internals::tests::test_mdf_fields ... ok
test naive::date::tests::test_date_num_days_from_ce ... ok
test naive::internals::tests::test_mdf_to_of ... ok
test naive::internals::tests::test_mdf_to_of_to_mdf ... ok
test naive::internals::tests::test_mdf_with_fields ... ok
test naive::internals::tests::test_of ... ok
test naive::internals::tests::test_of_fields ... ok
test naive::internals::tests::test_of_isoweekdate_raw ... ok
test naive::internals::tests::test_mdf_valid ... ok
test naive::internals::tests::test_of_to_mdf ... ok
test naive::internals::tests::test_of_weekday ... ok
test naive::internals::tests::test_of_to_mdf_to_of ... ok
test naive::internals::tests::test_year_flags_ndays_from_year ... ok
test naive::internals::tests::test_year_flags_nisoweeks ... ok
test naive::isoweek::tests::test_iso_week_extremes ... ok
test naive::time::tests::test_date_from_str ... ok
test naive::time::tests::test_time_add ... ok
test naive::time::tests::test_time_addassignment ... ok
test naive::time::tests::test_time_fmt ... ok
test naive::internals::tests::test_of_with_fields ... ok
test naive::time::tests::test_time_from_hms_micro ... ok
test naive::time::tests::test_time_format ... ok
test naive::time::tests::test_time_from_hms_milli ... ok
test naive::time::tests::test_time_hms ... ok
test naive::time::tests::test_time_overflowing_add ... ok
test naive::time::tests::test_time_parse_from_str ... ok
test naive::time::tests::test_time_sub ... ok
test naive::time::tests::test_time_subassignment ... ok
test offset::fixed::tests::test_date_extreme_offset ... ok
test offset::local::tests::test_leap_second ... ok
test offset::local::tests::test_local_date_sanity_check ... ok
test offset::local::tests::verify_correct_offsets ... FAILED
test offset::local::tests::verify_correct_offsets_distant_future ... FAILED
test offset::local::tests::verify_correct_offsets_distant_past ... FAILED
test offset::local::tz_info::rule::tests::test_all_year_dst ... ok
test offset::local::tz_info::rule::tests::test_full ... ok
test offset::local::tz_info::rule::tests::test_negative_dst ... ok
test offset::local::tz_info::rule::tests::test_negative_hour ... ok
test offset::local::tz_info::rule::tests::test_quoted ... ok
test offset::local::tz_info::rule::tests::test_rule_day ... ok
test offset::local::tz_info::rule::tests::test_transition_rule ... ok
test offset::local::tz_info::rule::tests::test_transition_rule_overflow ... ok
test offset::local::tz_info::rule::tests::test_v3_file ... ok
test offset::local::tz_info::timezone::tests::test_error ... ok
test offset::local::tz_info::timezone::tests::test_leap_seconds ... ok
test offset::local::tz_info::timezone::tests::test_leap_seconds_overflow ... ok
test offset::local::tz_info::timezone::tests::test_no_dst ... ok
test offset::local::tz_info::timezone::tests::test_time_zone ... ok
test offset::local::tz_info::timezone::tests::test_tz_ascii_str ... ok
test offset::local::tz_info::timezone::tests::test_v1_file_with_leap_seconds ... ok
test offset::local::tz_info::timezone::tests::test_v2_file ... ok
test offset::tests::test_nanos_never_panics ... ok
test offset::local::tz_info::timezone::tests::test_time_zone_from_posix_tz ... ok
test offset::tests::test_negative_millis ... ok
test offset::tests::test_negative_nanos ... ok
test round::tests::test_duration_round_naive ... ok
test round::tests::test_duration_round ... ok
test round::tests::test_duration_round_pre_epoch ... ok
test round::tests::test_duration_trunc_naive ... ok
test round::tests::test_duration_trunc ... ok
test round::tests::test_duration_trunc_pre_epoch ... ok
test round::tests::test_round_leap_nanos ... ok
test round::tests::test_round_subsecs ... ok
test round::tests::test_trunc_leap_nanos ... ok
test round::tests::test_trunc_subsecs ... ok
test time_delta::tests::test_duration ... ok
test time_delta::tests::test_duration_abs ... ok
test time_delta::tests::test_duration_checked_ops ... ok
test time_delta::tests::test_duration_div ... ok
test time_delta::tests::test_duration_fmt ... ok
test time_delta::tests::test_duration_mul ... ok
test time_delta::tests::test_duration_num_days ... ok
test time_delta::tests::test_duration_num_microseconds ... ok
test time_delta::tests::test_duration_num_milliseconds ... ok
test time_delta::tests::test_duration_num_nanoseconds ... ok
test time_delta::tests::test_duration_num_seconds ... ok
test time_delta::tests::test_duration_sum ... ok
test time_delta::tests::test_from_std ... ok
test time_delta::tests::test_to_std ... ok
test naive::date::tests::test_date_from_isoywd_and_iso_week ... ok
test traits::tests::test_num_days_from_ce_against_alternative_impl ... ok
test naive::date::tests::test_readme_doomsday ... ok

failures:

---- date::tests::test_date_add_assign_local stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 946684800
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'date::tests::test_date_add_assign_local' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: <chrono::offset::local::Local as chrono::offset::TimeZone>::from_utc_datetime
             at ./src/offset/local/mod.rs:182:9
  10: <chrono::offset::local::Local as chrono::offset::TimeZone>::from_utc_date
             at ./src/offset/local/mod.rs:157:24
  11: chrono::date::tests::test_date_add_assign_local
             at ./src/date.rs:605:20
  12: chrono::date::tests::test_date_add_assign_local::{{closure}}
             at ./src/date.rs:602:5
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  14: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- date::tests::test_date_sub_assign_local stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 946684800
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'date::tests::test_date_sub_assign_local' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: <chrono::offset::local::Local as chrono::offset::TimeZone>::from_utc_datetime
             at ./src/offset/local/mod.rs:182:9
  10: <chrono::offset::local::Local as chrono::offset::TimeZone>::from_utc_date
             at ./src/offset/local/mod.rs:157:24
  11: chrono::date::tests::test_date_sub_assign_local
             at ./src/date.rs:639:20
  12: chrono::date::tests::test_date_sub_assign_local::{{closure}}
             at ./src/date.rs:636:5
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  14: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- datetime::tests::test_datetime_add_assign_local stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 1640995200
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'datetime::tests::test_datetime_add_assign_local' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: <chrono::offset::local::Local as chrono::offset::TimeZone>::from_utc_datetime
             at ./src/offset/local/mod.rs:182:9
  10: chrono::datetime::tests::test_datetime_add_assign_local
             at ./src/datetime/tests.rs:677:20
  11: chrono::datetime::tests::test_datetime_add_assign_local::{{closure}}
             at ./src/datetime/tests.rs:674:1
  12: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- datetime::tests::test_datetime_format_with_local stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 1670419865
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'datetime::tests::test_datetime_format_with_local' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: chrono::offset::local::inner::now
             at ./src/offset/local/unix.rs:19:5
  10: chrono::offset::local::Local::now
             at ./src/offset/local/mod.rs:74:9
  11: chrono::datetime::tests::test_datetime_format_with_local
             at ./src/datetime/tests.rs:390:14
  12: chrono::datetime::tests::test_datetime_format_with_local::{{closure}}
             at ./src/datetime/tests.rs:388:1
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  14: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- datetime::tests::test_datetime_sub_assign_local stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 1640995200
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'datetime::tests::test_datetime_sub_assign_local' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: <chrono::offset::local::Local as chrono::offset::TimeZone>::from_utc_datetime
             at ./src/offset/local/mod.rs:182:9
  10: chrono::datetime::tests::test_datetime_sub_assign_local
             at ./src/datetime/tests.rs:714:20
  11: chrono::datetime::tests::test_datetime_sub_assign_local::{{closure}}
             at ./src/datetime/tests.rs:711:1
  12: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- datetime::tests::test_datetime_with_timezone stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 1670419865
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'datetime::tests::test_datetime_with_timezone' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: chrono::offset::local::inner::now
             at ./src/offset/local/unix.rs:19:5
  10: chrono::offset::local::Local::now
             at ./src/offset/local/mod.rs:74:9
  11: chrono::datetime::tests::test_datetime_with_timezone
             at ./src/datetime/tests.rs:109:21
  12: chrono::datetime::tests::test_datetime_with_timezone::{{closure}}
             at ./src/datetime/tests.rs:108:1
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  14: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- datetime::tests::test_from_system_time stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 0
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'datetime::tests::test_from_system_time' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: <chrono::offset::local::Local as chrono::offset::TimeZone>::from_utc_datetime
             at ./src/offset/local/mod.rs:182:9
  10: chrono::datetime::DateTime<Tz>::with_timezone
             at ./src/datetime/mod.rs:305:9
  11: chrono::datetime::tests::test_from_system_time
             at ./src/datetime/tests.rs:491:37
  12: chrono::datetime::tests::test_from_system_time::{{closure}}
             at ./src/datetime/tests.rs:435:1
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  14: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- datetime::tests::test_to_string_round_trip_with_local stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 1670419865
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'datetime::tests::test_to_string_round_trip_with_local' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: chrono::offset::local::inner::now
             at ./src/offset/local/unix.rs:19:5
  10: chrono::offset::local::Local::now
             at ./src/offset/local/mod.rs:74:9
  11: chrono::datetime::tests::test_to_string_round_trip_with_local
             at ./src/datetime/tests.rs:382:15
  12: chrono::datetime::tests::test_to_string_round_trip_with_local::{{closure}}
             at ./src/datetime/tests.rs:381:1
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  14: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- offset::local::tests::verify_correct_offsets stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 1670419865
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'offset::local::tests::verify_correct_offsets' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: chrono::offset::local::inner::now
             at ./src/offset/local/unix.rs:19:5
  10: chrono::offset::local::Local::now
             at ./src/offset/local/mod.rs:74:9
  11: chrono::offset::local::tests::verify_correct_offsets
             at ./src/offset/local/mod.rs:194:19
  12: chrono::offset::local::tests::verify_correct_offsets::{{closure}}
             at ./src/offset/local/mod.rs:193:5
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  14: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- offset::local::tests::verify_correct_offsets_distant_future stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 1670419865
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'offset::local::tests::verify_correct_offsets_distant_future' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: chrono::offset::local::inner::now
             at ./src/offset/local/unix.rs:19:5
  10: chrono::offset::local::Local::now
             at ./src/offset/local/mod.rs:74:9
  11: chrono::offset::local::tests::verify_correct_offsets_distant_future
             at ./src/offset/local/mod.rs:221:30
  12: chrono::offset::local::tests::verify_correct_offsets_distant_future::{{closure}}
             at ./src/offset/local/mod.rs:220:5
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  14: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---- offset::local::tests::verify_correct_offsets_distant_past stdout ----
[src/offset/local/tz_info/timezone.rs:156] self = TimeZoneRef {
    transitions: [
        Transition {
            unix_leap_time: -891582800,
            local_time_type_index: 1,
        },
        Transition {
            unix_leap_time: -872058600,
            local_time_type_index: 2,
        },
        Transition {
            unix_leap_time: -862637400,
            local_time_type_index: 3,
        },
        Transition {
            unix_leap_time: -764145000,
            local_time_type_index: 2,
        },
    ],
    local_time_types: [
        LocalTimeType {
            ut_offset: 21200,
            is_dst: false,
            name: Some(
                "HMT",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: false,
            name: Some(
                "+0630",
            ),
        },
        LocalTimeType {
            ut_offset: 19800,
            is_dst: false,
            name: Some(
                "IST",
            ),
        },
        LocalTimeType {
            ut_offset: 23400,
            is_dst: true,
            name: Some(
                "+0630",
            ),
        },
    ],
    leap_seconds: [],
    extra_rule: None,
}
[src/offset/local/tz_info/timezone.rs:173] unix_leap_time = 1670419865
[src/offset/local/tz_info/timezone.rs:174] last_transition.unix_leap_time = -764145000
thread 'offset::local::tests::verify_correct_offsets_distant_past' panicked at 'unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp")', src/offset/local/unix.rs:153:18
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1814:5
   3: core::result::Result<T,E>::expect
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/result.rs:1064:23
   4: chrono::offset::local::inner::Cache::offset
             at ./src/offset/local/unix.rs:150:26
   5: chrono::offset::local::inner::naive_to_local::{{closure}}
             at ./src/offset/local/unix.rs:24:9
   6: std::thread::local::LocalKey<T>::try_with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
   7: std::thread::local::LocalKey<T>::with
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
   8: chrono::offset::local::inner::naive_to_local
             at ./src/offset/local/unix.rs:23:5
   9: chrono::offset::local::inner::now
             at ./src/offset/local/unix.rs:19:5
  10: chrono::offset::local::Local::now
             at ./src/offset/local/mod.rs:74:9
  11: chrono::offset::local::tests::verify_correct_offsets_distant_past
             at ./src/offset/local/mod.rs:208:28
  12: chrono::offset::local::tests::verify_correct_offsets_distant_past::{{closure}}
             at ./src/offset/local/mod.rs:206:5
  13: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
  14: core::ops::function::FnOnce::call_once
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.


failures:
    date::tests::test_date_add_assign_local
    date::tests::test_date_sub_assign_local
    datetime::tests::test_datetime_add_assign_local
    datetime::tests::test_datetime_format_with_local
    datetime::tests::test_datetime_sub_assign_local
    datetime::tests::test_datetime_with_timezone
    datetime::tests::test_from_system_time
    datetime::tests::test_to_string_round_trip_with_local
    offset::local::tests::verify_correct_offsets
    offset::local::tests::verify_correct_offsets_distant_future
    offset::local::tests::verify_correct_offsets_distant_past

test result: FAILED. 152 passed; 11 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.82s````

@djc
Copy link
Contributor

djc commented Dec 9, 2022

@test9753 would you be able to figure out a PR for this? I probably won't have time to look into it (and can't easily test), would be happy to answer questions you have and/or review your code.

@pitdicker pitdicker changed the title unable to select local time type: FindLocalTimeType("no local time type is available for the specified timestamp") Panic on macOS 10.12 Jul 2, 2023
@pitdicker pitdicker added the panic label Jul 2, 2023
@jfro
Copy link

jfro commented Jul 24, 2023

looks like we've run into this with our users as well. we recently updating some our dependencies and that included our use of flexi_logger switching from time to chrono. We still support macOS 10.11+ as long as apple doesn't blow that up for us.

After some digging I've gotten it to reproduce, as it seems to depend on what time zone the system is, apparently it doesn't like certain ones? I'm normally America/New_York which is fine, but America/Guayaquil will cause the panic.

Not sure if sharing the /etc/localtime would help? I can try to dig into it more to see if we can figure it out, as so far I don't know exactly why that timezone is giving chrono grief yet.

image

@pitdicker
Copy link
Collaborator

I was unable to get a virtual machine with macOS running. If you could provide one of the timezone files that is problematic (or all files) that would be a great help.

@jfro
Copy link

jfro commented Jul 24, 2023

here's the compressed timezone file that /etc/localtime is symlinked to when I can reproduce the panic. The simple example above is what i was using. 0.4.19 doesn't panic but 0.4.20+ does if that's helpful.

Guayaquil.zip

@pitdicker
Copy link
Collaborator

Thank you! 0.4.20 is when we started to parse the file in chrono instead of depending on libc.

@jfro
Copy link

jfro commented Jul 24, 2023

np! let me know if you need anything else, looks like we can't roll back to 0.4.19 easily anyway so a fix will be the best way forward.

@jfro
Copy link

jfro commented Jul 24, 2023

In case it's helpful, I poked around some with v0.4.26 tag source of chrono to compare modern macOS tz file vs the one from 10.11, looks like the extra_rule path is taken on newer macOS. The newer macOS tz file has extra_rule, a few more transitions & local_time_types too. If you need/want a newer macOS tz file for Guayaquil I can upload too.

Also wish I could remember what I had to do to get the macOS 10.11 VM created, do recall it was a huge pain in the ass being such an old macOS. It's in Parallels on an intel mac I have for testing these kind of things, getting them running on a PC is even more of a pain too.

@pitdicker
Copy link
Collaborator

@jfro Thank you, that file was very helpful. The missing extra_rule was indeed the problem.

Fixed in #1201.

@jfro
Copy link

jfro commented Jul 25, 2023

thanks a ton for fixing it! going to give the 0.4.x branch a spin with our app now as that should likely fix the issue a few users were seeing!

@pitdicker
Copy link
Collaborator

Let us know if it works 😄.

@jfro
Copy link

jfro commented Jul 26, 2023

oh it definitely does! thanks again! no more panic on the super old macOS systems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants