Bug #75038 assert(should_be_empty) in \'reset_send_buffer\'
Submitted: 28 Nov 2014 9:42 Modified: 2 Aug 2016 8:55
Reporter: Ole John Aske Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S2 (Serious)
Version:7.3.8 OS:Any
Assigned to: CPU Architecture:Any

[28 Nov 2014 9:42] Ole John Aske
Description:
Running debug compiled code we sometimes fails in an assert(should_be_empty)
in the transporter reset code. This happens at a place where we  assume
that the transporter buffers should already have been reset.

This could be an indication of garbage, or stray signals, being
written to the transporter buffers. This is potentially a 
very serious issue if these buffered data is actually sent
by the transporters.

0  0xfdf59265 in _lwp_kill () from /lib/libc.so.1
#1  0xfdf5218a in thr_kill () from /lib/libc.so.1
#2  0xfdf00fed in raise () from /lib/libc.so.1
#3  0xfded875d in abort () from /lib/libc.so.1
#4  0xfded8add in _assert () from /lib/libc.so.1
#5  0xfe18da9c in TransporterFacade::reset_send_buffer (this=0x818b6d8, node=10, should_be_empty=true)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/TransporterFacade.cpp:2866
#6  0xfe19eb89 in TransporterRegistry::report_connect (this=0x819ab20, recvdata=..., node_id=10)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/common/transporter/TransporterRegistry.cpp:1909
#7  0xfe19f074 in TransporterRegistry::update_connections (this=0x819ab20, recvdata=...)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/common/transporter/TransporterRegistry.cpp:2021
#8  0xfe18e3e7 in TransporterRegistry::update_connections (this=0x819ab20)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/include/transporter/TransporterRegistry.hpp:691
#9  0xfe1891bc in TransporterFacade::external_poll (this=0x818b6d8, wait_time=10)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/TransporterFacade.cpp:932
#10 0xfe18ca56 in TransporterFacade::do_poll (this=0x818b6d8, clnt=0xaaef020, wait_time=10, is_poll_owner=false, stay_poll_owner=false)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/TransporterFacade.cpp:2422
#11 0xfe1793c6 in trp_client::do_poll (this=0xaaef020, to=10)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/trp_client.cpp:127
#12 0xfe179f6a in PollGuard::wait_for_input (this=0xfdc6fba4, wait_time=10)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/trp_client.cpp:390
#13 0xfe0f2c7f in Ndb::waitCompletedTransactions (this=0xaaeef20, aMilliSecondsToWait=360000, noOfEventsToWaitFor=1, poll_guard=0xfdc6fba4)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/Ndbif.cpp:1370
#14 0xfe0f2e2e in Ndb::poll_trans (this=0xaaeef20, aMillisecondNumber=360000, minNoOfEventsToWakeup=1, pg=0xfdc6fba4)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/Ndbif.cpp:1431
#15 0xfe0f2d9c in Ndb::sendPollNdb (this=0xaaeef20, aMillisecondNumber=360000, minNoOfEventsToWakeup=1, forceSend=0)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/Ndbif.cpp:1416
#16 0xfe0f5e6a in NdbTransaction::executeNoBlobs (this=0xaafb3a8, aTypeOfExec=NdbTransaction::NoCommit, 
    abortOption=NdbOperation::AbortOnError, forceSend=0)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/NdbTransaction.cpp:590
#17 0xfe0f54d9 in NdbTransaction::execute (this=0xaafb3a8, aTypeOfExec=NdbTransaction::NoCommit, abortOption=NdbOperation::AbortOnError, 
    forceSend=0) at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/ndbapi/NdbTransaction.cpp:305
#18 0x08082cd4 in NdbTransaction::execute (this=0xaafb3a8, execType=NoCommit, abortOption=CommitIfFailFree, force=0)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/include/ndbapi/NdbTransaction.hpp:349
#19 0x0809d73e in HugoOperations::execute_NoCommit (this=0xfdc6fdcc, pNdb=0xaaeef20, eao=CommitIfFailFree)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/test/src/HugoOperations.cpp:699
#20 0x0806d26c in runPkReadPkUpdateUntilStopped (ctx=0x8197860, step=0x8171dd8)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/test/ndbapi/testNodeRestart.cpp:447
#21 0x0808ff55 in NDBT_Step::execute (this=0x8171dd8, ctx=0x8197860)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/test/src/NDBT_Test.cpp:343
#22 0x08090ec5 in runStep (s=0x8171dd8) at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/test/src/NDBT_Test.cpp:537
#23 0x08090f4e in runStep_C (s=0x8171dd8) at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/test/src/NDBT_Test.cpp:552
#24 0xfe1d8d88 in ndb_thread_wrapper (_ss=0xaa470c8)
    at /export/home/tmp/mysql/mysql-5.6-cluster-7.3/storage/ndb/src/common/portlib/NdbThread.c:202
#25 0xfdf5444c in _thrp_setup () from /lib/libc.so.1
#26 0xfdf546f0 in ?? () from /lib/libc.so.1
#27 0x00000000 in ?? ()

How to repeat:
Run the AutoTest client:

./testNodeRestart -l 100 -n MixedPkReadPkUpdate    

Require debug compiled code, and maybe even a 4 node config.
[2 Aug 2016 8:55] Jon Stephens
Fixed in NDB 7.4.13 and 7.5.4.

This appears to be debug issue, nothing to document for end users.

Closed.