2016-07-14 5 views
2

테스트 중 하나에서 발생하는 크래시를 디버깅하고 있습니다. C++로 작성된 ODBC 드라이버 .so는 C++로 작성된 테스트 도구 ('Touchstone')를 사용하여 iODBC를 통해 테스트됩니다.잘못된 예외가 취소되어 충돌이 발생 했습니까?

필자는 Oracle Solaris Studio 12.4 (NOT GCC)를 사용하여 Solaris 10 (x86)에서 64 비트 모드로 세 가지 모두를 컴파일했습니다. 시금석이 릴리스 모드로 빌드 될 때

충돌이 발생합니다, 그래서 나는 DBX에서 조립 단계별 시간의 공정한 비트를 보냈어요, 어떤 일이 보인다하면 다음과 같다 :

  1. '은행 '문'개체의 포인터가 r14에 저장됩니다.
  2. 드라이버에서 SQLColAttributeW를 호출하는 드라이버 관리자 (DM)에서 SQLColAttributes를 호출합니다.
  3. DM으로 돌아 오기 전에 r14가 SQLColAttributeW의 호출 수신자 중 하나의 스택에 누적됩니다.
  4. 스택을 내려 가면 예외가 발생합니다 (드라이버를 떠나 DM으로 돌아 가기 전에 결국 잡히게됩니다). 스택 언 와인딩 중에 '엉망이 된'것처럼 보이므로 결국 마침내 터치 스톤으로 돌아갑니다. r14 쓰레기. Touchstone은 명령문 개체에서 멤버를 검색하려고 시도하고 SEGV로 매우 빠르게 충돌합니다.

제가 # 3에 도착했을 때 가장 먼저했던 일 중 하나는 레지스터가 쏟아져 나오는 스택에 하드웨어 쓰기 워치를 넣는 것이 었습니다.하지만 터치 스톤으로 돌아간 후까지 치지는 않습니다. 레지스터가 이미 손상된 후에

그런 다음 손상을 일으키는 코드가 예외를 throw하고있는 것으로 나타났습니다. 솔라리스 스튜디오에서 빌드 된 Touchstone을 사용할 때 gcc로 작성된 드라이버를 사용하므로 이전에 발생한 this을 기억합니다. 그래서 iODBC를 다음과 같이 다시 컴파일했습니다. solaris 스튜디오, 그리고 ldd 실행은 더 이상 의존성을 보이지 않지만 여전히 같은 방식으로 충돌합니다.

나는 또한 해당 문서 (LD_PRELOAD=/usr/sfw/lib/amd64/libgcc_s.so)에서 제안 된 해결 방법을 시도했지만 그 중 하나도 변경되지 않았습니다.

는 또한 Valgrind의를 컴파일 할 수 있었고, 내 가설을 지원하기 위해 보인다 _Uwn_jmp 검색

-bash-4.1$ $VG --tool=memcheck $TC -te ApiTestEnv_utf32.xml -ts ApiTestSuite.xml -o crash -rts COLATTRIBUTETESTS 
==900== Memcheck, a memory error detector 
==900== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. 
==900== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info 
==900== Command: /export/home/bamboo/Touchstone -te ApiTestEnv_utf32.xml -ts ApiTestSuite.xml -o crash -rts COLATTRIBUTETESTS 
==900== 
Simba Test Verbose Log Started on Thu Jul 14 11:35:25 2016 

Touchstone test utility for ODBC and OLE DB for OLAP 
Version: 4.5.0.5 (64-bit) 
Copyright (c) 2012 Simba Technologies Incorporated 

Starting test run 
--------------------------- 
     API Tests: COLATTRIBUTETESTS: SQLCOLATTRIBUTES_ERROR (1)==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7F94FF6D2: __1cFSimbaHSupportbAIniFileConfigurationReaderLOpenIniFile6Mrkn0BNsimba_wstring_5_pn0BITextFile__ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F94FEBC3: __1cFSimbaHSupportbAIniFileConfigurationReaderRLoadConfiguration6MrnDstdDmap4n0BNsimba_wstring_n0DDmap4n0E_n0BHVariant_n0EZCaseInsensitiveComparator_n0DJallocator4n0DEpair4Ck4n0F_______n0G_n0DJallocator4n0DEpai 
r4C5n0J_______r58p5_b_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F94FEA51: __1cFSimbaHSupportbAIniFileConfigurationReaderRLoadConfiguration6MrnDstdDmap4n0BNsimba_wstring_n0BHVariant_n0EZCaseInsensitiveComparator_n0DJallocator4n0DEpair4Ck4n0F_______r58p5b_b_ (in /export/home/bamboo/sol 
-crash/libInternalTest_debug.so) 
==900== by 0x7F950CD97: __1cFSimbaHSupportSSimbaSettingReaderUInternal_ReadSetting6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____4_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F950C2C6: __1cFSimbaHSupportSSimbaSettingReaderLReadSetting6FrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____4_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F950A2DC: __1cFSimbaHSupportSSimbaSettingReaderSGetAppCharEncoding6F_n0BMEncodingType__ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F8D8E29C: __1cFSimbaDDSIJDSIDriverYSetDefaultPropertyValues6M_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F8D8D787: __1cFSimbaDDSIJDSIDriver2t6M_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F7B57748: __1cFSimbaMInternalTestIITDriver2t6M_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F86D7330: __1cFSimbaDDSIQDSIDriverFactory6FrL_pn0BHIDriver__ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F8E17FEB: __1cFSimbaDDSIWSharedSingletonManagerKInitialize6Fb_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== Address 0x37fe5ba8 is on thread 1's stack 
==900== 664 bytes below stack pointer 
==900== 
==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7F94FEBC3: __1cFSimbaHSupportbAIniFileConfigurationReaderRLoadConfiguration6MrnDstdDmap4n0BNsimba_wstring_n0DDmap4n0E_n0BHVariant_n0EZCaseInsensitiveComparator_n0DJallocator4n0DEpair4Ck4n0F_______n0G_n0DJallocator4n0DEpai 
r4C5n0J_______r58p5_b_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F94FEA51: __1cFSimbaHSupportbAIniFileConfigurationReaderRLoadConfiguration6MrnDstdDmap4n0BNsimba_wstring_n0BHVariant_n0EZCaseInsensitiveComparator_n0DJallocator4n0DEpair4Ck4n0F_______r58p5b_b_ (in /export/home/bamboo/sol 
-crash/libInternalTest_debug.so) 
==900== by 0x7F950CD97: __1cFSimbaHSupportSSimbaSettingReaderUInternal_ReadSetting6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____4_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F950C2C6: __1cFSimbaHSupportSSimbaSettingReaderLReadSetting6FrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____4_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F950A2DC: __1cFSimbaHSupportSSimbaSettingReaderSGetAppCharEncoding6F_n0BMEncodingType__ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F8D8E29C: __1cFSimbaDDSIJDSIDriverYSetDefaultPropertyValues6M_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F8D8D787: __1cFSimbaDDSIJDSIDriver2t6M_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F7B57748: __1cFSimbaMInternalTestIITDriver2t6M_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F86D7330: __1cFSimbaDDSIQDSIDriverFactory6FrL_pn0BHIDriver__ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F8E17FEB: __1cFSimbaDDSIWSharedSingletonManagerKInitialize6Fb_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FA0644BD: __1cFSimbaEODBCGDriverUInitializeSingletons6M_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== Address 0x37fe5bd8 is on thread 1's stack 
==900== 856 bytes below stack pointer 
==900== 
==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7F7B58945: __1cFSimbaMInternalTestIITDriverbAInitializeUnicodeStringMap6M_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F7B57C96: __1cFSimbaMInternalTestIITDriverRCreateEnvironment6M_pn0ADDSIMIEnvironment__ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FA06087D: __1cFSimbaEODBCGDriverRCreateEnvironment6Mppv_h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9EB138F: SQLAllocHandle (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FE21BE90: _iodbcdm_driverload (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE21FDB0: SQLDriverConnect_Internal (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE220DE3: SQLDriverConnectW (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0xA69132: __1cFSimbaIODBCTestDCliRSqlDriverConnectW6Mpv3pwh4hphH_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAD9CDB: __1cFSimbaIODBCTestKConnectionRSqlDriverConnectW6MpvpkwhpwhphHrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xABC586: __1cFSimbaIODBCTestRConnectionFactorySMakeConnectionInC46Fpn0BLEnvironment_rkn0BHODBCStr__pn0BKConnection__ (in /export/home/bamboo/Touchstone) 
==900== by 0xAD2F39: __1cFSimbaIODBCTestSOdbcTestCaseBaseS1MexecuteSetup6M_b_ (in /export/home/bamboo/Touchstone) 
==900== Address 0x37fe6798 is on thread 1's stack 
==900== 664 bytes below stack pointer 
==900== 
==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7F7B57C96: __1cFSimbaMInternalTestIITDriverRCreateEnvironment6M_pn0ADDSIMIEnvironment__ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FA06087D: __1cFSimbaEODBCGDriverRCreateEnvironment6Mppv_h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9EB138F: SQLAllocHandle (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FE21BE90: _iodbcdm_driverload (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE21FDB0: SQLDriverConnect_Internal (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE220DE3: SQLDriverConnectW (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0xA69132: __1cFSimbaIODBCTestDCliRSqlDriverConnectW6Mpv3pwh4hphH_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAD9CDB: __1cFSimbaIODBCTestKConnectionRSqlDriverConnectW6MpvpkwhpwhphHrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xABC586: __1cFSimbaIODBCTestRConnectionFactorySMakeConnectionInC46Fpn0BLEnvironment_rkn0BHODBCStr__pn0BKConnection__ (in /export/home/bamboo/Touchstone) 
==900== by 0xAD2F39: __1cFSimbaIODBCTestSOdbcTestCaseBaseS1MexecuteSetup6M_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD228AB: __1c9uX__unnamed_Aj63VIoYhXFiiQColAttributeBaseMexecuteSetup6M_b_ (in /export/home/bamboo/Touchstone) 
==900== Address 0x37fe67c8 is on thread 1's stack 
==900== 856 bytes below stack pointer 
==900== 
==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7FA039B3D: __1cFSimbaEODBCKDescriptorOGetHeaderField6kMhpvpi_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FA11C104: __1cFSimbaEODBCOStatementStateQSQdDLNumResultCols6Mph_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FA10903D: __1cFSimbaEODBCJStatementQSQdDLNumResultCols6Mph_h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9F52DE0: __1cGDoTask4nFSimbaEODBCUSQdDLNumResultColsTask__6Fpkcpvrn7TAOTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9ED63DB: SQLNumResultCols (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FE23C4E1: _iodbcdm_NumResultCols (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE223169: _iodbcdm_do_cursoropen (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE224295: SQLExecDirect_Internal (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE224537: SQLExecDirect (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0xA69B5D: __1cFSimbaIODBCTestDCliNSqlExecDirect6MpvpCi_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE39BA: __1cFSimbaIODBCTestJStatementNSqlExecDirect6MpkCirkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== Address 0x37fee258 is on thread 1's stack 
==900== 664 bytes below stack pointer 
==900== 
==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7FA10903D: __1cFSimbaEODBCJStatementQSQdDLNumResultCols6Mph_h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9F52DE0: __1cGDoTask4nFSimbaEODBCUSQdDLNumResultColsTask__6Fpkcpvrn7TAOTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9ED63DB: SQLNumResultCols (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FE23C4E1: _iodbcdm_NumResultCols (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE223169: _iodbcdm_do_cursoropen (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE224295: SQLExecDirect_Internal (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE224537: SQLExecDirect (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0xA69B5D: __1cFSimbaIODBCTestDCliNSqlExecDirect6MpvpCi_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE39BA: __1cFSimbaIODBCTestJStatementNSqlExecDirect6MpkCirkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD205EA: __1c9uX__unnamed_Aj63VIoYhXFiiWSQdDLCOLATTRIBUTES_ERRORLexecuteTest6M_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12F954D: __1cFSimbaETestECaseHrunTest6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____n0CLTEST_STATUS__ (in /export/home/bamboo/Touchstone) 
==900== Address 0x37fee288 is on thread 1's stack 
==900== 1128 bytes below stack pointer 
==900== 
==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7FA039B3D: __1cFSimbaEODBCKDescriptorOGetHeaderField6kMhpvpi_v_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FA11F45D: __1cFSimbaEODBCOStatementStateXDoColAttributeOnlyCount6MHphpl_nDstdEpair4Cp2Ch___ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FA12962D: __1cFSimbaEODBCWStatementStateExecutedQSQdDLColAttributeW6MHHpvhphpl_nDstdEpair4Cpn0BOStatementState_Ch___ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FA0F6AAE: __1cFSimbaEODBCJStatementQSQdDLColAttributeW6MHHpvhphpl_h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9EA3CC2: __1cFSimbaEODBCTSQdDLColAttributeTask4B_PDoSynchronously6Frn0BJStatement_rkn0COTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9F10151: __1cGDoTask4nFSimbaEODBCTSQdDLColAttributeTask4B___6Fpkcpvrn7TAOTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9EB815B: SQLColAttributeW (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FE23DC5E: SQLColAttributes_Internal (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE23E495: SQLColAttributes (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0xA69EE8: __1cFSimbaIODBCTestDCliQSqlColAttributes6MpvHH3hphpl_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE4CE7: __1cFSimbaIODBCTestJStatementQSqlColAttributes6MHHpvhphplrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== Address 0x37fedf48 is on thread 1's stack 
==900== 664 bytes below stack pointer 
==900== 
==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7FA12962D: __1cFSimbaEODBCWStatementStateExecutedQSQdDLColAttributeW6MHHpvhphpl_nDstdEpair4Cpn0BOStatementState_Ch___ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FA0F6AAE: __1cFSimbaEODBCJStatementQSQdDLColAttributeW6MHHpvhphpl_h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9EA3CC2: __1cFSimbaEODBCTSQdDLColAttributeTask4B_PDoSynchronously6Frn0BJStatement_rkn0COTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9F10151: __1cGDoTask4nFSimbaEODBCTSQdDLColAttributeTask4B___6Fpkcpvrn7TAOTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9EB815B: SQLColAttributeW (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FE23DC5E: SQLColAttributes_Internal (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE23E495: SQLColAttributes (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0xA69EE8: __1cFSimbaIODBCTestDCliQSqlColAttributes6MpvHH3hphpl_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE4CE7: __1cFSimbaIODBCTestJStatementQSqlColAttributes6MHHpvhphplrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD22371: __1c9uX__unnamed_Aj63VIoYhXFiiQColAttributeBasebEVerifyColAttributesNumberField6Mhl_v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD20720: __1c9uX__unnamed_Aj63VIoYhXFiiWSQdDLCOLATTRIBUTES_ERRORLexecuteTest6M_b_ (in /export/home/bamboo/Touchstone) 
==900== Address 0x37fedf78 is on thread 1's stack 
==900== 1128 bytes below stack pointer 
==900== 
==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7FA0F6AAE: __1cFSimbaEODBCJStatementQSQdDLColAttributeW6MHHpvhphpl_h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9EA3CC2: __1cFSimbaEODBCTSQdDLColAttributeTask4B_PDoSynchronously6Frn0BJStatement_rkn0COTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9F10151: __1cGDoTask4nFSimbaEODBCTSQdDLColAttributeTask4B___6Fpkcpvrn7TAOTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9EB815B: SQLColAttributeW (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FE23DC5E: SQLColAttributes_Internal (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE23E495: SQLColAttributes (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0xA69EE8: __1cFSimbaIODBCTestDCliQSqlColAttributes6MpvHH3hphpl_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE4CE7: __1cFSimbaIODBCTestJStatementQSqlColAttributes6MHHpvhphplrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD22776: __1c9uX__unnamed_Aj63VIoYhXFiiQColAttributeBasebCVerifyColAttributesWithError6MhrknFSimbaIODBCTestMThrowOutcome__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD208FC: __1c9uX__unnamed_Aj63VIoYhXFiiWSQdDLCOLATTRIBUTES_ERRORLexecuteTest6M_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12F954D: __1cFSimbaETestECaseHrunTest6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____n0CLTEST_STATUS__ (in /export/home/bamboo/Touchstone) 
==900== Address 0x37fee258 is on thread 1's stack 
==900== 664 bytes below stack pointer 
==900== 
==900== Invalid read of size 8 
==900== at 0x7FE3BD7D2: _Unw_jmp (in /lib/amd64/libc.so.1) 
==900== by 0x7F9EA3CC2: __1cFSimbaEODBCTSQdDLColAttributeTask4B_PDoSynchronously6Frn0BJStatement_rkn0COTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9F10151: __1cGDoTask4nFSimbaEODBCTSQdDLColAttributeTask4B___6Fpkcpvrn7TAOTaskParameters__h_ (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7F9EB815B: SQLColAttributeW (in /export/home/bamboo/sol-crash/libInternalTest_debug.so) 
==900== by 0x7FE23DC5E: SQLColAttributes_Internal (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0x7FE23E495: SQLColAttributes (in /export/home/bamboo/libiodbc-3.52.8/usr/local/lib/libiodbc.so.2) 
==900== by 0xA69EE8: __1cFSimbaIODBCTestDCliQSqlColAttributes6MpvHH3hphpl_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE4CE7: __1cFSimbaIODBCTestJStatementQSqlColAttributes6MHHpvhphplrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD22776: __1c9uX__unnamed_Aj63VIoYhXFiiQColAttributeBasebCVerifyColAttributesWithError6MhrknFSimbaIODBCTestMThrowOutcome__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD208FC: __1c9uX__unnamed_Aj63VIoYhXFiiWSQdDLCOLATTRIBUTES_ERRORLexecuteTest6M_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12F954D: __1cFSimbaETestECaseHrunTest6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____n0CLTEST_STATUS__ (in /export/home/bamboo/Touchstone) 
==900== by 0x1300335: __1cFSimbaETestGEngineHrunTest6Mpn0BECase__v_ (in /export/home/bamboo/Touchstone) 
==900== Address 0x37fee288 is on thread 1's stack 
==900== 776 bytes below stack pointer 
==900== 
==900== Use of uninitialised value of size 8 
==900== at 0xAE161A: __1cFSimbaIODBCTestGHandleMCheckOutcome6kMrkn0BHOutcome_hpkci_v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE4D01: __1cFSimbaIODBCTestJStatementQSqlColAttributes6MHHpvhphplrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD22776: __1c9uX__unnamed_Aj63VIoYhXFiiQColAttributeBasebCVerifyColAttributesWithError6MhrknFSimbaIODBCTestMThrowOutcome__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD208FC: __1c9uX__unnamed_Aj63VIoYhXFiiWSQdDLCOLATTRIBUTES_ERRORLexecuteTest6M_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12F954D: __1cFSimbaETestECaseHrunTest6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____n0CLTEST_STATUS__ (in /export/home/bamboo/Touchstone) 
==900== by 0x1300335: __1cFSimbaETestGEngineHrunTest6Mpn0BECase__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12FFD8C: __1cFSimbaETestGEngineIRunTests6Mpn0BPTestEnvironment_i_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0xA66238: main (in /export/home/bamboo/Touchstone) 
==900== 
==900== Use of uninitialised value of size 8 
==900== at 0xAE1634: __1cFSimbaIODBCTestGHandleMCheckOutcome6kMrkn0BHOutcome_hpkci_v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE4D01: __1cFSimbaIODBCTestJStatementQSqlColAttributes6MHHpvhphplrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD22776: __1c9uX__unnamed_Aj63VIoYhXFiiQColAttributeBasebCVerifyColAttributesWithError6MhrknFSimbaIODBCTestMThrowOutcome__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD208FC: __1c9uX__unnamed_Aj63VIoYhXFiiWSQdDLCOLATTRIBUTES_ERRORLexecuteTest6M_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12F954D: __1cFSimbaETestECaseHrunTest6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____n0CLTEST_STATUS__ (in /export/home/bamboo/Touchstone) 
==900== by 0x1300335: __1cFSimbaETestGEngineHrunTest6Mpn0BECase__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12FFD8C: __1cFSimbaETestGEngineIRunTests6Mpn0BPTestEnvironment_i_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0xA66238: main (in /export/home/bamboo/Touchstone) 
==900== 
==900== Use of uninitialised value of size 8 
==900== at 0xAE1224: __1cFSimbaIODBCTestGHandleDlog6kM_pn0AETestNVerboseLogger__ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE1827: __1cFSimbaIODBCTestGHandleMCheckOutcome6kMrkn0BHOutcome_hpkci_v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE4D01: __1cFSimbaIODBCTestJStatementQSqlColAttributes6MHHpvhphplrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD22776: __1c9uX__unnamed_Aj63VIoYhXFiiQColAttributeBasebCVerifyColAttributesWithError6MhrknFSimbaIODBCTestMThrowOutcome__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD208FC: __1c9uX__unnamed_Aj63VIoYhXFiiWSQdDLCOLATTRIBUTES_ERRORLexecuteTest6M_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12F954D: __1cFSimbaETestECaseHrunTest6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____n0CLTEST_STATUS__ (in /export/home/bamboo/Touchstone) 
==900== by 0x1300335: __1cFSimbaETestGEngineHrunTest6Mpn0BECase__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12FFD8C: __1cFSimbaETestGEngineIRunTests6Mpn0BPTestEnvironment_i_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0xA66238: main (in /export/home/bamboo/Touchstone) 
==900== 
==900== Invalid read of size 1 
==900== at 0x7FE3AD4FD: mutex_lock_impl (in /lib/amd64/libc.so.1) 
==900== by 0x7FE3AD793: mutex_lock (in /lib/amd64/libc.so.1) 
==900== by 0x1317140: __1cFSimbaETestNVerboseLoggerDLog6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE184A: __1cFSimbaIODBCTestGHandleMCheckOutcome6kMrkn0BHOutcome_hpkci_v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE4D01: __1cFSimbaIODBCTestJStatementQSqlColAttributes6MHHpvhphplrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD22776: __1c9uX__unnamed_Aj63VIoYhXFiiQColAttributeBasebCVerifyColAttributesWithError6MhrknFSimbaIODBCTestMThrowOutcome__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD208FC: __1c9uX__unnamed_Aj63VIoYhXFiiWSQdDLCOLATTRIBUTES_ERRORLexecuteTest6M_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12F954D: __1cFSimbaETestECaseHrunTest6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____n0CLTEST_STATUS__ (in /export/home/bamboo/Touchstone) 
==900== by 0x1300335: __1cFSimbaETestGEngineHrunTest6Mpn0BECase__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12FFD8C: __1cFSimbaETestGEngineIRunTests6Mpn0BPTestEnvironment_i_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0xA66238: main (in /export/home/bamboo/Touchstone) 
==900== Address 0x650000017b is not stack'd, malloc'd or (recently) free'd 
==900== 
==900== 
==900== Process terminating with default action of signal 11 (SIGSEGV): dumping core 
==900== Access not within mapped region at address 0x650000017B 
==900== at 0x7FE3AD4FD: mutex_lock_impl (in /lib/amd64/libc.so.1) 
==900== by 0x7FE3AD793: mutex_lock (in /lib/amd64/libc.so.1) 
==900== by 0x1317140: __1cFSimbaETestNVerboseLoggerDLog6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE184A: __1cFSimbaIODBCTestGHandleMCheckOutcome6kMrkn0BHOutcome_hpkci_v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xAE4D01: __1cFSimbaIODBCTestJStatementQSqlColAttributes6MHHpvhphplrkn0BHOutcome_pkci_h_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD22776: __1c9uX__unnamed_Aj63VIoYhXFiiQColAttributeBasebCVerifyColAttributesWithError6MhrknFSimbaIODBCTestMThrowOutcome__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0xD208FC: __1c9uX__unnamed_Aj63VIoYhXFiiWSQdDLCOLATTRIBUTES_ERRORLexecuteTest6M_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12F954D: __1cFSimbaETestECaseHrunTest6MrknDstdMbasic_string4Ccn0DLchar_traits4Cc__n0DJallocator4Cc_____n0CLTEST_STATUS__ (in /export/home/bamboo/Touchstone) 
==900== by 0x1300335: __1cFSimbaETestGEngineHrunTest6Mpn0BECase__v_ (in /export/home/bamboo/Touchstone) 
==900== by 0x12FFD8C: __1cFSimbaETestGEngineIRunTests6Mpn0BPTestEnvironment_i_b_ (in /export/home/bamboo/Touchstone) 
==900== by 0xA66238: main (in /export/home/bamboo/Touchstone) 
==900== If you believe this happened as a result of a stack 
==900== overflow in your program's main thread (unlikely but 
==900== possible), you can try to increase the size of the 
==900== main thread stack using the --main-stacksize= flag. 
==900== The main thread stack size used in this run was 8388608. 
==900== 
==900== HEAP SUMMARY: 
==900==  in use at exit: 19,994,466 bytes in 157,661 blocks 
==900== total heap usage: 416,854 allocs, 259,193 frees, 56,010,824 bytes allocated 
==900== 
==900== LEAK SUMMARY: 
==900== definitely lost: 0 bytes in 0 blocks 
==900== indirectly lost: 0 bytes in 0 blocks 
==900==  possibly lost: 10,903,944 bytes in 79,967 blocks 
==900== still reachable: 9,090,522 bytes in 77,694 blocks 
==900==   suppressed: 0 bytes in 0 blocks 
==900== Rerun with --leak-check=full to see details of leaked memory 
==900== 
==900== For counts of detected and suppressed errors, rerun with: -v 
==900== Use --track-origins=yes to see where uninitialised values come from 
==900== ERROR SUMMARY: 14 errors from 14 contexts (suppressed: 0 from 0) 
Segmentation Fault 

불행하게도 (이름을보고) 나에게 this을 제공, 내가 같은 일을 보는 것을 의미합니다 내가 gcc/cc 비호 환성으로 해산 한 것에 대해.

같은 테스트가 32 비트에서 잘 작동합니다.

아이디어가 있으십니까?

+1

[mcve]를 게시 할 수있는 방법이 있습니까? 'r14'는 [SysV AMD64 ABI] (http://www.x86-64.org/documentation.html)에 arg-passing 레지스터가 아닌 호출 보존 레지스터입니다. 그것을 사용하고자하는 함수는 프롤로그에서 그것을 누르고 에필로그에 나타납니다. 그러나 그들은 그들의 발신자가 그것을 사용하고있는 것에 신경을 쓰지 않습니다. 나는 예외를 잡는 코드를 위해 asm을 보지 않았다. IDK는 등록 상태에 대해 가정 할 수있는 것으로 가정합니다. –

+0

이 문제는 Valgrind에서만 발생합니까? 나는 또한 당신이 Solaris Studio 12를 사용했다는 것에 주목했다.4를 컴파일하고 나중에 LD_PRELOAD를 사용하여 GNU C++ 런타임 라이브러리를로드합니다. Solaris Studio로 코드를 컴파일하고 GNU C++ 런타임을 사용하지 않은 경우, 여러 개의 C++ 런타임 라이브러리를 혼합하면 잘 끝나지 않을 것입니다. –

+0

이 GCC 버그는 적합합니다 : [버그 59788 - 64 비트 Solaris 10 +/x86에서 libc와 libgcc_s unwinders를 함께 사용하면 EH가 깨집니다] (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788) –

답변

1

(정답은 아니지만 의견이 너무 길음).

TL : DR : 어떤 부분이 잘못된 것인지 추측하는 대신 ABI를 확인하십시오.


r14

SysV AMD64 ABI에서 (ARG-전달에 사용되지 않음)를 호출 보존 레지스터이다. 그것을 사용하고자하는 함수는 프롤로그에서 그것을 누르고 에필로그에 나타납니다. 그러나 그들은 그들의 발신자가 그것을 사용하고있는 것에 신경을 쓰지 않습니다.그들은 진입 당시와 동일한 가치를 지니고 있는지 확인해야합니다.

catch 절에 항목의 레지스터 상태는 ABI의 섹션 6.2.6에 설명 된 것 같다 : 착륙 패드

에 제어를 전송

...

랜딩 패드에서 코드를 실행하기 전에 unwind 라이브러리는 콘텍스트 레코드를 사용하여 개성 루틴에 의해 변경되지 않은 레지스터 을 해당 상태 인 으로 복원합니다 프레임을 호출하기 전에 다음과 같이 예외를 발생시킵니다. 모든 Aires는으로 Ale에 의해 호출 된 callee가 복원되고 [%rsi, %rdi, %rdx, %rcx은 예외에 대한 정보를 전달하는 데 사용됩니다.]

ABI의 마지막 문장의 원래 끝 부분은 혼란스럽게 말로 표현됩니다. 내 말을 잘못 들었을 수도 있습니다. (해당 하위 절의 마지막 단락을 참조하십시오).

catch이 없어도 각 프레임의 정리 코드가 호출되는 방식을 설명하는 내용을 토대로 거의 항상 통화 보존 레지스터가 catch에 복원됩니다. 이것은 푸는 동안 소멸자를 실행하는 메커니즘과 동일합니다.

따라서 r14이 올바르게 복원되지 않는다는 오류가 발생합니다. catch 예외를 사용하고 r14을 사용하려고하는 함수는 아무 잘못도 내지 않습니다.


스택 프레임이 풀려있는 일부 기능에서 일부 로깅 정보를 인쇄하는 소멸자가 포함되어 있습니까? 어쩌면 프린트 할지를 결정하기 위해 글로벌을 체크하게하고, 글로벌을 설정 한 다음 예외를 발생시키는 호출을 할 수 있으므로, 그렇지 않은 호출에서 로그 메시지로 가득 찬 화면을 얻지 못할 수도 있습니다 던지다.

어쨌든 r14이 복원되지 않은 경우 unwinding 단계에서 소멸자/정리가 올바르게 호출되지 않습니다.


은 ... 레지스터가에 쏟아지고 있었다 스택에 하드웨어 쓰기 시계를 넣어하지만 명중되지 않습니다 시금석

에 복귀 한 후에는 있었어야 할 때까지 읽은 watchpoint를 사용하여 그것을 흘린 함수에 대한 unwind cleanup 코드 동안 읽혀지는 것을 찾는다. catch 절을 입력 할 때까지는 아무 것도 유출 위치를 덮어 쓰지 않는 것이 놀라운 일은 아닙니다.

+0

나는이 유형의 디버깅에 익숙하지 않다. abi에 대한 링크 덕택에 내일 볼 것이다. – Bwmat

+1

던지기와 잡기 사이의 코드는 아무 것도 없으며, 그냥 평범한 옛 C++ – Bwmat

+0

@Bwmat : x86 ASM에 대한 많은 유용한 링크는 [x86 tag wiki] (http://stackoverflow.com/tags/x86/info)를 참조하십시오. –

관련 문제