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

[SR-9101] Bug in NSCalendar/Calendar compare(_:,to:,toGranularity:) under Linux environment #3602

Closed
swift-ci opened this issue Oct 27, 2018 · 3 comments

Comments

@swift-ci
Copy link
Contributor

Previous ID SR-9101
Radar None
Original Reporter danielemm (JIRA User)
Type Bug
Status Resolved
Resolution Done
Environment

Official Swift 4.2 Docker Image on docker site.

Linux environment.

Additional Detail from JIRA
Votes 1
Component/s Foundation
Labels Bug
Assignee None
Priority Medium

md5: cc3af55a9216fcc3471fbea453fb69d3

Issue Description:

Hi,

I'm Daniele and I'm the author of SwiftDate on github; while I'm working porting the lib under Linux I had found a strange issue using compare with granularity function of Calendar instance.

The following code:

let d2 = Date.init(timeIntervalSince1970: 1529431200.0) // 2018-06-19 18:00:00 +0000
let d3 = Date.init(timeIntervalSince1970: 1529604000.0) // 2018-06-21 18:00:00 +0000
let res = Calendar.current.compare(d2, to: d3, toGranularity: .month)

res should be `.orderedSame (as on macOS/iOS/watchOS/tvOS) but tested on Swift 4.2 compiler under Linux (via docker image) it just return `.orderedAscending`.

@spevans
Copy link
Collaborator

spevans commented Nov 16, 2018

It seems that in the last few snapshot releases, this bug has become a bit more crashy:

$ ~/swift-DEVELOPMENT-SNAPSHOT-2018-11-01-a-ubuntu18.04/usr/bin/swift sr_9101.swift
orderedAscending


$ ~/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift sr_9101.swift
Stack dump:
0.  Program arguments: /home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift -frontend -interpret sr_9101.swift -disable-objc-interop -color-diagnostics -module-name sr_9101 
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0x4211104]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0x420ee8e]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0x42112c2]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x12890)[0x7fae10bf0890]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/lib/swift/linux/libFoundation.so(CFLocaleGetIdentifier+0x0)[0x7fae0616c320]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/lib/swift/linux/libFoundation.so(+0x7ced84)[0x7fae06156d84]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/lib/swift/linux/libFoundation.so(+0x7d10a0)[0x7fae061590a0]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/lib/swift/linux/libFoundation.so($s10Foundation10NSCalendarC10components_4fromAA14DateComponentsVAC4UnitV_AA0E0VtF+0x3a4)[0x7fae05e8fb14]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/lib/swift/linux/libFoundation.so($s10Foundation10NSCalendarC7compare_2to0D15UnitGranularityAA16ComparisonResultOAA4DateV_AjC0E0VtF+0x594)[0x7fae05e92304]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/lib/swift/linux/libFoundation.so(+0x2e332f)[0x7fae05c6b32f]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/lib/swift/linux/libFoundation.so(+0x2e3374)[0x7fae05c6b374]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/lib/swift/linux/libFoundation.so($s10Foundation14_MutableHandleC3mapyqd__qd__xKXEKlF+0x4a)[0x7fae05c4eb9a]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/lib/swift/linux/libFoundation.so($s10Foundation8CalendarV7compare_2to0D11GranularityAA16ComparisonResultOAA4DateV_AjC9ComponentOtF+0xa2)[0x7fae05c65192]
[0x7fae110170a5]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0xc673b9]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0xc6b470]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0x4eb300]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0x4c1b63]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0x4bd399]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0x46e2b0]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7fae0f036b97]
/home/spse/swift-DEVELOPMENT-SNAPSHOT-2018-11-15-a-ubuntu18.04/usr/bin/swift[0x46c6ca]
Segmentation fault (core dumped)

cc @millenomi this crash might be related to your recent Calendar changes in #1755

@ffried
Copy link
Contributor

ffried commented Apr 2, 2019

I've run into the same problem. The following code is enough to cause a crash:

Calendar.current.dateComponents([.year], from: Date())

@spevans
Copy link
Collaborator

spevans commented Apr 24, 2019

This has been fixed in master

$ cat sr-9101.swift 
import Foundation

let d2 = Date.init(timeIntervalSince1970: 1529431200.0) // 2018-06-19 18:00:00 +0000
let d3 = Date.init(timeIntervalSince1970: 1529604000.0) // 2018-06-21 18:00:00 +0000
let res = Calendar.current.compare(d2, to: d3, toGranularity: .month)
print(res)
print(res == .orderedSame)

$ ~/swift-DEVELOPMENT-SNAPSHOT-2019-04-16-a-ubuntu18.04/usr/bin/swift sr-9101.swift 
orderedSame
true
 

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
@shahmishal shahmishal transferred this issue from apple/swift May 5, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants