[ 
https://issues.apache.org/jira/browse/TRAFODION-2783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16219970#comment-16219970
 ] 

ASF GitHub Bot commented on TRAFODION-2783:
-------------------------------------------

GitHub user selvaganesang opened a pull request:

    https://github.com/apache/incubator-trafodion/pull/1277

    [TRAFODION-2783] jdbc_test_cdh fails at times with type 2 JDBC driver…

    … dumping core
    
    In case of Type 2 JDBC driver, the Trafodion SQL engine is a library that 
is dynamic
    loaded into the process. Initialization of C++ static objects in the 
dynamic loaded libraries
    are supposed to be done before dlopen returns. But the behavior seems to be 
nondeterministic when
    there are multiple threads or when there are dependent static objects (An 
static object expects
    another to be initialized before it). I think, the order of the 
initialization is not guaranteed
    by the standard.
    
    Refactored the code to initialize static object 
CharInfo::builtinCollationDB_ as part of the first
    CLI call in a thread safe manner.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/selvaganesang/incubator-trafodion 
static_variable

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-trafodion/pull/1277.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1277
    
----
commit 9a8a7c39fecff583d2988c76fb443620ee64df24
Author: selvaganesang <[email protected]>
Date:   2017-10-26T04:47:16Z

    [TRAFODION-2783] jdbc_test_cdh fails at times with type 2 JDBC driver 
dumping core
    
    In case of Type 2 JDBC driver, the Trafodion SQL engine is a library that 
is dynamic
    loaded into the process. Initialization of C++ static objects in the 
dynamic loaded libraries
    are supposed to be done before dlopen returns. But the behavior seems to be 
nondeterministic when
    there are multiple threads or when there are dependent static objects (An 
static object expects
    another to be initialized before it). I think, the order of the 
initialization is not guaranteed
    by the standard.
    
    Refactored the code to initialize static object 
CharInfo::builtinCollationDB_ as part of the first
    CLI call in a thread safe manner.

----


> jdbc_test_cdh fails at times with type 2 JDBC driver dumping core
> -----------------------------------------------------------------
>
>                 Key: TRAFODION-2783
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-2783
>             Project: Apache Trafodion
>          Issue Type: Bug
>          Components: sql-general
>    Affects Versions: any
>            Reporter: Selvaganesan Govindarajan
>            Assignee: Selvaganesan Govindarajan
>             Fix For: 2.3-incubating
>
>
> The stack trace of the core is 
> Thread 1 (Thread 0x7fad11e95700 (LWP 38697)):
> #0  0x00007fad110a95f7 in raise () from /lib64/libc.so.6
> #1  0x00007fad110aace8 in abort () from /lib64/libc.so.6
> 2  0x00007fad0fecb9d5 in __gnu_cxx::__verbose_terminate_handler() () from 
> /lib64/libstdc++.so.6
> #3  0x00007fad0fec9946 in ?? () from /lib64/libstdc++.so.6
> #4  0x00007fad0fec9973 in std::terminate() () from /lib64/libstdc++.so.6
> #5  0x00007fad0feca4df in __cxa_pure_virtual () from /lib64/libstdc++.so.6
> #6  0x00007fad109ebc76 in outputStream::print_cr(char const*, ...) () from 
> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/amd64/server/libjvm.so
> #7  0x00007fad10b7ca07 in VMError::report(outputStream*) () from 
> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/amd64/server/libjvm.so
> #8  0x00007fad10b7e69f in VMError::report_and_die() () from 
> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/amd64/server/libjvm.so
> #9  0x00007fad109e85c7 in JVM_handle_linux_signal () from 
> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/amd64/server/libjvm.so
> #10 0x00007fad109dc848 in signalHandler(int, siginfo_t*, void*) () from 
> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/amd64/server/libjvm.so
> #11 <signal handler called>
> #12 0x00007facf1afbfad in NACollection<CollationInfo const*>::constEntry 
> (this=0x7facf1f25440 <CharInfo::builtinCollationDB_>, ix=0) at 
> ../common/Collections.h:410
> #13 0x00007facf1afb786 in NAList<CollationInfo const*>::operator[] 
> (this=0x7facf1f25440 <CharInfo::builtinCollationDB_>, i=0) at 
> ../common/Collections.cpp:924
> #14 0x00007facf1afb014 in NAList<CollationInfo const*>::at 
> (this=0x7facf1f25440 <CharInfo::builtinCollationDB_>, i=0) at 
> ../common/Collections.h:2058
> #15 0x00007facf1afa2be in CollationDB::getCollationInfo (this=0x7facf1f25440 
> <CharInfo::builtinCollationDB_>, co=CharInfo::DefaultCollation) at 
> ../common/charinfo.cpp:455
> #16 0x00007facf1afa34f in CollationDB::getCollationName (this=0x7facf1f25440 
> <CharInfo::builtinCollationDB_>, co=CharInfo::DefaultCollation, 
> retUnknownAsBlank=0) at ../common/charinfo.cpp:466
> #17 0x00007facf1afa649 in CharInfo::getCollationName 
> (co=CharInfo::DefaultCollation, retUnknownAsBlank=0) at 
> ../common/charinfo.cpp:584
> #18 0x00007facf1b7ecad in NAType::convertTypeToText (text=0x7fad11e8e6c0 "INT 
> UNSIGNED", fs_datatype=0, length=60, precision=0, scale=0, 
> datetimestart=REC_DATE_UNKNOWN, datetimeend=REC_DATE_UNKNOWN, 
> datetimefractprec=0, intervalleadingprec=0, upshift=0, caseinsensitive=0, 
> charSet=CharInfo::ISO88591, collation=CharInfo::DefaultCollation, 
> displaydatatype=0x0, displayCaseSpecific=0) at ../common/NAType.cpp:693
> #19 0x00007face933bc7a in Generator::createColDescs (tableName=0x7facea48af18 
> "EXPLAIN__", columnInfo=0x7face97d4c00 <explainVirtTableColumnInfo>, 
> numCols=14, offset=@0x7fad11e8e8c4: 66, space=0x0) at 
> ../generator/Generator.cpp:1444
> #20 0x00007face93784ff in ExplainFunc::createVirtualTableDesc 
> (this=0x7fad11e8ec90) at ../generator/GenExplain.cpp:2233
> #21 0x00007face944b484 in RelRoot::codeGen (this=0x7facd61a7a50, 
> generator=0x7fad11e90c60) at ../generator/GenRelMisc.cpp:1226
> #22 0x00007face9339d6b in Generator::genCode (this=0x7fad11e90c60, 
> source=0x7facd9cebd08 "select object_name from \"_MD_\".OBJECTS where 
> CATALOG_NAME = 'TRAFODION' and SCHEMA_NAME = '_MD_'\n and OBJECT_NAME = 
> 'OBJECTS' and OBJECT_TYPE = 'BT' for browse access", 
> expr_node=0x7facd61a7a50) at ../generator/Generator.cpp:577
> #23 0x00007facebe6763b in CmpMain::compile (this=0x7fad11e92d60, 
> input_str=0x7facd9cebd08 "select object_name from \"_MD_\".OBJECTS where 
> CATALOG_NAME = 'TRAFODION' and SCHEMA_NAME = '_MD_'\n and OBJECT_NAME = 
> 'OBJECTS' and OBJECT_TYPE = 'BT' for browse access", charset=15, 
> queryExpr=@0x7fad11e92bb8: 0x7facd61a7a50, gen_code=0x7facd9cda718, 
> gen_code_len=0x7facd9cda710, heap=0x7facdfab40b8, phase=CmpMain::END, 
> fragmentDir=0x7fad11e92df0, op=3004, useQueryCache=CmpMain::NORMAL, 
> cacheable=0x7fad11e92ba4, begTime=0x7fad11e92bc0, shouldLog=0) at 
> ../sqlcomp/CmpMain.cpp:2453
> #24 0x00007facebe65170 in CmpMain::sqlcomp (this=0x7fad11e92d60, 
> input_str=0x7facd9cebd08 "select object_name from \"_MD_\".OBJECTS where 
> CATALOG_NAME = 'TRAFODION' and SCHEMA_NAME = '_MD_'\n and OBJECT_NAME = 
> 'OBJECTS' and OBJECT_TYPE = 'BT' for browse access", charset=15, 
> queryExpr=@0x7fad11e92bb8: 0x7facd61a7a50, gen_code=0x7facd9cda718, 
> gen_code_len=0x7facd9cda710, heap=0x7facdfab40b8, phase=CmpMain::END, 
> fragmentDir=0x7fad11e92df0, op=3004, useQueryCache=CmpMain::NORMAL, 
> cacheable=0x7fad11e92ba4, begTime=0x7fad11e92bc0, shouldLog=0) at 
> ../sqlcomp/CmpMain.cpp:1730
> #25 0x00007facebe629e1 in CmpMain::sqlcomp (this=0x7fad11e92d60, input=..., 
> gen_code=0x7facd9cda718, gen_code_len=0x7facd9cda710, heap=0x7facdfab40b8, 
> phase=CmpMain::END, fragmentDir=0x7fad11e92df0, op=3004, 
> useQueryCache=CmpMain::NORMAL) at ../sqlcomp/CmpMain.cpp:826
> #26 0x00007facf1fac799 in CmpStatement::process (this=0x7facd9cd1f88, 
> sqltext=...) at ../arkcmp/CmpStatement.cpp:511
> #27 0x00007facf1f9c1b0 in CmpContext::compileDirect (this=0x7facdf19c090, 
> data=0x7facdfad15d8 "p", data_len=280, outHeap=0x7facdfca6db8, charset=15, 
> op=CmpMessageObj::SQLTEXT_COMPILE, gen_code=@0x7fad11e932a0: 0x0, 
> gen_code_len=@0x7fad11e932ac: 0, parserFlags=0, parentQid=0x0, 
> parentQidLen=0, diagsArea=0x7facdfad16f8) at ../arkcmp/CmpContext.cpp:905
> #28 0x00007facf0671277 in CliStatement::prepare2 (this=0x7facdfac17d0, 
> source=0x7facdfab70e0 "select object_name from \"_MD_\".OBJECTS where 
> CATALOG_NAME = 'TRAFODION' and SCHEMA_NAME = '_MD_'\n and OBJECT_NAME = 
> 'OBJECTS' and OBJECT_TYPE = 'BT' for browse access", diagsArea=..., 
> passed_gen_code=0x0, passed_gen_code_len=0, charset=15, unpackTdbs=1, 
> cliFlags=144) at ../cli/Statement.cpp:1803
> #29 0x00007facf0670368 in CliStatement::prepare (this=0x7facdfac17d0, 
> source=0x7facdfab70e0 "select object_name from \"_MD_\".OBJECTS where 
> CATALOG_NAME = 'TRAFODION' and SCHEMA_NAME = '_MD_'\n and OBJECT_NAME = 
> 'OBJECTS' and OBJECT_TYPE = 'BT' for browse access", diagsArea=..., 
> passed_gen_code=0x0, passed_gen_code_len=0, charset=15, unpackTdbs=1, 
> cliFlags=144) at ../cli/Statement.cpp:1451
> #30 0x00007facf05e6723 in SQLCLI_Prepare (cliGlobals=0x4770970, 
> statement_id=0x4df4ef0, sql_source=0x7fad11e93540) at ../cli/Cli.cpp:5746
> #31 0x00007facf0690e22 in SQL_EXEC_Prepare (statement_id=0x4df4ef0, 
> sql_source=0x7fad11e93540) at ../cli/CliExtern.cpp:5151
> #32 0x00007facf2fa1950 in PREPARE (pSrvrStmt=0x4df48e0) at 
> native/SqlInterface.cpp:1490
> #33 0x00007facf2f9ba29 in SRVR_STMT_HDL::Prepare (this=0x4df48e0, 
> inSqlString=0x7fad11e93800, inStmtType=0, inHoldability=2, inQueryTimeout=0, 
> isISUD=false) at native/CSrvrStmt.cpp:186
> #34 0x00007facf2f9c2f6 in SRVR_STMT_HDL::ExecDirect (this=0x4df48e0, 
> inCursorName=0x0, inSqlString=0x7fad11e93800, inStmtType=0, inSqlStmtType=1, 
> inHoldability=2, inQueryTimeout=0) at native/CSrvrStmt.cpp:411
> #35 0x00007facf2fbce53 in odbc_SQLSvc_ExecDirect_sme_ (objtag_=0x0, 
> call_id_=0x0, exception_=0x7fad11e937e0, dialogueId=65190064, 
> stmtLabel=0x4ab2a80 "STMT1", cursorName=0x0, stmtExplainLabel=0x7facf2fcf394 
> "", stmtType=0, sqlStmtType=1, sqlString=0x7fad11e93800, holdability=2, 
> queryTimeout=0, resultSet=140381306567080, estimatedCost=0x7fad11e93868, 
> outputDesc=0x7fad11e93840, rowsAffected=0x7fad11e93860, 
> sqlWarning=0x7fad11e93850, stmtId=0x7fad11e93830, currentStmtId=0) at 
> native/SrvrOthers.cpp:677
> #36 0x00007facf2fb657e in 
> Java_org_apache_trafodion_jdbc_t2_SQLMXStatement_executeDirect 
> (jenv=0x221d1e0, jobj=0x7fad11e93a10, server=0x0, dialogueId=65190064, 
> txid=0, autoCommit=1 '\001', txnMode=2, stmtLabel=0x7fad11e939d8, 
> cursorName=0x0, sql=0x7fad11e939c8, isSelect=1 '\001', queryTimeout=0, 
> holdability=2, resultSet=0x7fad11e939a8, currentStmtId=0) at 
> native/SQLMXStatement.cpp:144



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to