forknote / cryptonote-generator

Generate Cryptonote coin with 1 command
104 stars 211 forks source link

segmentation fault wallet linux #91

Open dinastyoffreedom opened 6 years ago

dinastyoffreedom commented 6 years ago

hi I have very strange problem very hard to debug. after last version cryptonote generator I started to have proof of work to weak. comment out the line everything work fine in windows. but not with linux. this is what happen loading a wallet container with linux ubuntu 16 that work right with windows perfectly, it go in Core dump with error SIGSEGV Segmentatiomn fault. is not clear the point debugging after sometime it receive random message : The inferior stopped because it received a sinal from operativ system:signal name SIGSEGV Segmentation fault and move to line: CRYPTO_MAKE_HASHABLE(KeyImage) within file cryto.h program stop to work. We did hard fork some thousands blocks before, and seem that problem happen to old wallets not the news. is not a problem of the Wallet Container. same file is loaded and work with Windows. Same happen to Simplewallet loading old wallet it load but after saving reloading give core dump. But this repeat happen only in Linux. Windows this time work all correctly. if someone have idea , maybe @pmitchev have a solution?

dinastyoffreedom commented 6 years ago

this is the debugger trace immediately after the SIGSEGV...

1 __memcmp_sse2 memcmp.S 223 0x7f9f234ffe3b 2 Crypto::operator== crypto.h 261 0x664be4
3 CryptoNote::SpentOutputDescriptor::operator== TransfersContainer.cpp 157 0x664be4
4 std::equal_to::operator() stl_function.h 357 0x670597
5 boost::multi_index::detail::hashed_index<boost::multi_index::const_mem_fun<CryptoNote::TransactionOutputInformationEx, CryptoNote::SpentOutputDescriptor, &(CryptoNote::TransactionOutputInformationEx::getSpentOutputDescriptor() const)>, CryptoNote::SpentOutputDescriptorHasher, std::equal_to, boost::multi_index::detail::nth_layer<1, CryptoNote::SpentTransactionOutput, boost::multi_index::indexed_by<boost::multi_index::hashed_unique<boost::multiindex::tag<CryptoNote::TransfersContainer::SpentOutputDescriptorIndex, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, boost::multi_index::const_memfun<CryptoNote::TransactionOutputInformationEx, CryptoNote::SpentOutputDescriptor, &(CryptoNote::TransactionOutputInformationEx::getSpentOutputDescriptor() const)>, CryptoNote::SpentOutputDescriptorHasher, mpl::na>, boost::multi_index::hashed_non_unique<boost::multiindex::tag<CryptoNote::TransfersContainer::ContainingTransactionIndex, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, boost::multi_index::const_memfun<CryptoNote::TransactionOutputInformationEx, Crypto::Hash const&, &(CryptoNote::TransactionOutputInformationEx::getTransactionHash() const)>, mpl::na, mpl_::na>, boost::multi_index::hashed_non_unique<boost::multiindex::tag<CryptoNote::TransfersContainer::SpendingTransactionIndex, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, boost::multi_index::const_memfun<CryptoNote::SpentTransactionOutput, Crypto::Hash const&, &(CryptoNote::SpentTransactionOutput::getSpendingTransactionHash() const)>, mpl::na, mpl::na>, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, std::allocator>, boost::mpl::vitem<CryptoNote::TransfersContainer::SpentOutputDescriptorIndex, boost::mpl::vector0<mpl::na>, 0>, boost::multi_index::detail::hashed_unique_tag>::equal_range<CryptoNote::SpentOutputDescriptor, CryptoNote::SpentOutputDescriptorHasher, std::equal_to> hashed_index.hpp 1590 0x670597
6 boost::multi_index::detail::hashed_index<boost::multi_index::const_mem_fun<CryptoNote::TransactionOutputInformationEx, CryptoNote::SpentOutputDescriptor, &(CryptoNote::TransactionOutputInformationEx::getSpentOutputDescriptor() const)>, CryptoNote::SpentOutputDescriptorHasher, std::equal_to, boost::multi_index::detail::nth_layer<1, CryptoNote::SpentTransactionOutput, boost::multi_index::indexed_by<boost::multi_index::hashed_unique<boost::multiindex::tag<CryptoNote::TransfersContainer::SpentOutputDescriptorIndex, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, boost::multi_index::const_memfun<CryptoNote::TransactionOutputInformationEx, CryptoNote::SpentOutputDescriptor, &(CryptoNote::TransactionOutputInformationEx::getSpentOutputDescriptor() const)>, CryptoNote::SpentOutputDescriptorHasher, mpl::na>, boost::multi_index::hashed_non_unique<boost::multiindex::tag<CryptoNote::TransfersContainer::ContainingTransactionIndex, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, boost::multi_index::const_memfun<CryptoNote::TransactionOutputInformationEx, Crypto::Hash const&, &(CryptoNote::TransactionOutputInformationEx::getTransactionHash() const)>, mpl::na, mpl_::na>, boost::multi_index::hashed_non_unique<boost::multiindex::tag<CryptoNote::TransfersContainer::SpendingTransactionIndex, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, boost::multi_index::const_memfun<CryptoNote::SpentTransactionOutput, Crypto::Hash const&, &(CryptoNote::SpentTransactionOutput::getSpendingTransactionHash() const)>, mpl::na, mpl::na>, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, std::allocator>, boost::mpl::vitem<CryptoNote::TransfersContainer::SpentOutputDescriptorIndex, boost::mpl::vector0<mpl::na>, 0>, boost::multi_index::detail::hashed_unique_tag>::equal_range<CryptoNote::SpentOutputDescriptor, CryptoNote::SpentOutputDescriptorHasher, std::equal_to> hashed_index.hpp 516 0x66a60f
7 boost::multi_index::detail::hashed_index<boost::multi_index::const_mem_fun<CryptoNote::TransactionOutputInformationEx, CryptoNote::SpentOutputDescriptor, &(CryptoNote::TransactionOutputInformationEx::getSpentOutputDescriptor() const)>, CryptoNote::SpentOutputDescriptorHasher, std::equal_to, boost::multi_index::detail::nth_layer<1, CryptoNote::SpentTransactionOutput, boost::multi_index::indexed_by<boost::multi_index::hashed_unique<boost::multiindex::tag<CryptoNote::TransfersContainer::SpentOutputDescriptorIndex, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, boost::multi_index::const_memfun<CryptoNote::TransactionOutputInformationEx, CryptoNote::SpentOutputDescriptor, &(CryptoNote::TransactionOutputInformationEx::getSpentOutputDescriptor() const)>, CryptoNote::SpentOutputDescriptorHasher, mpl::na>, boost::multi_index::hashed_non_unique<boost::multiindex::tag<CryptoNote::TransfersContainer::ContainingTransactionIndex, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, boost::multi_index::const_memfun<CryptoNote::TransactionOutputInformationEx, Crypto::Hash const&, &(CryptoNote::TransactionOutputInformationEx::getTransactionHash() const)>, mpl::na, mpl_::na>, boost::multi_index::hashed_non_unique<boost::multiindex::tag<CryptoNote::TransfersContainer::SpendingTransactionIndex, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, boost::multi_index::const_memfun<CryptoNote::SpentTransactionOutput, Crypto::Hash const&, &(CryptoNote::SpentTransactionOutput::getSpendingTransactionHash() const)>, mpl::na, mpl::na>, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na, mpl::na>, std::allocator>, boost::mpl::vitem<CryptoNote::TransfersContainer::SpentOutputDescriptorIndex, boost::mpl::vector0<mpl::na>, 0>, boost::multi_index::detail::hashed_unique_tag>::equal_range hashed_index.hpp 505 0x66a60f
8 CryptoNote::TransfersContainer::addTransactionInputs TransfersContainer.cpp 366 0x66a60f
9 CryptoNote::TransfersContainer::addTransaction TransfersContainer.cpp 217 0x66b581
10 CryptoNote::TransfersSubscription::addTransaction TransfersSubscription.cpp 63 0x662e24
11 CryptoNote::TransfersConsumer::processOutputs TransfersConsumer.cpp 563 0x65ec57
12 CryptoNote::TransfersConsumer::processTransaction TransfersConsumer.cpp 527 0x65ef27
13 CryptoNote::TransfersConsumer::onNewBlocks TransfersConsumer.cpp 323 0x6607f6
14 CryptoNote::BlockchainSynchronizer::updateConsumers BlockchainSynchronizer.cpp 591 0x648ea1
15 CryptoNote::BlockchainSynchronizer::processBlocks BlockchainSynchronizer.cpp 531 0x64a4e5
16 CryptoNote::BlockchainSynchronizer::startBlockchainSync BlockchainSynchronizer.cpp 483 0x64b562
17 CryptoNote::BlockchainSynchronizer::actualizeFutureState BlockchainSynchronizer.cpp 300 0x64e452
18 CryptoNote::BlockchainSynchronizer::workingProcedure BlockchainSynchronizer.cpp 335 0x64e5d7
19 ?? 0x7f9f2402fc80 20 start_thread pthread_create.c 333 0x7f9f238426ba 21 clone clone.S 109 0x7f9f2357841d

the last operation before core dump is _memcmpsse2 memcmp.S 223 0x7f9f234ffe3b

it is a memory leak during a memory compare command

dinastyoffreedom commented 6 years ago

and this is debugger Log after crash

=thread-exited,id="9",group-id="i1" sThread 9 in group i1 exited.

~"\nThread " ~"5 \"walletd\" received signal SIGSEGV, Segmentation fault.\n" ~"[Switching to Thread 0x7fcdd2e1e700 (LWP 8386)]\n" ~"__memcmp_sse2 () at ../sysdeps/x86_64/multiarch/../memcmp.S:223\n" &"223\t../sysdeps/x86_64/multiarch/../memcmp.S: File o directory non esistent.\n" *stopped,reason="signal-received",signal-name="SIGSEGV",signal-meaning="Segmentation fault",frame={addr="0x00007fcdd45b2e3b",func="__memcmp_sse2",args=[],file="../sysdeps/x86_64/multiarch/../memcmp.S",fullname="/build/glibc-Cl5G7W/glibc-2.23/string/../sysdeps/x86_64/multiarch/../memcmp.S",line="223"},thread-id="5",stopped-threads="all",core="2" dNOTE: INFERIOR SPONTANEOUS STOP sStopped. dState changed from InferiorRunOk(8) to InferiorStopOk(11) [master] dHANDLING SIGNAL SIGSEGV sStopped: Segmentation fault (Signal SIGSEGV).