unordered_set EXC_BAD_ACCESS in constrain_hash

unordered_set EXC_BAD_ACCESS in constrain_hash

本文关键字:in constrain hash ACCESS BAD set EXC unordered      更新时间:2023-10-16

编辑:这现已修复。在苹果论坛上注意到其他人在使用 Xcode 8.3 时遇到了问题。我从Xcode 8.3/8.3.1版本恢复到Xcode 8.2,崩溃已停止。

我有一个unordered_set导致 stl 中的constrain_hash函数EXC_BAD_ACCESS

我已经重新创建了使用以下unordered_set的代码。

我似乎无法弄清楚是什么原因造成的。我的代码在Visual Studio中构建和运行,但在xcode中会导致运行时崩溃。如果我使用unordered_set注释掉代码,我的应用程序将运行良好。

我能想到的就是它以某种方式覆盖了内存。我最近也更新到 Xcode 到 8.3.1。下面的代码也在线程中运行。

enum EPRIMARY_STATE
{
    e1_PRIMARY_STATE,e2_PRIMARY_STATE,e3_PRIMARY_STATE,e4_PRIMARY_STATE,e5_PRIMARY_STATE,e6_PRIMARY_STATE,e7_PRIMARY_STATE,e8_PRIMARY_STATE,eMAX_PRIMARY_STATE
};
enum EMAIN_STATE
{
    eFIRST_STATE,eSECOND_STATE,eTHIRD_STATE,eFOUR_STATE,eFIVE_STATE,eSIX_STATE,eSEVEN_STATE,eEIGHT_STATE,eNINE_STATE,eTEN_STATE,e11_STATE,
    e12_STATE,e13_STATE,e14_STATE,e15_STATE,e16_STATE,e17_STATE,e18_STATE,e19_STATE,e20_STATE,
    e21_STATE,e22_STATE,e23_STATE,e24_STATE,e25_STATE,e26_STATE,e27_STATE,e28_STATE,e29_STATE,
    e30_STATE,e31_STATE,e32_STATE,e33_STATE,e34_STATE,e35_STATE,e36_STATE,e37_STATE,e38_STATE,
    e39_STATE,e40_STATE,e41_STATE,e42_STATE,e43_STATE,e44_STATE,e45_STATE,e46_STATE,e47_STATE,
    eMAX_STATE,
    eINVALID_STATE
};
enum EBackUpID
{
    e1_BackUpID,e2_BackUpID,e3_BackUpID,e4_BackUpID,e5_BackUpID,
    e6_BackUpID,e7_BackUpID,e8_BackUpID,e9_BackUpID,e10_BackUpID,
    e11_BackUpID,e12_BackUpID,e13_BackUpID,e14_BackUpID,e15_BackUpID,e16_BackUpID,
    e17_BackUpID,e18_BackUpID,e19_BackUpID,e20_BackUpID,e21_BackUpID,e22_BackUpID,
    e23_BackUpID,e24_BackUpID,e25_BackUpID,e26_BackUpID,e27_BackUpID,e28_BackUpID,
    e29_BackUpID,e30_BackUpID,e31_BackUpID,e32_BackUpID,e33_BackUpID,e34_BackUpID,
    e35_BackUpID,e36_BackUpID,e37_BackUpID,e38_BackUpID,e39_BackUpID,e40_BackUpID,
    e41_BackUpID,e42_BackUpID,e43_BackUpID,
    e44_BackUpID,e45_BackUpID,e46_BackUpID,e47_BackUpID,e48_BackUpID,e49_BackUpID,
    e50_BackUpID,e51_BackUpID,e52_BackUpID,e53_BackUpID,e54_BackUpID,e55_BackUpID,
    e56_BackUpID,e57_BackUpID,e58_BackUpID,e59_BackUpID,e60_BackUpID,e61_BackUpID,
    e62_BackUpID,e63_BackUpID,e64_BackUpID,e65_BackUpID,e66_BackUpID,e67_BackUpID,
    e68_BackUpID,e69_BackUpID,e70_BackUpID,e71_BackUpID,e72_BackUpID,e73_BackUpID,
    e74_BackUpID,e75_BackUpID,e76_BackUpID,e77_BackUpID,e78_BackUpID,e79_BackUpID,
    e80_BackUpID,e81_BackUpID,e82_BackUpID,e83_BackUpID,e84_BackUpID,e85_BackUpID,
    e86_BackUpID,e87_BackUpID,e88_BackUpID,e89_BackUpID,e90_BackUpID,e91_BackUpID,
    e92_BackUpID,e93_BackUpID,e94_BackUpID,e95_BackUpID,e96_BackUpID,e97_BackUpID
};
class CSet
{
public:
    //  this is used to create the object that will be used
    CSet(): m_ePrimS(e1_PRIMARY_STATE), m_eMainState(eFIRST_STATE), m_eBackUpID(e1_BackUpID) {}
    CSet( const EPRIMARY_STATE ePrimS, const EMAIN_STATE eMainState, const EBackUpID eBackUpID ): m_ePrimS(ePrimS), m_eMainState(eMainState), m_eBackUpID(eBackUpID) {}
    bool operator==( const CSet& a ) const { return( (a.m_ePrimS == m_ePrimS) && (a.m_eMainState == m_eMainState) ); }
    EPRIMARY_STATE m_ePrimS;
    EMAIN_STATE m_eMainState;
    EBackUpID m_eBackUpID;
};
class CSetHash
{
public:
    std::size_t operator() ( const CSet& a ) const { return( (33 * (a.m_ePrimS+1)) ^ (a.m_eMainState + 1) ); }
};
typedef std::unordered_set< CSet, CSetHash > TAnimHashTable;
class CTest
{
    TAnimHashTable m_aSetHash;
public:
    void Do() {
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eFIRST_STATE, e4_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eFIRST_STATE, e5_BackUpID ) ); m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eFIRST_STATE, e6_BackUpID ) );
        m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eFIRST_STATE, e7_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eFIRST_STATE, e8_BackUpID ) );m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eFIRST_STATE, e9_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eFIRST_STATE, e11_BackUpID ) );m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eFIRST_STATE, e10_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eSECOND_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eSECOND_STATE, e13_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eSECOND_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eSECOND_STATE, e15_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eSECOND_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eSECOND_STATE, e17_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eSECOND_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eSECOND_STATE, e18_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e31_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e31_STATE, e13_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e31_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e31_STATE, e15_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e31_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e31_STATE, e17_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e31_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e31_STATE, e18_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e32_STATE, e12_BackUpID ) );m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e32_STATE, e13_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e32_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e32_STATE, e15_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e32_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e32_STATE, e17_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e32_STATE, e19_BackUpID ) );m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e32_STATE, e18_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eTHIRD_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eTHIRD_STATE, e13_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eTHIRD_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eTHIRD_STATE, e15_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eTHIRD_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eTHIRD_STATE, e17_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eTHIRD_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eTHIRD_STATE, e18_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e28_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e28_STATE, e13_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e28_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e28_STATE, e15_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e28_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e28_STATE, e17_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e28_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e28_STATE, e18_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e29_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e29_STATE, e13_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e29_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e29_STATE, e15_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e29_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e29_STATE, e17_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e29_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e29_STATE, e18_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eSEVEN_STATE, e52_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eSEVEN_STATE, e48_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eSEVEN_STATE, e50_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eSEVEN_STATE, e51_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eSEVEN_STATE, e49_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eSEVEN_STATE, e54_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eSEVEN_STATE, e53_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eSEVEN_STATE, e55_BackUpID ) );
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, eFOUR_STATE, e94_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, eFOUR_STATE, e90_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, eFOUR_STATE, e92_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, eFOUR_STATE, e93_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, eFOUR_STATE, e91_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, eFOUR_STATE, e96_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, eFOUR_STATE, e95_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, eFOUR_STATE, e97_BackUpID));
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eFIVE_STATE, e94_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eFIVE_STATE, e90_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eFIVE_STATE, e92_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eFIVE_STATE, e93_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eFIVE_STATE, e91_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eFIVE_STATE, e96_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eFIVE_STATE, e95_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eFIVE_STATE, e97_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eSIX_STATE, e24_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eSIX_STATE, e20_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eSIX_STATE, e22_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eSIX_STATE, e23_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eSIX_STATE, e21_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eSIX_STATE, e26_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eSIX_STATE, e25_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eSIX_STATE, e27_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e12_STATE, e57_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e12_STATE, e56_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e13_STATE, e59_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e13_STATE, e58_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e14_STATE, e78_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e14_STATE, e77_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e15_STATE, e80_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e15_STATE, e79_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e16_STATE, e82_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e16_STATE, e81_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e17_STATE, e84_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e17_STATE, e83_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e18_STATE, e86_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e18_STATE, e85_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e19_STATE, e88_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e19_STATE, e87_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e20_STATE, e62_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e20_STATE, e62_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e21_STATE, e65_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e21_STATE, e65_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eTEN_STATE, e62_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eTEN_STATE, e62_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e11_STATE, e65_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e11_STATE, e65_BackUpID ) );
        m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e22_STATE, e61_BackUpID ) ); m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e23_STATE, e64_BackUpID ) );
        m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e24_STATE, e60_BackUpID ) ); m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e25_STATE, e63_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eEIGHT_STATE, e44_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eEIGHT_STATE, e40_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eEIGHT_STATE, e42_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eEIGHT_STATE, e43_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eEIGHT_STATE, e41_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eEIGHT_STATE, e46_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eEIGHT_STATE, e45_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eEIGHT_STATE, e47_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, eNINE_STATE, e44_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, eNINE_STATE, e40_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, eNINE_STATE, e42_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, eNINE_STATE, e43_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, eNINE_STATE, e41_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, eNINE_STATE, e46_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, eNINE_STATE, e45_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, eNINE_STATE, e47_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e26_STATE, e34_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e27_STATE, e37_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e30_STATE, e6_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e30_STATE, e9_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e33_STATE, e4_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e33_STATE, e5_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e33_STATE, e6_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e33_STATE, e7_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e33_STATE, e8_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e33_STATE, e9_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e33_STATE, e11_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e33_STATE, e10_BackUpID ) );
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e34_STATE, e4_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e34_STATE, e5_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e34_STATE, e6_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e34_STATE, e7_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e34_STATE, e8_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e34_STATE, e9_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e34_STATE, e11_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e34_STATE, e10_BackUpID));
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e35_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e35_STATE, e13_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e35_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e35_STATE, e15_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e35_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e35_STATE, e17_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e35_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e35_STATE, e18_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e36_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e36_STATE, e13_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e36_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e36_STATE, e15_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e36_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e36_STATE, e17_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e36_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e36_STATE, e18_BackUpID ) );
        m_aSetHash.insert( CSet( e1_PRIMARY_STATE, e37_STATE, e12_BackUpID ) ); m_aSetHash.insert( CSet( e2_PRIMARY_STATE, e37_STATE, e13_BackUpID ) );
        m_aSetHash.insert( CSet( e3_PRIMARY_STATE, e37_STATE, e14_BackUpID ) ); m_aSetHash.insert( CSet( e4_PRIMARY_STATE, e37_STATE, e15_BackUpID ) );
        m_aSetHash.insert( CSet( e5_PRIMARY_STATE, e37_STATE, e16_BackUpID ) ); m_aSetHash.insert( CSet( e6_PRIMARY_STATE, e37_STATE, e17_BackUpID ) );
        m_aSetHash.insert( CSet( e7_PRIMARY_STATE, e37_STATE, e19_BackUpID ) ); m_aSetHash.insert( CSet( e8_PRIMARY_STATE, e37_STATE, e18_BackUpID ) );
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e41_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e41_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e41_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e41_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e41_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e41_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e41_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e41_STATE, e18_BackUpID));
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e42_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e42_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e42_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e42_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e42_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e42_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e42_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e42_STATE, e18_BackUpID));
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e43_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e43_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e43_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e43_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e43_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e43_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e43_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e43_STATE, e18_BackUpID));
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e46_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e46_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e46_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e46_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e46_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e46_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e46_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e46_STATE, e18_BackUpID));
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e45_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e45_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e45_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e45_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e45_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e45_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e45_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e45_STATE, e18_BackUpID));
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e44_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e44_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e44_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e44_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e44_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e44_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e44_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e44_STATE, e18_BackUpID));
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e39_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e39_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e39_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e39_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e39_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e39_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e39_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e39_STATE, e18_BackUpID));
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e40_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e40_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e40_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e40_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e40_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e40_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e40_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e40_STATE, e18_BackUpID));
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e47_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e47_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e47_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e47_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e47_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e47_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e47_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e47_STATE, e18_BackUpID));
        m_aSetHash.insert(CSet(e1_PRIMARY_STATE, e38_STATE, e12_BackUpID)); m_aSetHash.insert(CSet(e2_PRIMARY_STATE, e38_STATE, e13_BackUpID));
        m_aSetHash.insert(CSet(e3_PRIMARY_STATE, e38_STATE, e14_BackUpID)); m_aSetHash.insert(CSet(e4_PRIMARY_STATE, e38_STATE, e15_BackUpID));
        m_aSetHash.insert(CSet(e5_PRIMARY_STATE, e38_STATE, e16_BackUpID)); m_aSetHash.insert(CSet(e6_PRIMARY_STATE, e38_STATE, e17_BackUpID));
        m_aSetHash.insert(CSet(e7_PRIMARY_STATE, e38_STATE, e19_BackUpID)); m_aSetHash.insert(CSet(e8_PRIMARY_STATE, e38_STATE, e18_BackUpID));
    }
};

int main(int argc, const char * argv[]) {
    CTest test1; test1.Do();
    CTest test2; test2.Do();
    CTest test3; test3.Do();
    CTest test4; test4.Do();
    CTest test5; test5.Do();
    CTest test6; test6.Do();
    CTest test7; test7.Do();
    CTest test8; test8.Do();
    CTest test9; test9.Do();
    CTest test10; test10.Do();
    CTest test11; test11.Do();
    CTest test12; test12.Do();
    CTest test13; test13.Do();
    CTest test14; test14.Do();
    CTest test15; test15.Do();
    CTest test16; test16.Do();
    CTest ptest1; ptest1.Do();
    CTest ptest2; ptest2.Do();
    CTest ptest3; ptest3.Do();
    CTest ptest4; ptest4.Do();
    CTest ptest5; ptest5.Do();
    CTest ptest6; ptest6.Do();
    CTest ptest7; ptest7.Do();
    CTest ptest8; ptest8.Do();
    CTest ptest9; ptest9.Do();
    CTest ptest10; ptest10.Do();
    CTest ptest11; ptest11.Do();
    CTest ptest12; ptest12.Do();
    CTest ptest13; ptest13.Do();
    CTest ptest14; ptest14.Do();
    CTest ptest15; ptest15.Do();
    CTest ptest16; ptest16.Do();
    return 0;
}

这现已修复。在苹果论坛上注意到其他人在使用 Xcode 8.3 时遇到了问题。特别是线程。我从Xcode 8.3/8.3.1版本恢复到Xcode 8.2,崩溃已停止。