Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-69862

tst_QTimeZone::stressTest fails on macos

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 5.11.2
    • 5.12
    • Core: Date/Time
    • None
    • macos 10.13.4 (latest non-beta), xcode 9.4.1 (latest non-beta)
    • macOS
    • 8dd40e9b0931d2698ff2ee3a655aab8b4947dae8

    Description

      build: http://coin/coin/integration/qt/qt5/tasks/web_qt_qt5_1533800463809
      failing log: http://coin/coin/api/results/qt/qtbase/d9ea8e8637fd900cd35732cbc5d66744429c8b35/MacOSMacOS_10_13x86_64MacOSMacOS_10_13x86_64Clangqtci-macos-10.13-x86_64-feec42DeveloperBuild_Debug_NoFramework_AddressSanitizer/2a48a3b7dcb9652b1532a3ad14de7580b5b9b1ee/test_1533969514/log.txt.gz

      agent:2018/08/09 11:50:16 build.go:187: QFATAL : tst_QTimeZone::stressTest() ASSERT: "nextSecs <= endSecs - year || nextSecs == tranSecs" in file tools/qtimezoneprivate_mac.mm, line 250

      Note: this CI build is "experimental", because it has AddressSanitizer enabled. However, it is perfectly reproducible on my machine both with and without ASAN:

      (lldb) r
      Process 85321 launched: './tst_qtimezone' (x86_64)
      ********* Start testing of tst_QTimeZone *********
      Config: Using QtTest library 5.12.0, Qt 5.12.0 (x86_64-little_endian-lp64 shared (dynamic) debug build; by Clang 9.1.0 (clang-902.0.39.2) (Apple))
      2018-08-09 10:55:56.646416+0200 tst_qtimezone[85321:3981501] [qt.test.enter] tst_QTimeZone::initTestCase()
      2018-08-09 10:55:56.646782+0200 tst_qtimezone[85321:3981501] [qt.test.pass] tst_QTimeZone::initTestCase()
      2018-08-09 10:55:56.646855+0200 tst_qtimezone[85321:3981501] [qt.test.enter] tst_QTimeZone::stressTest()
      2018-08-09 10:55:56.654231+0200 tst_qtimezone[85321:3981501] ASSERT: "nextSecs <= endSecs - year || nextSecs == tranSecs" in file /Users/erik/dev/qt5-dev/qtbase/src/corelib/tools/qtimezoneprivate_mac.mm, line 250
      2018-08-09 10:55:56.654274+0200 tst_qtimezone[85321:3981501] [qt.test.fail] tst_QTimeZone::stressTest()
      Received a fatal error.
      Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted, 9ms
      ********* Finished testing of tst_QTimeZone *********
      Process 85321 stopped
      * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
          frame #0: 0x00007fff66d0bb66 libsystem_kernel.dylib`__pthread_kill + 10
      libsystem_kernel.dylib`__pthread_kill:
      ->  0x7fff66d0bb66 <+10>: jae    0x7fff66d0bb70            ; <+20>
          0x7fff66d0bb68 <+12>: movq   %rax, %rdi
          0x7fff66d0bb6b <+15>: jmp    0x7fff66d02ae9            ; cerror_nocancel
          0x7fff66d0bb70 <+20>: retq   
      Target 0: (tst_qtimezone) stopped.
      (lldb) frame select 6
      frame #6: 0x0000000100349ed3 libQt5Core_debug.5.dylib`QtNS::QMacTimeZonePrivate::previousTransition(this=0x0000000100f13b70, beforeMSecsSinceEpoch=-5351616000000) const at qtimezoneprivate_mac.mm:250
         247 	        if (nextDate != nil) {
         248 	            NSTimeInterval lateSecs = nextSecs;
         249 	            nextSecs = [nextDate timeIntervalSince1970];
      -> 250 	            Q_ASSERT(nextSecs <= endSecs - year || nextSecs == tranSecs);
         251 	            /*
         252 	              We're looking at the first ever transition for our zone, at
         253 	              nextSecs (and our zone *does* have at least one transition).  If
      (lldb) p nextSecs
      (NSTimeInterval) $0 = 41468400
      (lldb) p endSecs
      (QtNS::qint64) $1 = -5351616000
      (lldb) p year
      (const int) $2 = 31622400
      (lldb) p tranSecs
      (NSTimeInterval) $3 = -1855958961
      (lldb) po nextDate
      1971-04-25 23:00:00 +0000
      (lldb) po [NSDate dateWithTimeIntervalSince1970:lowerBound]
      1970-01-01 00:00:00 +0000
      (lldb) po [m_nstz nextDaylightSavingTimeTransitionAfterDate:[NSDate dateWithTimeIntervalSince1970:lowerBound]]
      1971-04-25 23:00:00 +0000
      (lldb) p lowerBound
      (NSTimeInterval) $8 = 2.2250738585072014E-308
      (lldb) p/x tranSecs
      (NSTimeInterval) $10 = 0xc1dba7ebec400000
      (lldb) p/x endSecs
      (QtNS::qint64) $11 = 0xfffffffec104d200
      

      Note: typedef double NSTimeInterval; (see https://developer.apple.com/documentation/foundation/nstimeinterval )

      Attachments

        For Gerrit Dashboard: QTBUG-69862
        # Subject Branch Project Status CR V

        Activity

          People

            Eddy Edward Welbourne
            erikv Erik Verbruggen
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes