This is a bug seen by John DeRoo. He ran into a situation when he did a CREATE PROCEDURE and for some reason tdm_udrserv reported an error back during validation of the procedure.
In the executor, we see this stack trace:
#0 GuaConnectionToServer::closePhandle (this=0x7fffe8a245c0) at ../common/IpcGuardian.cpp:1727
here we delete the connection, due to an error we got back from the server – this is not allowed
#1 0x00007ffff4628c99 in IpcGuardianServer::stop (this=0x7fffe8a234f8) at ../common/IpcGuardian.cpp:3626
#2 0x00007ffff460a516 in IpcServer::release (this=0x7fffe8a234f8) at ../common/Ipc.cpp:618
#3 0x00007ffff4d37a36 in ExUdrServer::stop (this=0x7fffe8a23348) at ../executor/ExUdrServer.cpp:675
#4 0x00007ffff4d22ba0 in ExUdrTcb::reportLoadReply (this=0x7fffe8b3e310, loadWasSuccessful=0) at ../executor/ExUdr.cpp:1469
#5 0x00007ffff4d31c95 in UdrClientControlStream::actOnReceive (this=0x7fffe8a25380, conn=0x7fffe8a245c0) at ../executor/ExUdrClientIpc.cpp:737
#6 0x00007ffff4610b6d in IpcMessageStream::internalActOnReceive (this=0x7fffe8a25380, buffer=0x7fffe8a256b8, connection=0x7fffe8a245c0) at ../common/Ipc.cpp:3553
#7 0x00007ffff460ea93 in IpcMessageBuffer::callReceiveCallback (this=0x7fffe8a256b8, conn=0x7fffe8a245c0) at ../common/Ipc.cpp:2427
#8 0x00007ffff46223db in GuaConnectionToServer::wait (this=0x7fffe8a245c0, timeout=0, eventConsumed=0x7fffe959ba98, ipcAwaitiox=0x7fffe8a17328) at ../common/IpcGuardian.cpp:826
Here we wait for the connection
#9 0x00007ffff460d2d3 in IpcSetOfConnections::waitOnSet (this=0x7fffe8a17238, timeout=-1, calledByESP=0, timedout=0x7ffffffe01b0) at ../common/Ipc.cpp:1791
#10 0x00007ffff5f07a80 in IpcAllConnections::waitOnAll (this=0x7fffe8a171d0, timeout=-1, calledByESP=0, timedout=0x7ffffffe01b0, waitTime=0x7ffffffe01a8) at ../common/Ipc.h:3073
#11 0x00007ffff4bcad52 in ex_root_tcb::fetch (this=0x7fffe8b40f28, cliGlobals=0xb90fc0, glob=0x7fffe8b37308, output_desc=0x7fffe8b6c788, diagsArea=@0x7ffffffe0398, timeLimit=-1, newOperation=1, closeCursorOnError=@0x7ffffffe0394) at ../executor/ex_root.cpp:1841
#12 0x00007ffff5ef8119 in CliStatement::fetch (this=0x7fffe8b4ba98, cliGlobals=0xb90fc0, output_desc=0x7fffe8b6c788, diagsArea=..., newOperation=1) at ../cli/Statement.cpp:5000
#13 0x00007ffff5e804b1 in SQLCLI_PerformTasks(CliGlobals *, ULng32, SQLSTMT_ID *, SQLDESC_ID *, SQLDESC_ID *, Lng32, Lng32, typedef __va_list_tag __va_list_tag *, SQLCLI_PTR_PAIRS *, SQLCLI_PTR_PAIRS *) (cliGlobals=0xb90fc0, tasks=4900, statement_id=0x7fffd3542790, input_descriptor=0x0, output_descriptor=0x7fffd3542838, num_input_ptr_pairs=0, num_output_ptr_pairs=0, ap=0x7ffffffe0650, input_ptr_pairs=0x0, output_ptr_pairs=0x0) at ../cli/Cli.cpp:3377
#14 0x00007ffff5e8147d in SQLCLI_Fetch(CliGlobals *, SQLSTMT_ID *, SQLDESC_ID *, Lng32, typedef __va_list_tag __va_list_tag *, SQLCLI_PTR_PAIRS *) (cliGlobals=0xb90fc0, statement_id=0x7fffd3542790, output_descriptor=0x7fffd3542838, num_ptr_pairs=0, ap=0x7ffffffe0650, ptr_pairs=0x0) at ../cli/Cli.cpp:3815
#15 0x00007ffff5f0eed3 in SQL_EXEC_Fetch (statement_id=0x7fffd3542790, output_descriptor=0x7fffd3542838, num_ptr_pairs=0) at ../cli/CliExtern.cpp:2728
#16 0x00007ffff4c3f2dc in ExeCliInterface::fetch (this=0x7ffffffe3260) at ../executor/ExExeUtilCli.cpp:615
#17 0x00007ffff4c4091f in ExeCliInterface::clearExecFetchClose (this=0x7ffffffe3260, inputBuf=0x0, inputBufLen=0, outputBuf=0x0, outputBufLen=0x0) at ../executor/ExExeUtilCli.cpp:1218
#18 0x00007ffff0d9f327 in CmpSeabaseDDL::validateRoutine (this=0x7ffffffe4b60, cliInterface=0x7ffffffe3260, className=0x7fffd353fbc8 "t100", methodName=0x7fffd353fbf8 "T100_io_nn", externalPath=0x7ffffffe2b40 "/opt/home/jderoo/github/trafodion/core/sqf/../sql/regress/rundir/udr/t100.jar", signature=0x7ffffffe0b30 "(Ljava/math/BigDecimal;[Ljava/math/BigDecimal;)V", numSqlParam=2, maxResultSets=0, optionalSig=0x0) at ../sqlcomp/CmpSeabaseDDLroutine.cpp:928
#19 0x00007ffff0d9dc31 in CmpSeabaseDDL::createSeabaseRoutine (this=0x7ffffffe4b60, createRoutineNode=0x7fffd353f7d0, currCatName=..., currSchName=...) at ../sqlcomp/CmpSeabaseDDLroutine.cpp:674
#20 0x00007ffff0d39300 in CmpSeabaseDDL::executeSeabaseDDL (this=0x7ffffffe4b60, ddlExpr=0x7fffd353ff80, ddlNode=0x7fffd353f7d0, currCatName=..., currSchName=...) at ../sqlcomp/CmpSeabaseDDLcommon.cpp:6445
#21 0x00007ffff54959aa in CmpStatement::process (this=0x7fffd3526d08, statement=...) at ../arkcmp/CmpStatement.cpp:911
#22 0x00007ffff5484e6f in CmpContext::compileDirect (this=0x7fffd4d06090, data=0x7fffe8b3acc0 "\200", data_len=312, outHeap=0x7fffe959b100, charset=15, op=CmpMessageObj::PROCESSDDL, gen_code=@0x7ffffffe5388, gen_code_len=@0x7ffffffe5384, parserFlags=0, diagsArea=0x7fffe8b3ae00) at ../arkcmp/CmpContext.cpp:718
#23 0x00007ffff4b5562e in ExDDLTcb::work (this=0x7fffe8b2f518) at ../executor/ex_ddl.cpp:265
#24 0x00007ffff4b729a3 in ex_tcb::sWork (tcb=0x7fffe8b2f518) at ../executor/ex_tcb.h:99
#25 0x00007ffff4cdfb2f in ExSubtask::work (this=0x7fffe8b2fa70) at ../executor/ExScheduler.cpp:751
#26 0x00007ffff4cdeef2 in ExScheduler::work (this=0x7fffe8b2f080, prevWaitTime=0) at ../executor/ExScheduler.cpp:328
#27 0x00007ffff4bc951b in ex_root_tcb::execute (this=0x7fffe8b2faf0, cliGlobals=0xb90fc0, glob=0x7fffe8b3a688, input_desc=0x7fffe8b4e538, diagsArea=@0x7ffffffe69c0, reExecute=0) at ../executor/ex_root.cpp:1029
#28 0x00007ffff5ef77f9 in CliStatement::execute (this=0x7fffe8b398f0, cliGlobals=0xb90fc0, input_desc=0x7fffe8b4e538, diagsArea=..., execute_state=CliStatement::INITIAL_STATE_, fixupOnly=0, cliflags=0) at ../cli/Statement.cpp:4785
#29 0x00007ffff5e800b6 in SQLCLI_PerformTasks(CliGlobals *, ULng32, SQLSTMT_ID *, SQLDESC_ID *, SQLDESC_ID *, Lng32, Lng32, typedef __va_list_tag __va_list_tag *, SQLCLI_PTR_PAIRS *, SQLCLI_PTR_PAIRS *) (cliGlobals=0xb90fc0, tasks=4882, statement_id=0x2949a40, input_descriptor=0x293b850, output_descriptor=0x0, num_input_ptr_pairs=0, num_output_ptr_pairs=0, ap=0x7ffffffe6fb0, input_ptr_pairs=0x0, output_ptr_pairs=0x0) at ../cli/Cli.cpp:3279
#30 0x00007ffff5e80a27 in SQLCLI_Exec(CliGlobals *, SQLSTMT_ID *, SQLDESC_ID *, Lng32, typedef __va_list_tag __va_list_tag *, SQLCLI_PTR_PAIRS *) (cliGlobals=0xb90fc0, statement_id=0x2949a40, input_descriptor=0x293b850, num_ptr_pairs=0, ap=0x7ffffffe6fb0, ptr_pairs=0x0) at ../cli/Cli.cpp:3526
#31 0x00007ffff5f0db5e in SQL_EXEC_Exec (statement_id=0x2949a40, input_descriptor=0x293b850, num_ptr_pairs=0) at ../cli/CliExtern.cpp:2062
#32 0x00007ffff79b54bc in SqlCmd::doExec (sqlci_env=0xb8f7e0, stmt=0x2949a40, prep_stmt=0x2943020, numUnnamedParams=0, unnamedParamArray=0x0, unnamedParamCharSetArray=0x0, handleError=1) at ../sqlci/SqlCmd.cpp:1706
#33 0x00007ffff79b62b2 in SqlCmd::do_execute (sqlci_env=0xb8f7e0, prep_stmt=0x2943020, numUnnamedParams=0, unnamedParamArray=0x0, unnamedParamCharSetArray=0x0, prepcode=0) at ../sqlci/SqlCmd.cpp:2042
#34 0x00007ffff79b85b3 in DML::process (this=0x28053f0, sqlci_env=0xb8f7e0) at ../sqlci/SqlCmd.cpp:2816
#35 0x00007ffff79a2a36 in SqlciEnv::executeCommands (this=0xb8f7e0, input_stmt=@0x7ffffffe89e8) at ../sqlci/SqlciEnv.cpp:847
#36 0x00007ffff79a2177 in SqlciEnv::run (this=0xb8f7e0) at ../sqlci/SqlciEnv.cpp:656
#37 0x0000000000401fee in main (argc=1, argv=0x7ffffffe8ba8) at ../bin/SqlciMain.cpp:319
Note that in frame 0 we delete the connection to the server, while we are waiting on that same connection in stack frame 8. This is not allowed, we need to defer deleting the connection until we know nobody waits for it anymore.
Fix was delivered on March 18 as part of https:/ /review. trafodion. org/1329