Description:
ndbd crashes at ndbrequire in function Dbtc::sendSignalErrorRefuseLab. Probably due to that a part of the transaction has timed out.
void Dbtc::sendSignalErrorRefuseLab(Signal* signal)
{
ndbassert(false);
ptrGuard(apiConnectptr);
if (apiConnectptr.p->apiConnectstate != CS_DISCONNECTED) {
jam();
ndbrequire(false); <<=================
signal->theData[0] = apiConnectptr.p->ndbapiConnect;
signal->theData[1] = signal->theData[ttransid_ptr];
signal->theData[2] = signal->theData[ttransid_ptr + 1];
signal->theData[3] = ZSIGNAL_ERROR;
sendSignal(apiConnectptr.p->ndbapiBlockref, GSN_TCROLLBACKREP,
signal, 4, JBB);
}
}//Dbtc::sendSignalErrorRefuseLab()
How to repeat:
> ./test-wisconsin --create-options=type=ndb
> --socket=/usr/local/mysql/var/mysql.sock
>
> Testing server 'MySQL 4.1.4 gamma/' at 2004-08-24 22:02:53
>
> Wisconsin benchmark test
>
> Time for create_table (3): 9 wallclock secs ( 0.00 usr 0.00 sys +
> 0.00 cusr 0.00 csys = 0.00 CPU)
>
> Inserting data
> Time to insert (31000): 172 wallclock secs ( 3.07 usr 1.45 sys + 0.00
> cusr 0.00 csys = 4.52 CPU)
> Time to delete_big (1): 7 wallclock secs ( 0.00 usr 0.00 sys + 0.00
> cusr 0.00 csys = 0.00 CPU)
>
> Running the actual benchmark
> Error occured with execute(select t.*,B.unique1 AS Bunique1,B.unique2 AS
> Bunique2,B.two AS Btwo,B.four AS Bfour,B.ten AS Bten,B.twenty AS
> Btwenty,B.hundred AS Bhundred,B.thousand AS Bthousand,B.twothousand AS
> Btwothousand,B.fivethous AS Bfivethous,B.tenthous AS Btenthous,B.odd AS
> Bodd,B.even AS Beven,B.stringu1 AS Bstringu1,B.stringu2 AS
> Bstringu2,B.string4 AS Bstring4 from tenk1 t, Bprime B where t.unique2
> = B.unique2)
> -> Can't lock file (errno: 4009)
>
>
>
ndb_3_error.log:
Date/Time: Tuesday 24 August 2004 - 22:18:28
Type of error: error
Message: Internal program error (failed ndbrequire)
Fault ID: 2341
Problem data: DbtcMain.cpp
Object of reference: DBTC (Line: 1320) 0x0000000a
ProgramName: NDB Kernel
ProcessID: 4097
TraceFile: ndb_3_trace.log.1
***EOM***
And same with ndb_2_error.log
Date/Time: Tuesday 24 August 2004 - 22:18:26
Type of error: error
Message: Internal program error (failed ndbrequire)
Fault ID: 2341
Problem data: DbtcMain.cpp
Object of reference: DBTC (Line: 1320) 0x0000000a
ProgramName: NDB Kernel
ProcessID: 24307
TraceFile: ndb_2_trace.log.1
***EOM***
The trace file ndb_3_trace.log.1
DBTC 003892
DBTUP 002032
DBTC 010991 011937
DBTC 011178 011264 011201
DBTC 002383 002455 001391 001319 001320
--------------- Signal ----------------
r.bn: 245 "DBTC", r.proc: 3, r.sigId: 1985614 gsn: 523 "INDXATTRINFO"
prio: 1
s.bn: 32769 "API", s.proc: 11, s.sigId: 0 length: 14 trace: 1 #sec: 0
fragInf: 0
H'00000020 H'0000797e H'00100b00 H'00050000 H'00060000 H'00070000
H'00080000 H'00090000 H'000a0000 H'000b0000 H'000c0000 H'000d0000
H'000e0000 H'000f0000
--------------- Signal ----------------
r.bn: 245 "DBTC", r.proc: 3, r.sigId: 1985613 gsn: 519 "TCINDXREQ" prio:
1
s.bn: 32769 "API", s.proc: 11, s.sigId: 0 length: 14 trace: 1 #sec: 0
fragInf: 0
apiConnectPtr: H'00000020, senderData: H'00008cbc
Operation: Read, Flags: Start Execute
indexLen: 1, attrLen: 16, AI in this: 5, indexId: 46, indexSchemaVer:
1, API Ver: 0
transId(1, 2): (H'0000797e, H'00100b00)
-- Variable Data --
H'00000100 H'00000000 H'00010000 H'00020000 H'00030000 H'00040000
--------------- Signal ----------------
Suggested fix:
Handle problem without crashing.
Description: ndbd crashes at ndbrequire in function Dbtc::sendSignalErrorRefuseLab. Probably due to that a part of the transaction has timed out. void Dbtc::sendSignalErrorRefuseLab(Signal* signal) { ndbassert(false); ptrGuard(apiConnectptr); if (apiConnectptr.p->apiConnectstate != CS_DISCONNECTED) { jam(); ndbrequire(false); <<================= signal->theData[0] = apiConnectptr.p->ndbapiConnect; signal->theData[1] = signal->theData[ttransid_ptr]; signal->theData[2] = signal->theData[ttransid_ptr + 1]; signal->theData[3] = ZSIGNAL_ERROR; sendSignal(apiConnectptr.p->ndbapiBlockref, GSN_TCROLLBACKREP, signal, 4, JBB); } }//Dbtc::sendSignalErrorRefuseLab() How to repeat: > ./test-wisconsin --create-options=type=ndb > --socket=/usr/local/mysql/var/mysql.sock > > Testing server 'MySQL 4.1.4 gamma/' at 2004-08-24 22:02:53 > > Wisconsin benchmark test > > Time for create_table (3): 9 wallclock secs ( 0.00 usr 0.00 sys + > 0.00 cusr 0.00 csys = 0.00 CPU) > > Inserting data > Time to insert (31000): 172 wallclock secs ( 3.07 usr 1.45 sys + 0.00 > cusr 0.00 csys = 4.52 CPU) > Time to delete_big (1): 7 wallclock secs ( 0.00 usr 0.00 sys + 0.00 > cusr 0.00 csys = 0.00 CPU) > > Running the actual benchmark > Error occured with execute(select t.*,B.unique1 AS Bunique1,B.unique2 AS > Bunique2,B.two AS Btwo,B.four AS Bfour,B.ten AS Bten,B.twenty AS > Btwenty,B.hundred AS Bhundred,B.thousand AS Bthousand,B.twothousand AS > Btwothousand,B.fivethous AS Bfivethous,B.tenthous AS Btenthous,B.odd AS > Bodd,B.even AS Beven,B.stringu1 AS Bstringu1,B.stringu2 AS > Bstringu2,B.string4 AS Bstring4 from tenk1 t, Bprime B where t.unique2 > = B.unique2) > -> Can't lock file (errno: 4009) > > > ndb_3_error.log: Date/Time: Tuesday 24 August 2004 - 22:18:28 Type of error: error Message: Internal program error (failed ndbrequire) Fault ID: 2341 Problem data: DbtcMain.cpp Object of reference: DBTC (Line: 1320) 0x0000000a ProgramName: NDB Kernel ProcessID: 4097 TraceFile: ndb_3_trace.log.1 ***EOM*** And same with ndb_2_error.log Date/Time: Tuesday 24 August 2004 - 22:18:26 Type of error: error Message: Internal program error (failed ndbrequire) Fault ID: 2341 Problem data: DbtcMain.cpp Object of reference: DBTC (Line: 1320) 0x0000000a ProgramName: NDB Kernel ProcessID: 24307 TraceFile: ndb_2_trace.log.1 ***EOM*** The trace file ndb_3_trace.log.1 DBTC 003892 DBTUP 002032 DBTC 010991 011937 DBTC 011178 011264 011201 DBTC 002383 002455 001391 001319 001320 --------------- Signal ---------------- r.bn: 245 "DBTC", r.proc: 3, r.sigId: 1985614 gsn: 523 "INDXATTRINFO" prio: 1 s.bn: 32769 "API", s.proc: 11, s.sigId: 0 length: 14 trace: 1 #sec: 0 fragInf: 0 H'00000020 H'0000797e H'00100b00 H'00050000 H'00060000 H'00070000 H'00080000 H'00090000 H'000a0000 H'000b0000 H'000c0000 H'000d0000 H'000e0000 H'000f0000 --------------- Signal ---------------- r.bn: 245 "DBTC", r.proc: 3, r.sigId: 1985613 gsn: 519 "TCINDXREQ" prio: 1 s.bn: 32769 "API", s.proc: 11, s.sigId: 0 length: 14 trace: 1 #sec: 0 fragInf: 0 apiConnectPtr: H'00000020, senderData: H'00008cbc Operation: Read, Flags: Start Execute indexLen: 1, attrLen: 16, AI in this: 5, indexId: 46, indexSchemaVer: 1, API Ver: 0 transId(1, 2): (H'0000797e, H'00100b00) -- Variable Data -- H'00000100 H'00000000 H'00010000 H'00020000 H'00030000 H'00040000 --------------- Signal ---------------- Suggested fix: Handle problem without crashing.