Core dump accessing MD table descriptors
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Trafodion |
Fix Committed
|
High
|
Roberta Marton |
Bug Description
When running one of the regressions tests I get a core dump when authorization is enabled. Turning on authorization causes a read on the OBJECTS table for a histograms table during NATable construction time. The lookup is needed to get the OBJECT_UID associated with a Histograms table.
Core dump:
#0 0x0000003e3bc328a5 in raise () from /lib64/libc.so.6
#1 0x0000003e3bc3400d in abort () from /lib64/libc.so.6
#2 0x00007ffff6e5ba55 in os::abort(bool) () from /opt/home/
#3 0x00007ffff6fdbf87 in VMError:
#4 0x00007ffff6e6096f in JVM_handle_
#5 <signal handler called>
#6 0x0000003e3bd32d5f in __strlen_sse42 () from /lib64/libc.so.6
#7 0x00007fffee92eb45 in Generator:
columnInfo=
indexInfo=
#8 0x00007ffff0e5935e in CmpSeabaseDDL:
objType=
#9 0x00007ffff0e5d792 in CmpSeabaseDDL:
objType=
#10 0x00007fffef522970 in NATableDB::get (this=0x7fffd41
at ../optimizer/
#11 0x00007fffef281c18 in BindWA::getNATable (this=0x7ffffff
inTableDesc
#12 0x00007fffef299c6d in Scan::bindNode (this=0x7fffd45
#13 0x00007fffef28509d in RelExpr:
at ../optimizer/
#14 0x00007fffef291a5b in RelRoot::bindNode (this=0x7fffd45
#15 0x00007ffff0e0fd7d in CmpMain::compile (this=0x7ffffff
input_
gen_
op=3004, useQueryCache=1, cacheable=
. . .
The root cause is that the “indexInfo” structure contains an invalid pointer for hbaseCreateOptions. Here is what indexInfo looks like:
p *indexInfo
$2 = {baseTableName = 0x7fffd458f458 "TRAFODION.
indexName = 0x7fffd458f480 "TRAFODION.
nonKeyColCount = 4, hbaseCreateOptions = 0x69f6bc7069f6bc7 <Address 0x69f6bc7069f6bc7 out of bounds>,
numSaltPartns = -736345216, keyInfoArray = 0x7fffd458ee70, nonKeyInfoArray = 0x7fffd458f260}
When investigating, I see that the OBJECTS table description is stored in the CmpContext during construction. This code sets up the ComTdbVirtTable
struct ComTdbVirtTable
{
const char * baseTableName;
const char * indexName;
Lng32 keytag;
Lng32 isUnique;
Lng32 isExplicit;
Lng32 keyColCount;
Lng32 nonKeyColCount;
const char * hbaseCreateOptions;
Lng32 numSaltPartns; // num of salted partitions this index was created with.
const ComTdbVirtTable
const ComTdbVirtTable
};
When I looked at the code that sets up this structure, hbaseCreateOptions & numSaltPartns were not being initialized.
Changed in trafodion: | |
importance: | Undecided → High |
assignee: | nobody → Roberta Marton (roberta-marton) |
Changed in trafodion: | |
status: | New → In Progress |
This fix was delivered as part of I0445bc9765b60b ecb9adf8c053c05 344395aecaa.