Comments (11)
Here is part of valgrind output:
==6038==
valgrind: m_mallocfree.c:307 (get_bszB_as_is): Assertion 'bszB_lo == bszB_hi' failed.
valgrind: Heap block lo/hi size mismatch: lo = 46656, hi = 10845964556480854131.
This is probably caused by your program erroneously writing past the
end of a heap block and corrupting heap metadata. If you fix any
invalid writes reported by Memcheck, this assertion failure will
probably go away. Please try that before reporting this as a bug.
host stacktrace:
==6038== at 0x58095D7A: show_sched_status_wrk (m_libcassert.c:355)
==6038== by 0x58095E84: report_and_quit (m_libcassert.c:426)
==6038== by 0x58096011: vgPlain_assert_fail (m_libcassert.c:492)
==6038== by 0x580A4351: get_bszB_as_is (m_mallocfree.c:305)
==6038== by 0x580A4351: get_bszB (m_mallocfree.c:315)
==6038== by 0x580A4351: mergeWithFreeNeighbours (m_mallocfree.c:2061)
==6038== by 0x58053603: release_oldest_block (mc_malloc_wrappers.c:169)
==6038== by 0x58053603: create_MC_Chunk (mc_malloc_wrappers.c:212)
==6038== by 0x580544EE: vgMemCheck_new_block (mc_malloc_wrappers.c:388)
==6038== by 0x580544EE: vgMemCheck___builtin_new (mc_malloc_wrappers.c:417)
==6038== by 0x580FCE3E: do_client_request (scheduler.c:1921)
==6038== by 0x580FCE3E: vgPlain_scheduler (scheduler.c:1488)
==6038== by 0x5810DC96: thread_wrapper (syswrap-linux.c:103)
==6038== by 0x5810DC96: run_a_thread_NORETURN (syswrap-linux.c:156)
sched status:
running_tid=1
Thread 1: status = VgTs_Runnable (lwpid 6038)
==6038== at 0x4C2E216: operator new(unsigned long) (vg_replace_malloc.c:334)
==6038== by 0x490A21: allocate (new_allocator.h:104)
==6038== by 0x490A21: allocate (alloc_traits.h:491)
==6038== by 0x490A21: _M_get_node (stl_tree.h:491)
==6038== by 0x490A21: _M_create_node<std::pair<long unsigned int, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry> > (stl_tree.h:545)
==6038== by 0x490A21: operator()<std::pair<long unsigned int, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry> > (stl_tree.h:459)
==6038== by 0x490A21: M_insert<std::pair<long unsigned int, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry>, std::_Rb_tree<long unsigned int, std::pair<long unsigned int const, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry>, std::_Select1st<std::pair<long unsigned int const, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry> >, std::less, std::allocator<std::pair<long unsigned int const, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry> > >::_Alloc_node> (stl_tree.h:1509)
==6038== by 0x490A21: std::pair<std::_Rb_tree_iterator<std::pair<unsigned long const, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry> >, bool> std::_Rb_tree<unsigned long, std::pair<unsigned long const, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry>, std::_Select1st<std::pair<unsigned long const, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry> >, std::less, std::allocator<std::pair<unsigned long const, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry> > >::_M_insert_unique<std::pair<unsigned long, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry> >(std::pair<unsigned long, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry>&&) (stl_tree.h:1870)
==6038== by 0x4911D1: insert<std::pair<long unsigned int, SwappedVectorCryptoNote::Blockchain::BlockEntry::ItemEntry>, void> (stl_map.h:621)
==6038== by 0x4911D1: SwappedVectorCryptoNote::Blockchain::BlockEntry::prepare(unsigned long) (SwappedVector.h:404)
==6038== by 0x491F25: SwappedVectorCryptoNote::Blockchain::BlockEntry::operator[](unsigned long) (SwappedVector.h:300)
==6038== by 0x4BB0B3: transactionByIndex (Blockchain.cpp:1819)
==6038== by 0x4BB0B3: scanOutputKeysForIndexes<CryptoNote::Blockchain::check_tx_input(const CryptoNote::KeyInput&, const Crypto::Hash&, const std::vectorCrypto::Signature&, uint32_t*)::outputs_visitor> (Blockchain.h:364)
==6038== by 0x4BB0B3: CryptoNote::Blockchain::check_tx_input(CryptoNote::KeyInput const&, Crypto::Hash const&, std::vector<Crypto::Signature, std::allocatorCrypto::Signature > const&, unsigned int*) (Blockchain.cpp:1634)
==6038== by 0x4BB9FF: CryptoNote::Blockchain::checkTransactionInputs(CryptoNote::Transaction const&, Crypto::Hash const&, unsigned int*) (Blockchain.cpp:1552)
==6038== by 0x4BBDEB: checkTransactionInputs (Blockchain.cpp:1530)
from karbowanec.
We believe we may be facing an enemy attack from Niobio
niobiod.log
, this can affect Karbowanec, follow the daemon's log.
from karbowanec.
Could it be due to different versions?
from karbowanec.
We found a memory leak on Swapped Vector that in some cases causes the daemon to crash. It seems this problem has been exploited on our network by sending a transaction with very high mixin (701).
We made a workaround for it until we have a definitive solution, fixing the cache management of Swapped Vector and limiting the value of mixin.
The workaround can be found here
https://github.com/raphaelpereira/niobio-node-daemon/commits/master
from karbowanec.
from karbowanec.
Thanks for an explanation, that is really interesting. Big mixin itself is not a problem when tx size is within limits.
from karbowanec.
Was it 32 bit system or 64 bit that crashed?
from karbowanec.
crashed at the same time in all pools, all of them were LINUX 64 Bits, maybe it could also be transactions with a very high number of IMPUTS.
from karbowanec.
Our devs are telling me that's not a mem leak, that's heap corruption
from karbowanec.
Sorry to hijack your issue's page. You can close this issue as you don't really have it :)
I would like to thank you for your kind help and let the reference to our (for now in testing) fix, it may be useful in future.
https://github.com/niobio-cash/niobio-node-daemon/tree/fixIssue14
Any comments on the code fix would be appreciated!
https://github.com/niobio-cash/niobio-node-daemon/issues/14
from karbowanec.
No problem, we will try to investigate and probably will implement your fix just in case.
from karbowanec.
Related Issues (20)
- Asynchronous dns checkpoints unstable
- Add 'extra' field to 'transfer' RPC simplewallet's method
- Add update notification to CLI daemon
- Replace outputs in simplewallet from logger to console HOT 1
- Add password confirmation to simplewallet HOT 1
- Random crash in miner HOT 1
- ERROR Internal error: have missed missed_tx_id.size()=? HOT 5
- warning: get_tx_outputs_gindexs failed to find transaction with id = HOT 2
- v1.9.7 failed to start with Internal error: block at height 700937 has invalid version 5, expected 6 HOT 2
- Undefined symbols for architecture arm64: "_getmcontext" "_setmcontext" for Mac M1 CPU HOT 7
- Log hashrate
- Crashing on certain reorgs HOT 2
- Upgrade Private Keys to Falcon Cryptography HOT 2
- Failed to save config to file
- REDUCE TRANSACTION FEES to 0.00000420
- Wallet Encryption is Bypassed with using the Mneumonic Phrase HOT 4
- Create Document inside KARBO wallet instructions Detailing how to use OPENSSL on Linux to Encrypt Mneumonic Phrase inside a Linux Notepad File HOT 2
- (SOLVED) Karbowanec is on the Winning Pathway HOT 4
- Modern CPU's seem to require Disabling Hyper-Threading and EIST to Fix Blockchain Fork and Wallet Crash! Updated! HOT 2
- Wallet Only While Mining Constantly Crashes and or Forks a Block and won't Remove the mined "Dead Block" HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from karbowanec.