Skip to content

[x64] objc_setAssociatedObject() object crashes #22

Open

Description

@dodikk

Steps :

  1. Select iPhone Retina (4-inch 64 bit) simulator
  2. Launch "testEnumerateKeysAndObjectsUsingBlock" test case

Actual result :

Crash

Expected result :

 Test passed

Activity

  1. dodikk commented on Dec 23, 2013

    @dodikk
    MemberAuthor

    Logs :

    Test Suite 'All tests' started at 2013-12-23 16:31:53 +0000
    Test Suite 'JFFUtilsTest.xctest' started at 2013-12-23 16:31:53 +0000
    Test Suite 'DateDifferenceStringFromDateTest' started at 2013-12-23 16:31:53 +0000
    Test Case '-[DateDifferenceStringFromDateTest testEqulatDateDifferenceDatesThrowsException]' started.
    2013-12-23 18:31:53.808 xctest[17834:303] *** Assertion failure in -[__NSTaggedDate dateDifferenceStringFromDate:], /Volumes/NO NAME/Mobile/Mobile SDK/lib-third-party/JFFLibrary/lib/JFFUtils/NSDate/NSDate+DateDifference.m:12
    Test Case '-[DateDifferenceStringFromDateTest testEqulatDateDifferenceDatesThrowsException]' passed (0.055 seconds).
    Test Case '-[DateDifferenceStringFromDateTest testInvalidFromDateThrowsException]' started.
    2013-12-23 18:31:53.813 xctest[17834:303] *** Assertion failure in -[__NSTaggedDate dateDifferenceStringFromDate:], /Volumes/NO NAME/Mobile/Mobile SDK/lib-third-party/JFFLibrary/lib/JFFUtils/NSDate/NSDate+DateDifference.m:12
    Test Case '-[DateDifferenceStringFromDateTest testInvalidFromDateThrowsException]' passed (0.002 seconds).
    Test Case '-[DateDifferenceStringFromDateTest testOneMinuteDifference]' started.
    Test Case '-[DateDifferenceStringFromDateTest testOneMinuteDifference]' passed (0.002 seconds).
    Test Case '-[DateDifferenceStringFromDateTest testOneSecondDifference]' started.
    Test Case '-[DateDifferenceStringFromDateTest testOneSecondDifference]' passed (0.001 seconds).
    Test Case '-[DateDifferenceStringFromDateTest testSeveralSecondDifference]' started.
    Test Case '-[DateDifferenceStringFromDateTest testSeveralSecondDifference]' passed (0.000 seconds).
    Test Suite 'DateDifferenceStringFromDateTest' finished at 2013-12-23 16:31:53 +0000.
    Executed 5 tests, with 0 failures (0 unexpected) in 0.059 (0.061) seconds
    Test Suite 'DelegateProxyTest' started at 2013-12-23 16:31:53 +0000
    Test Case '-[DelegateProxyTest testProxyDelegateAfterRemoveFromMemory]' started.
    Test Case '-[DelegateProxyTest testProxyDelegateAfterRemoveFromMemory]' passed (0.001 seconds).
    Test Case '-[DelegateProxyTest testProxyDelegateAfterRemoveFromObservers]' started.
    Test Case '-[DelegateProxyTest testProxyDelegateAfterRemoveFromObservers]' passed (0.000 seconds).
    Test Case '-[DelegateProxyTest testProxyDelegateMessageGot]' started.
    Test Case '-[DelegateProxyTest testProxyDelegateMessageGot]' passed (0.000 seconds).
    Test Case '-[DelegateProxyTest testSetProxyDelegate]' started.
    Test Case '-[DelegateProxyTest testSetProxyDelegate]' passed (0.000 seconds).
    Test Suite 'DelegateProxyTest' finished at 2013-12-23 16:31:53 +0000.
    Executed 4 tests, with 0 failures (0 unexpected) in 0.002 (0.002) seconds
    Test Suite 'EmptyStringTest' started at 2013-12-23 16:31:53 +0000
    Test Case '-[EmptyStringTest testEmptyStringIsEmpty]' started.
    Test Case '-[EmptyStringTest testEmptyStringIsEmpty]' passed (0.000 seconds).
    Test Case '-[EmptyStringTest testNilStringIsEmpty]' started.
    Test Case '-[EmptyStringTest testNilStringIsEmpty]' passed (0.000 seconds).
    Test Case '-[EmptyStringTest testStringWithCharactersIsNotEmpty]' started.
    Test Case '-[EmptyStringTest testStringWithCharactersIsNotEmpty]' passed (0.000 seconds).
    Test Suite 'EmptyStringTest' finished at 2013-12-23 16:31:53 +0000.
    Executed 3 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
    Test Suite 'JFFAssignProxyTest' started at 2013-12-23 16:31:53 +0000
    Test Case '-[JFFAssignProxyTest testAssignProxyDealloc]' started.
    Test Case '-[JFFAssignProxyTest testAssignProxyDealloc]' passed (0.000 seconds).
    Test Case '-[JFFAssignProxyTest testAssignProxyMethodCalls]' started.
    Test Case '-[JFFAssignProxyTest testAssignProxyMethodCalls]' passed (0.000 seconds).
    Test Suite 'JFFAssignProxyTest' finished at 2013-12-23 16:31:53 +0000.
    Executed 2 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
    Test Suite 'JFFMeaningClassTest' started at 2013-12-23 16:31:53 +0000
    Test Case '-[JFFMeaningClassTest testJFFMeaningClass]' started.
    Test Case '-[JFFMeaningClassTest testJFFMeaningClass]' passed (0.000 seconds).
    Test Suite 'JFFMeaningClassTest' finished at 2013-12-23 16:31:53 +0000.
    Executed 1 test, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
    Test Suite 'JFFMulticastDelegateTest' started at 2013-12-23 16:31:53 +0000
    Test Case '-[JFFMulticastDelegateTest testAddDelegateTwice]' started.
    Test Case '-[JFFMulticastDelegateTest testAddDelegateTwice]' passed (0.000 seconds).
    Test Case '-[JFFMulticastDelegateTest testMulticastDelegateFirstRelease]' started.
    Test Case '-[JFFMulticastDelegateTest testMulticastDelegateFirstRelease]' passed (0.000 seconds).
    Test Case '-[JFFMulticastDelegateTest testMutableAssignArrayAssignIssue]' started.
    Test Case '-[JFFMulticastDelegateTest testMutableAssignArrayAssignIssue]' passed (0.000 seconds).
    Test Suite 'JFFMulticastDelegateTest' finished at 2013-12-23 16:31:53 +0000.
    Executed 3 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
    Test Suite 'JFFMutableAssignArrayTest' started at 2013-12-23 16:31:53 +0000
    Test Case '-[JFFMutableAssignArrayTest testContainsObject]' started.
    Test Case '-[JFFMutableAssignArrayTest testContainsObject]' passed (0.000 seconds).
    Test Case '-[JFFMutableAssignArrayTest testLastObject]' started.
    Test Case '-[JFFMutableAssignArrayTest testLastObject]' passed (0.000 seconds).
    Test Case '-[JFFMutableAssignArrayTest testMutableAssignArrayAssignIssue]' started.
    Test Case '-[JFFMutableAssignArrayTest testMutableAssignArrayAssignIssue]' passed (0.000 seconds).
    Test Case '-[JFFMutableAssignArrayTest testMutableAssignArrayFirstRelease]' started.
    Test Case '-[JFFMutableAssignArrayTest testMutableAssignArrayFirstRelease]' passed (0.000 seconds).
    Test Suite 'JFFMutableAssignArrayTest' finished at 2013-12-23 16:31:53 +0000.
    Executed 4 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
    Test Suite 'JFFMutableAssignDictionaryTest' started at 2013-12-23 16:31:53 +0000
    Test Case '-[JFFMutableAssignDictionaryTest testEnumerateKeysAndObjectsUsingBlock]' started.
    (lldb) 
    
  2. dodikk commented on Dec 23, 2013

    @dodikk
    MemberAuthor

    Call stack :
    screen shot 2013-12-23 at 6 38 26 pm

  3. dodikk commented on Dec 23, 2013

    @dodikk
    MemberAuthor

    Using NSString instead of NSNumber works

    As is

        dict[@"1"] = @1;
        dict[@"2"] = @2;
        dict[@"3"] = @3;
    // This crashes

    To be

        NSDictionary *patternDict = @{
        @"1" : @"111",
        @"2" : @"222",
        @"3" : @"333",
        }; // this works
  4. dodikk commented on Dec 23, 2013

    @dodikk
    MemberAuthor

    The same architecture set must be used both for the library and the test target
    screen shot 2013-12-23 at 7 24 04 pm

  5. dodikk commented on Dec 23, 2013

    @dodikk
    MemberAuthor

    Still reproduces.
    Does not help.

  6. dodikk commented on Dec 23, 2013

    @dodikk
    MemberAuthor

    Probably, tagged pointers may be the cause

  7. dodikk commented on Dec 24, 2013

    @dodikk
    MemberAuthor

    Confirmed : tagged pointers are the cause.
    See the demo project : https://github.com/dodikk/NSNumberAssociatedObjectDemo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions