tlk00 / BitMagic

BitMagic Library
http://bitmagic.io
Other
412 stars 48 forks source link

Core dump on bit_or #44

Closed SergeySatskiy closed 5 years ago

SergeySatskiy commented 5 years ago

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_rootarg1 = bv1.blockman.top_blocks_root(); 4779 bm::word_t blk_rootarg2 = 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 commented 5 years ago

The issue should be resolved in the master, closing