首页 > 解决方案 > 什么会导致这样的“双倍”堆栈?

问题描述

用户报告了使用我们的 SDK 构建的 ODBC 驱动程序崩溃,并提供了两个核心转储。我将在下面提供堆栈跟踪:

第一次崩溃:

    RDFODBC_sb64.dll!_wassert(const wchar_t * expr, const wchar_t * filename, unsigned int lineno) Line 369 C
    RDFODBC_sb64.dll!Simba::ODBC::ODBCTaskContainer::SetTask(Simba::ODBC::IODBCTask * in_taskPointer) Line 61   C++
    RDFODBC_sb64.dll!Simba::ODBC::Statement::~Statement() Line 413  C++
    RDFODBC_sb64.dll!Simba::ODBC::Statement::`scalar deleting destructor'(unsigned int) C++
    RDFODBC_sb64.dll!`anonymous namespace'::DeleteAndRemove<std::vector<Simba::ODBC::Statement * __ptr64,std::allocator<Simba::ODBC::Statement * __ptr64> > >(std::vector<Simba::ODBC::Statement *,std::allocator<Simba::ODBC::Statement *> > & in_vector, std::_Vector_iterator<std::_Vector_val<std::_Simple_types<Simba::ODBC::Statement *> > > in_toDeleteAndRemove) Line 429   C++
    RDFODBC_sb64.dll!Simba::ODBC::Connection::DeleteStatement(Simba::ODBC::Statement * in_statement) Line 846   C++
    RDFODBC_sb64.dll!Simba::ODBC::ConnectionState::SQLFreeHandle(Simba::ODBC::Connection * in_connection, short HandleType, void * Handle) Line 179 C++
    RDFODBC_sb64.dll!Simba::ODBC::Connection::SQLFreeHandle(short HandleType, void * Handle) Line 1592  C++
    RDFODBC_sb64.dll!SQLFreeHandle::__l346::<lambda>() Line 1931    C++
    RDFODBC_sb64.dll!std::_Callable_obj<short <lambda>(void),0>::_ApplyX<short>() Line 284  C++
    RDFODBC_sb64.dll!std::_Func_impl<std::_Callable_obj<short <lambda>(void),0>,std::allocator<std::_Func_class<short> >,short>::_Do_call() Line 229    C++
    RDFODBC_sb64.dll!std::_Func_class<short>::operator()() Line 316 C++
    RDFODBC_sb64.dll!_default_sen_odbc_api_function_wrapper_(std::function<short __cdecl(void)> & apiFunction) Line 773 C++
    RDFODBC_sb64.dll!SQLFreeHandle(short HandleType, void * Handle) Line 2014   C++
    MPAPlugin.dll!SQLFreeHandle(short HandleType, void * Handle) Line 1786  C++
    odbc32.dll!FreeStmt()  Unknown
    odbc32.dll!SQLFreeHandle()  Unknown
    sasodb.dll!00000000064d7187()   Unknown
    sasodb.dll!00000000064c1b26()   Unknown
    sasioodb.dll!000000000638d6a6() Unknown
    sasxdbi.dll!0000000006456fe3()  Unknown
    sasxdbi.dll!0000000006417fdf()  Unknown
    sasyh.dll!00000000053cec60()    Unknown
    sasyh.dll!00000000053c157a()    Unknown
    sasxkern.dll!0000000005155a2c() Unknown
    sashost.dll!000000000383e9b2()  Unknown
    sashost.dll!000000000383b877()  Unknown
    sashost.dll!000000000383b375()  Unknown
    sashost.dll!000000000383d962()  Unknown
    sashost.dll!000000000384081f()  Unknown
    sashost.dll!000000000383c4e3()  Unknown
    sashost.dll!00000000038322c4()  Unknown
    sashost.dll!000000000384628f()  Unknown
    sashost.dll!0000000003849d10()  Unknown
    sashost.dll!000000000383d509()  Unknown
    sashost.dll!00000000038506f0()  Unknown
    sashost.dll!000000000384f649()  Unknown
    0000000004846610()  Unknown
    fe48daea1d7f4cf6()  Unknown
    cccccccccccccccc()  Unknown
    000000000d3683d0()  Unknown
>   RDFODBC_sb64.dll!Simba::Support::AutoPtr<sbicu_58::GregorianCalendar,Simba::Support::AutoPtr_DefaultDeallocator<sbicu_58::GregorianCalendar> >::operator->() Line 142   C++
    RDFODBC_sb64.dll!`anonymous namespace'::CreateEmptyCalendar(Simba::Support::ILogger * in_logger) Line 118   C++
    RDFODBC_sb64.dll!Simba::Support::TimestampTzConverter::TimestampTzConverter(const Simba::Support::simba_wstring & in_format, Simba::Support::ILogger * in_logger) Line 395  C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSAbstractTable::RSAbstractTable(Simba::Support::ILogger * in_log, Simba::RestSQL::Settings & in_settings, Simba::RestSQL::RSConnection & in_connection, Simba::RestSQL::RestAPI & in_api, const Simba::RestSQL::_TableInfo & in_tableInfo, Simba::Support::IWarningListener * in_errorsListener, Simba::DriverSupport::HandlePool<void *,Simba::WebServiceSupport::CurlHandleManager,std::vector<void *,std::allocator<void *> > > & in_curlPool, Simba::RestSQL::MPAWrapper & in_mpa, Simba::Support::AutoPtr<Simba::RestSQL::EndpointParameterInfo,Simba::Support::AutoPtr_DefaultDeallocator<Simba::RestSQL::EndpointParameterInfo> > in_executionEndpoint) Line 538   C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSTableT<Simba::RestSQL::RSJsonTable>::RSTableT<Simba::RestSQL::RSJsonTable>(Simba::Support::ILogger * in_log, Simba::RestSQL::Settings & in_settings, Simba::RestSQL::RSConnection & in_connection, Simba::RestSQL::RestAPI & in_api, const Simba::RestSQL::_TableInfo & in_tableInfo, Simba::Support::IWarningListener * in_errorsListener, Simba::DriverSupport::HandlePool<void *,Simba::WebServiceSupport::CurlHandleManager,std::vector<void *,std::allocator<void *> > > & in_curlPool, Simba::RestSQL::MPAWrapper & in_mpa, Simba::Support::AutoPtr<Simba::RestSQL::EndpointParameterInfo,Simba::Support::AutoPtr_DefaultDeallocator<Simba::RestSQL::EndpointParameterInfo> > in_executionEndpoint) Line 807   C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSJsonTable::RSJsonTable(Simba::Support::ILogger * in_log, Simba::RestSQL::Settings & in_settings, Simba::RestSQL::RSConnection & in_connection, Simba::RestSQL::RestAPI & in_api, const Simba::RestSQL::_TableInfo & in_tableInfo, Simba::Support::IWarningListener * in_errorsListener, Simba::DriverSupport::HandlePool<void *,Simba::WebServiceSupport::CurlHandleManager,std::vector<void *,std::allocator<void *> > > & in_curlPool, Simba::RestSQL::MPAWrapper & in_mpa, Simba::Support::AutoPtr<Simba::RestSQL::EndpointParameterInfo,Simba::Support::AutoPtr_DefaultDeallocator<Simba::RestSQL::EndpointParameterInfo> > in_executionEndpoint) Line 54    C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSTableFactory::CreateRSTable(Simba::Support::ILogger * in_log, Simba::RestSQL::Settings & in_settings, Simba::RestSQL::RSConnection * in_connection, Simba::RestSQL::RestAPI & in_api, const Simba::RestSQL::_TableInfo & in_tableInfo, Simba::Support::IWarningListener * in_errorsListener, Simba::DriverSupport::HandlePool<void *,Simba::WebServiceSupport::CurlHandleManager,std::vector<void *,std::allocator<void *> > > & in_curlPool, Simba::RestSQL::MPAWrapper & in_mpa, Simba::Support::AutoPtr<Simba::RestSQL::EndpointParameterInfo,Simba::Support::AutoPtr_DefaultDeallocator<Simba::RestSQL::EndpointParameterInfo> > in_executionEndpoint) Line 72   C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSDataEngine::OpenTable(const Simba::Support::simba_wstring & in_catalogName, const Simba::Support::simba_wstring & in_schemaName, const Simba::Support::simba_wstring & in_tableName, Simba::SQLEngine::DSIExtTableOpenType in_openType) Line 200 C++
    RDFODBC_sb64.dll!Simba::ViewSupport::ViewManagedDataEngine<Simba::RestSQL::RSDataEngine>::OpenTable(const Simba::Support::simba_wstring & in_catalogName, const Simba::Support::simba_wstring & in_schemaName, const Simba::Support::simba_wstring & in_tableName, Simba::SQLEngine::DSIExtTableOpenType in_openType) Line 276  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AETableNameBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 70    C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AETableRefBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 77 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AETableRefListBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 48 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEQuerySpecBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 85    C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AERelationalExprBuilder::BuildSelectStatement(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 132   C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AERelationalExprBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 65   C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEQueryBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 66    C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AEStatement,Simba::Support::AutoPtr<Simba::SQLEngine::AEStatement,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AEStatement> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEStatementBuilder::BuildQuery(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 146  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEStatementBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 60    C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AEStatement,Simba::Support::AutoPtr<Simba::SQLEngine::AEStatement,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AEStatement> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEAetBuilder::Build(Simba::SQLEngine::PSParseNode * in_node, Simba::SQLEngine::DSIExtSqlDataEngine * in_dataEngine) Line 22  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::DSIExtSqlDataEngine::Prepare(const Simba::Support::simba_wstring & in_sqlStatement) Line 170 C++
    RDFODBC_sb64.dll!Simba::ODBC::StatementState::InternalPrepare(wchar_t * in_sqlText, int in_textLength, bool in_isDirectExecute) Line 1492   C++
    RDFODBC_sb64.dll!Simba::ODBC::StatementState::DoPrepare(wchar_t * in_sqlText, int in_textLength, bool in_isDirectExecute) Line 877  C++
    RDFODBC_sb64.dll!Simba::ODBC::StatementState::SQLPrepareW(wchar_t * StatementText, long TextLength) Line 742    C++
    RDFODBC_sb64.dll!Simba::ODBC::StatementState1::SQLPrepareW(wchar_t * StatementText, long TextLength) Line 43    C++
    RDFODBC_sb64.dll!Simba::ODBC::Statement::SQLPrepareW(wchar_t * StatementText, long TextLength) Line 1253    C++
    RDFODBC_sb64.dll!Simba::ODBC::SQLPrepareTask<1>::DoSynchronously(Simba::ODBC::Statement & in_stmt, const Simba::ODBC::SQLPrepareTask<1>::TaskParameters & in_params) Line 211   C++
    RDFODBC_sb64.dll!DoTask<Simba::ODBC::SQLPrepareTask<1> >(const char * in_functionName, void * in_handle, Simba::ODBC::SQLPrepareTask<1>::TaskParameters & in_parameters) Line 685   C++
    RDFODBC_sb64.dll!SQLPrepareW::__l3::<lambda>() Line 4061    C++
    RDFODBC_sb64.dll!std::_Callable_obj<short <lambda>(void),0>::_ApplyX<short>() Line 284  C++
    RDFODBC_sb64.dll!std::_Func_impl<std::_Callable_obj<short <lambda>(void),0>,std::allocator<std::_Func_class<short> >,short>::_Do_call() Line 229    C++
    RDFODBC_sb64.dll!std::_Func_class<short>::operator()() Line 316 C++
    RDFODBC_sb64.dll!_default_sen_odbc_api_function_wrapper_(std::function<short __cdecl(void)> & apiFunction) Line 773 C++
    RDFODBC_sb64.dll!SQLPrepareW(void * StatementHandle, wchar_t * StatementText, long TextLength) Line 4061    C++
    MPAPlugin.dll!SQLPrepareW(void * StatementHandle, wchar_t * StatementText, long TextLength) Line 2251   C++
    odbc32.dll!SQLPrepareCover()    Unknown
    odbc32.dll!SQLPrepare()    Unknown
    sasodb.dll!00000000064d7ab9()   Unknown
    sasodb.dll!00000000064c3e06()   Unknown
    sasioodb.dll!00000000063c17a4() Unknown
    sasxdbi.dll!000000000644e0fa()  Unknown
    sasxdbi.dll!0000000006415abb()  Unknown
    sasyoio.dll!000000000bdaad5f()  Unknown
    sasyoio.dll!000000000bda7597()  Unknown
    sassqlp.dll!000000000ba4a787()  Unknown
    sassqlp.dll!000000000ba49d8e()  Unknown
    sassqlp.dll!000000000ba36853()  Unknown
    sassqlp.dll!000000000ba30cd2()  Unknown
    sassqx.dll!000000000b8a54b3()   Unknown
    sassqx.dll!000000000b8a4c0e()   Unknown
    sassql.dll!00000000092c147c()   Unknown
    sashost.dll!000000000384a366()  Unknown
    sashost.dll!0000000003850574()  Unknown
    kernel32.dll!BaseThreadInitThunk() Unknown
    ntdll.dll!RtlUserThreadStart() Unknown

第二次崩溃:

>   kernel32.dll!IsBadReadPtr() Unknown
    tkmk.dll!0000000010051baa() Unknown
    tkmk.dll!000000001005383d() Unknown
    tkmk.dll!0000000010053587() Unknown
    tkmk.dll!0000000010054f63() Unknown
    tkmk.dll!0000000010055713() Unknown
    tkmk.dll!0000000010056894() Unknown
    tkmk.dll!0000000010056715() Unknown
    tkmk.dll!000000001005692b() Unknown
    tkmk.dll!00000000100566f9() Unknown
    tkmk.dll!000000001004aaaa() Unknown
    sashost.dll!0000000003761589()  Unknown
    sashost.dll!00000000037521c4()  Unknown
    sashost.dll!000000000376628f()  Unknown
    sashost.dll!0000000003769d10()  Unknown
    sashost.dll!000000000375d509()  Unknown
    sashost.dll!00000000037706f0()  Unknown
    sashost.dll!000000000376f649()  Unknown
    0000000004844e40()  Unknown
    fe48daea1d7f4cf6()  Unknown
    cccccccccccccccc()  Unknown
    000000000cbd83d0()  Unknown
    RDFODBC_sb64.dll!Simba::Support::AutoPtr<sbicu_58::GregorianCalendar,Simba::Support::AutoPtr_DefaultDeallocator<sbicu_58::GregorianCalendar> >::operator->() Line 142   C++
    RDFODBC_sb64.dll!`anonymous namespace'::CreateEmptyCalendar(Simba::Support::ILogger * in_logger) Line 118   C++
    RDFODBC_sb64.dll!Simba::Support::TimestampTzConverter::TimestampTzConverter(const Simba::Support::simba_wstring & in_format, Simba::Support::ILogger * in_logger) Line 395  C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSAbstractTable::RSAbstractTable(Simba::Support::ILogger * in_log, Simba::RestSQL::Settings & in_settings, Simba::RestSQL::RSConnection & in_connection, Simba::RestSQL::RestAPI & in_api, const Simba::RestSQL::_TableInfo & in_tableInfo, Simba::Support::IWarningListener * in_errorsListener, Simba::DriverSupport::HandlePool<void *,Simba::WebServiceSupport::CurlHandleManager,std::vector<void *,std::allocator<void *> > > & in_curlPool, Simba::RestSQL::MPAWrapper & in_mpa, Simba::Support::AutoPtr<Simba::RestSQL::EndpointParameterInfo,Simba::Support::AutoPtr_DefaultDeallocator<Simba::RestSQL::EndpointParameterInfo> > in_executionEndpoint) Line 538   C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSTableT<Simba::RestSQL::RSJsonTable>::RSTableT<Simba::RestSQL::RSJsonTable>(Simba::Support::ILogger * in_log, Simba::RestSQL::Settings & in_settings, Simba::RestSQL::RSConnection & in_connection, Simba::RestSQL::RestAPI & in_api, const Simba::RestSQL::_TableInfo & in_tableInfo, Simba::Support::IWarningListener * in_errorsListener, Simba::DriverSupport::HandlePool<void *,Simba::WebServiceSupport::CurlHandleManager,std::vector<void *,std::allocator<void *> > > & in_curlPool, Simba::RestSQL::MPAWrapper & in_mpa, Simba::Support::AutoPtr<Simba::RestSQL::EndpointParameterInfo,Simba::Support::AutoPtr_DefaultDeallocator<Simba::RestSQL::EndpointParameterInfo> > in_executionEndpoint) Line 807   C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSJsonTable::RSJsonTable(Simba::Support::ILogger * in_log, Simba::RestSQL::Settings & in_settings, Simba::RestSQL::RSConnection & in_connection, Simba::RestSQL::RestAPI & in_api, const Simba::RestSQL::_TableInfo & in_tableInfo, Simba::Support::IWarningListener * in_errorsListener, Simba::DriverSupport::HandlePool<void *,Simba::WebServiceSupport::CurlHandleManager,std::vector<void *,std::allocator<void *> > > & in_curlPool, Simba::RestSQL::MPAWrapper & in_mpa, Simba::Support::AutoPtr<Simba::RestSQL::EndpointParameterInfo,Simba::Support::AutoPtr_DefaultDeallocator<Simba::RestSQL::EndpointParameterInfo> > in_executionEndpoint) Line 54    C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSTableFactory::CreateRSTable(Simba::Support::ILogger * in_log, Simba::RestSQL::Settings & in_settings, Simba::RestSQL::RSConnection * in_connection, Simba::RestSQL::RestAPI & in_api, const Simba::RestSQL::_TableInfo & in_tableInfo, Simba::Support::IWarningListener * in_errorsListener, Simba::DriverSupport::HandlePool<void *,Simba::WebServiceSupport::CurlHandleManager,std::vector<void *,std::allocator<void *> > > & in_curlPool, Simba::RestSQL::MPAWrapper & in_mpa, Simba::Support::AutoPtr<Simba::RestSQL::EndpointParameterInfo,Simba::Support::AutoPtr_DefaultDeallocator<Simba::RestSQL::EndpointParameterInfo> > in_executionEndpoint) Line 72   C++
    RDFODBC_sb64.dll!Simba::RestSQL::RSDataEngine::OpenTable(const Simba::Support::simba_wstring & in_catalogName, const Simba::Support::simba_wstring & in_schemaName, const Simba::Support::simba_wstring & in_tableName, Simba::SQLEngine::DSIExtTableOpenType in_openType) Line 200 C++
    RDFODBC_sb64.dll!Simba::ViewSupport::ViewManagedDataEngine<Simba::RestSQL::RSDataEngine>::OpenTable(const Simba::Support::simba_wstring & in_catalogName, const Simba::Support::simba_wstring & in_schemaName, const Simba::Support::simba_wstring & in_tableName, Simba::SQLEngine::DSIExtTableOpenType in_openType) Line 276  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AETableNameBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 70    C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AETableRefBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 77 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AETableRefListBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 48 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEQuerySpecBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 85    C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AERelationalExprBuilder::BuildSelectStatement(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 132   C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AERelationalExprBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 65   C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr<Simba::SQLEngine::AERelationalExpr,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AERelationalExpr> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEQueryBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 66    C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AEStatement,Simba::Support::AutoPtr<Simba::SQLEngine::AEStatement,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AEStatement> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEStatementBuilder::BuildQuery(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 146  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEStatementBuilder::VisitNonTerminalParseNode(Simba::SQLEngine::PSNonTerminalParseNode * in_node) Line 60    C++
    RDFODBC_sb64.dll!Simba::SQLEngine::PSNonTerminalParseNode::AcceptVisitor(Simba::SQLEngine::IParseTreeVisitor & in_visitor) Line 486 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEBuilderBaseT<Simba::SQLEngine::AEStatement,Simba::Support::AutoPtr<Simba::SQLEngine::AEStatement,Simba::Support::AutoPtr_DefaultDeallocator<Simba::SQLEngine::AEStatement> > >::Build(Simba::SQLEngine::PSParseNode * in_node) Line 70 C++
    RDFODBC_sb64.dll!Simba::SQLEngine::AEAetBuilder::Build(Simba::SQLEngine::PSParseNode * in_node, Simba::SQLEngine::DSIExtSqlDataEngine * in_dataEngine) Line 22  C++
    RDFODBC_sb64.dll!Simba::SQLEngine::DSIExtSqlDataEngine::Prepare(const Simba::Support::simba_wstring & in_sqlStatement) Line 170 C++
    RDFODBC_sb64.dll!Simba::ODBC::StatementState::InternalPrepare(wchar_t * in_sqlText, int in_textLength, bool in_isDirectExecute) Line 1492   C++
    RDFODBC_sb64.dll!Simba::ODBC::StatementState::DoPrepare(wchar_t * in_sqlText, int in_textLength, bool in_isDirectExecute) Line 877  C++
    RDFODBC_sb64.dll!Simba::ODBC::StatementState::SQLPrepareW(wchar_t * StatementText, long TextLength) Line 742    C++
    RDFODBC_sb64.dll!Simba::ODBC::StatementState1::SQLPrepareW(wchar_t * StatementText, long TextLength) Line 43    C++
    RDFODBC_sb64.dll!Simba::ODBC::Statement::SQLPrepareW(wchar_t * StatementText, long TextLength) Line 1253    C++
    RDFODBC_sb64.dll!Simba::ODBC::SQLPrepareTask<1>::DoSynchronously(Simba::ODBC::Statement & in_stmt, const Simba::ODBC::SQLPrepareTask<1>::TaskParameters & in_params) Line 211   C++
    RDFODBC_sb64.dll!DoTask<Simba::ODBC::SQLPrepareTask<1> >(const char * in_functionName, void * in_handle, Simba::ODBC::SQLPrepareTask<1>::TaskParameters & in_parameters) Line 685   C++
    RDFODBC_sb64.dll!SQLPrepareW::__l3::<lambda>() Line 4061    C++
    RDFODBC_sb64.dll!std::_Callable_obj<short <lambda>(void),0>::_ApplyX<short>() Line 284  C++
    RDFODBC_sb64.dll!std::_Func_impl<std::_Callable_obj<short <lambda>(void),0>,std::allocator<std::_Func_class<short> >,short>::_Do_call() Line 229    C++
    RDFODBC_sb64.dll!std::_Func_class<short>::operator()() Line 316 C++
    RDFODBC_sb64.dll!_default_sen_odbc_api_function_wrapper_(std::function<short __cdecl(void)> & apiFunction) Line 773 C++
    RDFODBC_sb64.dll!SQLPrepareW(void * StatementHandle, wchar_t * StatementText, long TextLength) Line 4061    C++
    MPAPlugin.dll!SQLPrepareW(void * StatementHandle, wchar_t * StatementText, long TextLength) Line 2251   C++
    odbc32.dll!SQLPrepareCover()    Unknown
    odbc32.dll!SQLPrepare()    Unknown
    sasodb.dll!00000000064a7ab9()   Unknown
    sasodb.dll!0000000006493e06()   Unknown
    sasioodb.dll!00000000063917a4() Unknown
    sasxdbi.dll!000000000641e0fa()  Unknown
    sasxdbi.dll!00000000063e5abb()  Unknown
    sasyoio.dll!000000000a22ad5f()  Unknown
    sasyoio.dll!000000000a227597()  Unknown
    sassqlp.dll!000000000a18a787()  Unknown
    sassqlp.dll!000000000a189d8e()  Unknown
    sassqlp.dll!000000000a176853()  Unknown
    sassqlp.dll!000000000a170cd2()  Unknown
    sassqx.dll!0000000009fd54b3()   Unknown
    sassqx.dll!0000000009fd4c0e()   Unknown
    sassql.dll!0000000009f8147c()   Unknown
    sashost.dll!000000000376a366()  Unknown
    sashost.dll!0000000003770574()  Unknown
    kernel32.dll!BaseThreadInitThunk() Unknown
    ntdll.dll!RtlUserThreadStart() Unknown

他们将驱动程序与 SAS 一起使用,在两个堆栈跟踪中,看起来它会调用 ICU(我们自己构建它并添加 'sb' 前缀),但它却以某种方式(通过那 4 帧垃圾 [我假设调试器没有正确展开堆栈???]) 调用回 SAS?

我认为堆栈只是损坏或其他原因,但在第一个中,崩溃是由给定语句当前未使用的断言引起的(一个永远不会失败的断言),但是,查看调试器,它与传入 odbc32.dll!SQLPrepareCover() 'below' 和传入 odbc32.dll!FreeStmt() 'above' 的句柄相同,因此断言失败是有道理的,因为我们可以锁定我们的再次互斥(它们是递归的)并重新进入不应该出现的地方。

除了使用光纤的 SAS 或其他某种绿色线程之外,我想不出任何会导致这种情况的东西?还是信号处理程序?(但我认为这在 Windows 上的工作方式不同,我认为它会出现在堆栈上)。ICU的某些函数指针表是否被损坏以某种方式指向SAS?ICU 和 SAS 应该对彼此一无所知。

标签: c++sascrashodbc

解决方案


忘记了这个问题。

该问题最终是由 sas 安装的 seh 处理程序引起的,该处理程序因 sas 启用浮点异常而被触发,然后调用驱动程序。ICU没想到fp异常被启用,触发了一个,然后sas cleanup使进程崩溃


推荐阅读