Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Core dump on bit_or #44

Closed
SergeySatskiy opened this issue Aug 26, 2019 · 1 comment
Closed

Core dump on bit_or #44

SergeySatskiy opened this issue Aug 26, 2019 · 1 comment

Comments

@SergeySatskiy
Copy link

SergeySatskiy commented Aug 26, 2019

Excerpt of a stack:
#0 0x00000000007d192f in bm::bvector<bm::mem_alloc<bm::block_allocator, bm::ptr_allocator, bm::alloc_pool<bm::block_allocator, bm::ptr_allocator> > >::bit_or (this=0x7ff9d302e060, bv1=..., bv2=...,
opt_mode=bm::bvector<bm::mem_alloc<bm::block_allocator, bm::ptr_allocator, bm::alloc_pool<bm::block_allocator, bm::ptr_allocator> > >::opt_none) at /export/home/satskyse/ns/bld/include/util/bitset/bm.h:4783
#1 0x00000000007cdb71 in bm::operator|<bm::mem_alloc<bm::block_allocator, bm::ptr_allocator, bm::alloc_pool<bm::block_allocator, bm::ptr_allocator> > > (bv1=..., bv2=...)
at /export/home/satskyse/ns/bld/include/util/bitset/bm.h:2397
#2 0x00000000007c6640 in ncbi::CJobStatusTracker::GetOutdatedReadVacantJobs (this=0x3047998, timeout=..., read_jobs=..., gc_registry=...) at /export/home/satskyse/ns/bld/src/app/netschedule/job_status.cpp:423
#3 0x00000000007fa466 in ncbi::CQueue::NotifyListenersPeriodically (this=0x3047970, current_time=...) at /export/home/satskyse/ns/bld/src/app/netschedule/ns_queue.cpp:3103
#4 0x0000000000887b8f in ncbi::CQueueDataBase::NotifyListeners (this=0x3045c10) at /export/home/satskyse/ns/bld/src/app/netschedule/queue_database.cpp:1439
#5 0x00000000008bf1ca in ncbi::CGetJobNotificationThread::x_DoJob (this=0x30510e0) at /export/home/satskyse/ns/bld/src/app/netschedule/ns_notifications.cpp:1006
#6 0x00000000008bec39 in ncbi::CGetJobNotificationThread::Main (this=0x30510e0) at /export/home/satskyse/ns/bld/src/app/netschedule/ns_notifications.cpp:941
#7 0x0000000000c08767 in ncbi::CThread::Wrapper (arg=0x30510e0) at /export/home/satskyse/ns/bld/src/corelib/ncbithr.cpp:572
#8 0x0000000000c0b1fe in ncbi::ThreadWrapperCaller (arg=0x30510e0) at /export/home/satskyse/ns/bld/src/corelib/ncbithr.cpp:668
#9 0x0000000000c09074 in ncbi::ThreadWrapperCallerImpl (arg=0x30510e0) at /export/home/satskyse/ns/bld/src/corelib/ncbithr.cpp:676
#10 0x00007ff9d46f2dd5 in start_thread () from /lib64/libpthread.so.0
#11 0x00007ff9d3b8102d in clone () from /lib64/libc.so.6

Here is the corresponding source code:
421 TNSBitVector candidates;
422
423 candidates = *m_StatusStor[(int) CNetScheduleAPI::eDone] |
424 *m_StatusStor[(int) CNetScheduleAPI::eFailed] |
425 *m_StatusStor[(int) CNetScheduleAPI::eCanceled];

gdb session:
(gdb) l
2392 template
2393 inline bvector operator| (const bvector& bv1,
2394 const bvector& bv2)
2395 {
2396 bvector ret;
2397 ret.bit_or(bv1, bv2, bvector::opt_none);
2398 return ret;
2399 }
2400
2401 //---------------------------------------------------------------------
(gdb) f 0
#0 0x00000000007d192f in bm::bvector<bm::mem_alloc<bm::block_allocator, bm::ptr_allocator, bm::alloc_pool<bm::block_allocator, bm::ptr_allocator> > >::bit_or (this=0x7ff9d302e060, bv1=..., bv2=...,
opt_mode=bm::bvector<bm::mem_alloc<bm::block_allocator, bm::ptr_allocator, bm::alloc_pool<bm::block_allocator, bm::ptr_allocator> > >::opt_none) at /export/home/satskyse/ns/bld/include/util/bitset/bm.h:4783
4783 bm::word_t** blk_blk_arg1 = (i < top_blocks1) ? blk_root_arg1[i] : 0;
(gdb) l
4778 bm::word_t*** blk_root_arg1 = bv1.blockman_.top_blocks_root();
4779 bm::word_t*** blk_root_arg2 = bv2.blockman_.top_blocks_root();
4780
4781 for (unsigned i = 0; i < top_blocks; ++i)
4782 {
4783 bm::word_t** blk_blk_arg1 = (i < top_blocks1) ? blk_root_arg1[i] : 0;
4784 bm::word_t** blk_blk_arg2 = (i < top_blocks2) ? blk_root_arg2[i] : 0;
4785
4786 if (blk_blk_arg1 == blk_blk_arg2)
4787 {
(gdb) p blk_root_arg1
$1 = (bm::word_t ***) 0x0
(gdb) p top_blocks
$2 = 1
(gdb) p i
$3 = 0
(gdb) p top_blocks1
$4 = 1
(gdb) p top_blocks2
$5 = 1
(gdb)
(gdb) p blk_root_arg1
$10 = (bm::word_t ***) 0x0
(gdb) p blk_root_arg2
$11 = (bm::word_t ***) 0x0

Note: GCC 7.3.0 was used

@tlk00
Copy link
Owner

tlk00 commented Aug 26, 2019

The issue should be resolved in the master, closing

@tlk00 tlk00 closed this as completed Aug 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants