Bug #50853 ndb_restore failing on SPARC/Solaris/gcc
Submitted: 2 Feb 2010 20:14 Modified: 22 Jan 2011 6:11
Reporter: Bernd Ocklin Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S2 (Serious)
Version:mysql-5.1-telco-7.1 OS:Solaris
Assigned to: Jonas Oreland CPU Architecture:Any

[2 Feb 2010 20:14] Bernd Ocklin
Description:
Among others does ndb_binlog_restore fail with bus error in 

ndb_restore during backup restore in Restore.cpp in

bool
TableS::get_auto_data(const TupleS & tuple, Uint32 * syskey, Uint64 * nextid) const

in

memcpy(nextid, attr2.Data.u_int64_value, sizeof(Uint64));

How to repeat:
Fails consistently on SPARC/Solaris/gcc 4.3.4 - have not been able to reproduce this with Sun Studio or on other platforms.
[3 Feb 2010 15:33] Bernd Ocklin
Current function is TableS::get_auto_data
 1781     memcpy(nextid, attr2.Data.u_int64_value, sizeof(Uint64));
current thread: t@1
=>[1] TableS::get_auto_data(this = 0x10043faf0, tuple = CLASS, syskey = 0xffffffff7fffb18c, nextid = 0xffffffff7fffb180), line 1781 in "Restore.cpp"
  [2] BackupRestore::tuple_SYSTAB_0(this = 0x1004018e0, cb = 0x100c8dcb8, tab = CLASS), line 1723 in "consumer_restore.cpp"
  [3] BackupRestore::tuple(this = 0x1004018e0, tup = CLASS, fragmentId = 1U), line 1536 in "consumer_restore.cpp"
  [4] main(argc = 1768059648, argv = 0x4d5953514c3d2f65), line 1338 in "restore_main.cpp"
current thread: t@1
=>[1] TableS::get_auto_data(this = 0x10043faf0, tuple = CLASS, syskey = 0xffffffff7fffb18c, nextid = 0xffffffff7fffb180), line 1781 in "Restore.cpp"
  [2] BackupRestore::tuple_SYSTAB_0(this = 0x1004018e0, cb = 0x100c8dcb8, tab = CLASS), line 1723 in "consumer_restore.cpp"
  [3] BackupRestore::tuple(this = 0x1004018e0, tup = CLASS, fragmentId = 1U), line 1536 in "consumer_restore.cpp"
  [4] main(argc = 1768059648, argv = 0x4d5953514c3d2f65), line 1338 in "restore_main.cpp"
current thread: t@2
=>[1] __pollsys(0x4, 0x0, 0xffffffff7e21fbf0, 0x0, 0x0, 0x0), at 0xffffffff7e8d7cb0 
  [2] _pollsys(0xffffffff7e21fb30, 0x0, 0xffffffff7e21fbf0, 0x0, 0x0, 0xfffc00), at 0xffffffff7e8c6a7c 
  [3] _pselect(0x0, 0xffffffff7e21fb30, 0xffffffff7ea427d0, 0xffffffff7ea427d0, 0xffffffff7e21fbf0, 0x0), at 0xffffffff7e873c50 
  [4] _select(0x0, 0x0, 0x0, 0x0, 0xffffffff7e21fcb0, 0x0), at 0xffffffff7e873ff4 
  [5] my_sleep(m_seconds = 10000U), line 34 in "my_sleep.c"
  [6] TransporterFacade::threadMainReceive(this = 0x10043fc90), line 31 in "NdbSleep.h"
  [7] runReceiveResponse_C(me = 0x10043fc90), line 564 in "TransporterFacade.cpp"
  [8] ndb_thread_wrapper(_ss = 0x100404d20), line 147 in "NdbThread.c"
current thread: t@3
=>[1] __pollsys(0x4, 0x0, 0xffffffff7e11fbf0, 0x0, 0x0, 0x0), at 0xffffffff7e8d7cb0 
  [2] _pollsys(0xffffffff7e11fb30, 0x0, 0xffffffff7e11fbf0, 0x0, 0x0, 0xfffc00), at 0xffffffff7e8c6a7c 
  [3] _pselect(0x0, 0xffffffff7e11fb30, 0xffffffff7ea427d0, 0xffffffff7ea427d0, 0xffffffff7e11fbf0, 0x0), at 0xffffffff7e873c50 
  [4] _select(0x0, 0x0, 0x0, 0x0, 0xffffffff7e11fcb0, 0x0), at 0xffffffff7e873ff4 
  [5] my_sleep(m_seconds = 10000U), line 34 in "my_sleep.c"
  [6] TransporterFacade::threadMainSend(this = 0x10043fc90), line 31 in "NdbSleep.h"
  [7] runSendRequest_C(me = 0x10043fc90), line 529 in "TransporterFacade.cpp"
  [8] ndb_thread_wrapper(_ss = 0x100404d60), line 147 in "NdbThread.c"
current thread: t@4
=>[1] __pollsys(0x4, 0x0, 0xffffffff7e01fa80, 0x0, 0x0, 0x0), at 0xffffffff7e8d7cb0 
  [2] _pollsys(0xffffffff7e01f9c0, 0x0, 0xffffffff7e01fa80, 0x0, 0x0, 0xffffffff7e01f7b4), at 0xffffffff7e8c6a7c 
  [3] _pselect(0x0, 0xffffffff7e01f9c0, 0xffffffff7ea427d0, 0xffffffff7ea427d0, 0xffffffff7e01fa80, 0x0), at 0xffffffff7e873c50 
  [4] _select(0x0, 0x0, 0x0, 0x0, 0xffffffff7e01fb40, 0xffffffff7e01fb1c), at 0xffffffff7e873ff4 
  [5] my_sleep(m_seconds = 100000U), line 34 in "my_sleep.c"
  [6] TransporterRegistry::start_clients_thread(this = 0x1004373c0), line 31 in "NdbSleep.h"
  [7] run_start_clients_C(me = 0x1004373c0), line 1422 in "TransporterRegistry.cpp"
  [8] ndb_thread_wrapper(_ss = 0x100404da0), line 147 in "NdbThread.c"
current thread: t@5
=>[1] __pollsys(0x4, 0x0, 0xffffffff7df1fb60, 0x0, 0x0, 0x0), at 0xffffffff7e8d7cb0 
  [2] _pollsys(0xffffffff7df1faa0, 0x0, 0xffffffff7df1fb60, 0x0, 0x0, 0xfffc00), at 0xffffffff7e8c6a7c 
  [3] _pselect(0x0, 0xffffffff7df1faa0, 0xffffffff7ea427d0, 0xffffffff7ea427d0, 0xffffffff7df1fb60, 0x0), at 0xffffffff7e873c50 
  [4] _select(0x0, 0x0, 0x0, 0x0, 0xffffffff7df1fc20, 0x0), at 0xffffffff7e873ff4 
  [5] my_sleep(m_seconds = 100000U), line 34 in "my_sleep.c"
  [6] ClusterMgr::threadMain(this = 0x1004579e0), line 31 in "NdbSleep.h"
  [7] runClusterMgr_C(me = 0x1004579e0), line 50 in "ClusterMgr.cpp"
  [8] ndb_thread_wrapper(_ss = 0x100404de0), line 147 in "NdbThread.c"
current thread: t@6
=>[1] __pollsys(0x4, 0x0, 0xffffffff7de1bbd0, 0x0, 0x0, 0x0), at 0xffffffff7e8d7cb0 
  [2] _pollsys(0xffffffff7de1bb00, 0x0, 0xffffffff7de1bbd0, 0x0, 0x0, 0x0), at 0xffffffff7e8c6a7c 
  [3] _pselect(0x0, 0xffffffff7de1bb00, 0xffffffff7ea427d0, 0xffffffff7de1bcc0, 0xffffffff7de1bbd0, 0x0), at 0xffffffff7e873c50 
  [4] _select(0x1, 0xffffffff7de1dcc0, 0x0, 0xffffffff7de1bcc0, 0xffffffff7de1bcb0, 0xffffffff7de1dcc0), at 0xffffffff7e873ff4 
  [5] SocketServer::doAccept(this = 0x100452330), line 189 in "SocketServer.cpp"
  [6] SocketServer::doRun(this = 0x100452330), line 279 in "SocketServer.cpp"
  [7] socketServerThread_C(_ss = 0x100452330), line 231 in "SocketServer.cpp"
  [8] ndb_thread_wrapper(_ss = 0x100404e20), line 147 in "NdbThread.c"
[21 Jan 2011 14:33] Jonas Oreland
UPDATE: compiling with CXXFLAGS="-fno-builtin" removes problem
[22 Jan 2011 6:11] Jonas Oreland
Close this as not a bug
as it's a gcc-bug
with ok work-around