-
Notifications
You must be signed in to change notification settings - Fork 177
Fix bugs on superblock.cc for O_DIRECT #10
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
Conversation
For users using O_DIRECT flag, superblock also should call pread/pwrite with aligned memory.
|
Thanks for the patch! If this is your first code contribution to Couchbase, you'll need to fill out our Contributor License Agreement, which basically just declares that you created the code and are allowing us to release it under the Apache license. |
|
Thank you for guiding me. I've filled out CLA with my name, 'Gihwan Oh'. |
Change-Id: I98a94cd9cc7acfce02bdf15b67e0cf9ace95e0e0 14:15:16 WARNING: ThreadSanitizer: data race (pid=68020) 14:15:16 Write of size 8 at 0x7d6400163b28 by thread T15 (mutexes: write M13): 14:15:16 #0 _fname_create(filemgr*) /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/blockcache.cc:812 (e2etest+0x0000004d5c60) 14:15:16 #1 bcache_write /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/blockcache.cc:1062 (e2etest+0x0000004d526d) 14:15:16 #2 filemgr_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/filemgr.cc:2043 (e2etest+0x0000004f1a9b) 14:15:16 #3 _docio_read_through_buffer(docio_handle*, unsigned long, err_log_callback*, bool) /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/docio.cc:691 (e2etest+0x0000004ea770) 14:15:16 #4 docio_read_doc /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/docio.cc:1212 (e2etest+0x0000004eb86f) 14:15:16 #5 fdb_kvs_header_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/kv_instance.cc:1123 (e2etest+0x000000522e4c) 14:15:16 #6 _fdb_open /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:1720 (e2etest+0x0000004fa137) 14:15:16 #7 fdb_check_file_reopen /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:2800 (e2etest+0x0000004fcb77) 14:15:16 #8 fdb_set /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:3607 (e2etest+0x00000050372f) 14:15:16 #9 fdb_set_kv <null> (e2etest+0x0000004d2a29) 14:15:16 #10 update_thread(void*) crtstuff.c (e2etest+0x0000004c9d26) 14:15:16 14:15:16 Previous read of size 8 at 0x7d6400163b28 by thread T14: 14:15:16 #0 bcache_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/blockcache.cc:924 (e2etest+0x0000004d4ddf) 14:15:16 #1 filemgr_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/filemgr.cc:1976 (e2etest+0x0000004f14f1) 14:15:16 #2 _docio_read_through_buffer(docio_handle*, unsigned long, err_log_callback*, bool) /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/docio.cc:691 (e2etest+0x0000004ea770) 14:15:16 #3 docio_read_doc /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/docio.cc:1212 (e2etest+0x0000004eb86f) 14:15:16 #4 fdb_kvs_header_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/kv_instance.cc:1123 (e2etest+0x000000522e4c) 14:15:16 #5 _fdb_open /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:1720 (e2etest+0x0000004fa137) 14:15:16 #6 fdb_check_file_reopen /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:2800 (e2etest+0x0000004fcb77) 14:15:16 #7 fdb_set /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:3607 (e2etest+0x00000050372f) 14:15:16 #8 fdb_set_kv <null> (e2etest+0x0000004d2a29) 14:15:16 #9 e2e_fdb_set_person crtstuff.c (e2etest+0x0000004d0392) 14:15:16 #10 seq_writer_thread(void*) crtstuff.c (e2etest+0x0000004c9c62) Reviewed-on: http://review.couchbase.org/62820 Tested-by: buildbot <[email protected]> Reviewed-by: Chiyoung Seo <[email protected]>
16:45:42 ==68667==ERROR: AddressSanitizer: heap-use-after-free on address 0x61f0000088c0 at pc 0x0000005452bb bp 0x7fffdf556050 sp 0x7fffdf556048 16:45:42 READ of size 8 at 0x61f0000088c0 thread T0 16:45:42 #0 0x5452ba in FileMgr::getNewFile() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.h:636:16 16:45:42 couchbase#1 0x5452ba in FileMgr::updateFilePointers() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.cc:1528 16:45:42 couchbase#2 0x5452ba in FileMgr::close(FileMgr*, bool, char const*, ErrLogCallback*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.cc:1677 16:45:42 couchbase#3 0x569bc3 in _fdb_close /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/forestdb.cc:7434:10 16:45:42 couchbase#4 0x5b3961 in _fdb_kvs_close(FdbKvsHandle*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/kv_instance.cc:1470:10 16:45:42 couchbase#5 0x5b3961 in fdb_kvs_close /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/kv_instance.cc:1537 16:45:42 couchbase#6 0x4f9323 in FileHandlePool::~FileHandlePool() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:129:26 16:45:42 couchbase#7 0x4f94ed in FileHandlePool::~FileHandlePool() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:124:31 16:45:42 couchbase#8 0x4f56de in test_writes_on_kv_stores_with_compaction(unsigned short, int) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:815:5 16:45:42 couchbase#9 0x4f5f9a in main /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:880:5 16:45:42 couchbase#10 0x2b069543776c in __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 16:45:42 couchbase#11 0x447558 in _start (/home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/build/forestdb/tests/usecase/usecase_test+0x447558) 16:45:42 16:45:42 0x61f0000088c0 is located 2624 bytes inside of 3064-byte region [0x61f000007e80,0x61f000008a78) 16:45:42 freed by thread T47 here: 16:45:42 #0 0x4edf82 in operator delete(void*) (/home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/build/forestdb/tests/usecase/usecase_test+0x4edf82) 16:45:42 couchbase#1 0x541095 in FileMgr::freeFunc(FileMgr*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.cc:1758:5 16:45:42 couchbase#2 0x525c7c in CompactorThread::run() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/compactor.cc:398:17 16:45:42 couchbase#3 0x524de8 in launch_compactor_thread(void*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/compactor.cc:261:9 16:45:42 couchbase#4 0x2b06941a4e99 in start_thread /build/buildd/eglibc-2.15/nptl/pthread_create.c:308 Change-Id: Ifb5eb2255953b569891ebb7e59f36d902dad1152
16:45:42 ==68667==ERROR: AddressSanitizer: heap-use-after-free on address 0x61f0000088c0 at pc 0x0000005452bb bp 0x7fffdf556050 sp 0x7fffdf556048 16:45:42 READ of size 8 at 0x61f0000088c0 thread T0 16:45:42 #0 0x5452ba in FileMgr::getNewFile() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.h:636:16 16:45:42 couchbase#1 0x5452ba in FileMgr::updateFilePointers() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.cc:1528 16:45:42 couchbase#2 0x5452ba in FileMgr::close(FileMgr*, bool, char const*, ErrLogCallback*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.cc:1677 16:45:42 couchbase#3 0x569bc3 in _fdb_close /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/forestdb.cc:7434:10 16:45:42 couchbase#4 0x5b3961 in _fdb_kvs_close(FdbKvsHandle*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/kv_instance.cc:1470:10 16:45:42 couchbase#5 0x5b3961 in fdb_kvs_close /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/kv_instance.cc:1537 16:45:42 couchbase#6 0x4f9323 in FileHandlePool::~FileHandlePool() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:129:26 16:45:42 couchbase#7 0x4f94ed in FileHandlePool::~FileHandlePool() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:124:31 16:45:42 couchbase#8 0x4f56de in test_writes_on_kv_stores_with_compaction(unsigned short, int) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:815:5 16:45:42 couchbase#9 0x4f5f9a in main /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:880:5 16:45:42 couchbase#10 0x2b069543776c in __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 16:45:42 couchbase#11 0x447558 in _start (/home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/build/forestdb/tests/usecase/usecase_test+0x447558) 16:45:42 16:45:42 0x61f0000088c0 is located 2624 bytes inside of 3064-byte region [0x61f000007e80,0x61f000008a78) 16:45:42 freed by thread T47 here: 16:45:42 #0 0x4edf82 in operator delete(void*) (/home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/build/forestdb/tests/usecase/usecase_test+0x4edf82) 16:45:42 couchbase#1 0x541095 in FileMgr::freeFunc(FileMgr*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.cc:1758:5 16:45:42 couchbase#2 0x525c7c in CompactorThread::run() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/compactor.cc:398:17 16:45:42 couchbase#3 0x524de8 in launch_compactor_thread(void*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/compactor.cc:261:9 16:45:42 couchbase#4 0x2b06941a4e99 in start_thread /build/buildd/eglibc-2.15/nptl/pthread_create.c:308 Change-Id: Ifb5eb2255953b569891ebb7e59f36d902dad1152
While updating the prevFile pointer of the next file in the chain, update the pointer iff the next file points to the current file. 16:45:42 ==68667==ERROR: AddressSanitizer: heap-use-after-free on address 0x61f0000088c0 at pc 0x0000005452bb bp 0x7fffdf556050 sp 0x7fffdf556048 16:45:42 READ of size 8 at 0x61f0000088c0 thread T0 16:45:42 #0 0x5452ba in FileMgr::getNewFile() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.h:636:16 16:45:42 couchbase#1 0x5452ba in FileMgr::updateFilePointers() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.cc:1528 16:45:42 couchbase#2 0x5452ba in FileMgr::close(FileMgr*, bool, char const*, ErrLogCallback*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.cc:1677 16:45:42 couchbase#3 0x569bc3 in _fdb_close /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/forestdb.cc:7434:10 16:45:42 couchbase#4 0x5b3961 in _fdb_kvs_close(FdbKvsHandle*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/kv_instance.cc:1470:10 16:45:42 couchbase#5 0x5b3961 in fdb_kvs_close /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/kv_instance.cc:1537 16:45:42 couchbase#6 0x4f9323 in FileHandlePool::~FileHandlePool() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:129:26 16:45:42 couchbase#7 0x4f94ed in FileHandlePool::~FileHandlePool() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:124:31 16:45:42 couchbase#8 0x4f56de in test_writes_on_kv_stores_with_compaction(unsigned short, int) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:815:5 16:45:42 couchbase#9 0x4f5f9a in main /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/tests/usecase/usecase_test.cc:880:5 16:45:42 couchbase#10 0x2b069543776c in __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226 16:45:42 couchbase#11 0x447558 in _start (/home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/build/forestdb/tests/usecase/usecase_test+0x447558) 16:45:42 16:45:42 0x61f0000088c0 is located 2624 bytes inside of 3064-byte region [0x61f000007e80,0x61f000008a78) 16:45:42 freed by thread T47 here: 16:45:42 #0 0x4edf82 in operator delete(void*) (/home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/build/forestdb/tests/usecase/usecase_test+0x4edf82) 16:45:42 couchbase#1 0x541095 in FileMgr::freeFunc(FileMgr*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/filemgr.cc:1758:5 16:45:42 couchbase#2 0x525c7c in CompactorThread::run() /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/compactor.cc:398:17 16:45:42 couchbase#3 0x524de8 in launch_compactor_thread(void*) /home/couchbase/jenkins/workspace/forestdb-addresssanitizer-master/forestdb/src/compactor.cc:261:9 16:45:42 couchbase#4 0x2b06941a4e99 in start_thread /build/buildd/eglibc-2.15/nptl/pthread_create.c:308 Change-Id: Ifb5eb2255953b569891ebb7e59f36d902dad1152
Change-Id: I98a94cd9cc7acfce02bdf15b67e0cf9ace95e0e0 14:15:16 WARNING: ThreadSanitizer: data race (pid=68020) 14:15:16 Write of size 8 at 0x7d6400163b28 by thread T15 (mutexes: write M13): 14:15:16 #0 _fname_create(filemgr*) /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/blockcache.cc:812 (e2etest+0x0000004d5c60) 14:15:16 couchbase#1 bcache_write /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/blockcache.cc:1062 (e2etest+0x0000004d526d) 14:15:16 couchbase#2 filemgr_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/filemgr.cc:2043 (e2etest+0x0000004f1a9b) 14:15:16 couchbase#3 _docio_read_through_buffer(docio_handle*, unsigned long, err_log_callback*, bool) /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/docio.cc:691 (e2etest+0x0000004ea770) 14:15:16 couchbase#4 docio_read_doc /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/docio.cc:1212 (e2etest+0x0000004eb86f) 14:15:16 couchbase#5 fdb_kvs_header_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/kv_instance.cc:1123 (e2etest+0x000000522e4c) 14:15:16 couchbase#6 _fdb_open /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:1720 (e2etest+0x0000004fa137) 14:15:16 couchbase#7 fdb_check_file_reopen /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:2800 (e2etest+0x0000004fcb77) 14:15:16 couchbase#8 fdb_set /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:3607 (e2etest+0x00000050372f) 14:15:16 couchbase#9 fdb_set_kv <null> (e2etest+0x0000004d2a29) 14:15:16 couchbase#10 update_thread(void*) crtstuff.c (e2etest+0x0000004c9d26) 14:15:16 14:15:16 Previous read of size 8 at 0x7d6400163b28 by thread T14: 14:15:16 #0 bcache_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/blockcache.cc:924 (e2etest+0x0000004d4ddf) 14:15:16 couchbase#1 filemgr_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/filemgr.cc:1976 (e2etest+0x0000004f14f1) 14:15:16 couchbase#2 _docio_read_through_buffer(docio_handle*, unsigned long, err_log_callback*, bool) /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/docio.cc:691 (e2etest+0x0000004ea770) 14:15:16 couchbase#3 docio_read_doc /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/docio.cc:1212 (e2etest+0x0000004eb86f) 14:15:16 couchbase#4 fdb_kvs_header_read /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/kv_instance.cc:1123 (e2etest+0x000000522e4c) 14:15:16 couchbase#5 _fdb_open /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:1720 (e2etest+0x0000004fa137) 14:15:16 couchbase#6 fdb_check_file_reopen /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:2800 (e2etest+0x0000004fcb77) 14:15:16 couchbase#7 fdb_set /home/couchbase/jenkins/workspace/forestdb-threadsanitizer-master/forestdb/src/forestdb.cc:3607 (e2etest+0x00000050372f) 14:15:16 couchbase#8 fdb_set_kv <null> (e2etest+0x0000004d2a29) 14:15:16 couchbase#9 e2e_fdb_set_person crtstuff.c (e2etest+0x0000004d0392) 14:15:16 couchbase#10 seq_writer_thread(void*) crtstuff.c (e2etest+0x0000004c9c62) Reviewed-on: http://review.couchbase.org/62820 Tested-by: buildbot <[email protected]> Reviewed-by: Chiyoung Seo <[email protected]>
+ Performance regression observed in run-time of
fdb_extended_test.
+ Profiling showed the mutex lock contention was the
main bottle-neck.
+ Replaced the mutex with a spin-lock
+ Run-time of fdb_extended_test back to normal.
- Before change:
1/1 Test #10: fdb_extended_test ................ Passed 116.43 sec
- After change:
1/1 Test #10: fdb_extended_test ................ Passed 103.96 sec
Change-Id: Iba5909510b99353543a8db7328e1b0ec8a35e95f
Reviewed-on: http://review.couchbase.org/66346
Reviewed-by: Chiyoung Seo <[email protected]>
Tested-by: buildbot <[email protected]>
Change-Id: I15d7fea7bf6dfe7409a258aa484866b7f1cf2bcc 13:09:58 WARNING: ThreadSanitizer: data race (pid=103894) 13:09:58 Read of size 1 at 0x7d100047b1a0 by thread T19: 13:09:58 #0 fdb_kvs_find_cmp_chunk /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/kv_instance.cc:255 (compact_functional_test+0x0000005521bf) 13:09:58 #1 HBTrie::_insert(void*, int, void*, void*, unsigned char) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/hbtrie.cc:208 (compact_functional_test+0x000000544b6e) 13:09:58 #2 HBTrie::insert(void*, int, void*, void*) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/hbtrie.cc:1452 (compact_functional_test+0x000000544937) 13:09:58 #3 WalFlushCallbacks::flushItem(void*, wal_item*, avl_tree*, avl_tree*) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/forestdb.cc:5291 (compact_functional_test+0x00000053d016) 13:09:58 #4 Wal::_wal_do_flush(wal_item*, fdb_status (*)(void*, wal_item*, avl_tree*, avl_tree*), void*, avl_tree*, avl_tree*) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/wal.cc:1705 (compact_functional_test+0x00000056df7b) 13:09:58 #5 Wal::flushByCompactor_Wal(void*, fdb_status (*)(void*, wal_item*, avl_tree*, avl_tree*), unsigned long (*)(void*, wal_item*), void (*)(void*, avl_tree*, avl_tree*), void (*)(FileMgr*, avl_tree*), wal_flush_items*) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/wal.cc:1923 (compact_functional_test+0x00000056e321) 13:09:58 #6 Compaction::copyDocs(FdbKvsHandle*, unsigned long*, bool) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/compaction.cc:1341 (compact_functional_test+0x0000004ff2b3) 13:09:58 #7 Compaction::compactFile(FdbFileHandle*, char const*, bool, unsigned long, bool, fdb_encryption_key const*) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/compaction.cc:306 (compact_functional_test+0x0000004fc749) 13:09:58 #8 CompactionTask::run() /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/compactor.cc:374 (compact_functional_test+0x00000050660f) 13:09:58 #9 ExecutorThread::run() crtstuff.c (compact_functional_test+0x00000051ac29) 13:09:58 #10 launch_executor_thread(void*) /home/couchbase/.ccache/tmp/executorth.tmp.37a3ca72313b.96623.ii (compact_functional_test+0x00000051a8d5) 13:09:58 13:09:58 Previous write of size 1 at 0x7d100047b1a0 by main thread (mutexes: write M20407327, write M20420268): 13:09:58 #0 FdbEngine::createKvs(FdbKvsHandle*, char const*, fdb_kvs_config*) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/kv_instance.cc:2129 (compact_functional_test+0x000000556a39) 13:09:58 #1 FdbEngine::openKvs(FdbKvsHandle*, fdb_config*, fdb_kvs_config*, FileMgr*, char const*, char const*, FdbKvsHandle*) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/kv_instance.cc:1803 (compact_functional_test+0x0000005562ba) 13:09:58 #2 FdbEngine::openKvs(FdbFileHandle*, FdbKvsHandle**, char const*, fdb_kvs_config*) /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/kv_instance.cc:1747 (compact_functional_test+0x000000554c29) 13:09:58 #3 fdb_kvs_open /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/src/kv_instance.cc:1065 (compact_functional_test+0x000000554780) 13:09:58 #4 auto_compaction_with_custom_cmp_function() /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/tests/functional/compact_functional_test.cc:2125 (compact_functional_test+0x0000004d671f) 13:09:58 #5 main /home/couchbase/jenkins/workspace/forestdb-thread_sanitizer-unstable/forestdb/tests/functional/compact_functional_test.cc:3704 (compact_functional_test+0x0000004e032e) Reviewed-on: http://review.couchbase.org/67042 Tested-by: buildbot <[email protected]> Reviewed-by: Chiyoung Seo <[email protected]>
|
Changes were merged into master branch as part of another bug fix, so closing this PR |
As reported by ASan:
==25822==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 721424 byte(s) in 11 object(s) allocated from:
#0 0xffff9f6d18bc in malloc (/opt/gcc-10.2.0/lib64/libasan.so.6+0x9d8bc)
#1 0x4b0284 in hash_init ../forestdb/src/hash.cc:32
#2 0x40e254 in _fname_create ../forestdb/src/blockcache.cc:806
#3 0x410698 in bcache_write ../forestdb/src/blockcache.cc:1063
#4 0x457dc8 in filemgr_read ../forestdb/src/filemgr.cc:2147
#5 0x4474d4 in _docio_read_through_buffer(docio_handle*, unsigned long, err_log_callback*, bool) ../forestdb/src/docio.cc:711
#6 0x4474d4 in _docio_read_length ../forestdb/src/docio.cc:803
#7 0x44c8c0 in docio_read_doc ../forestdb/src/docio.cc:1242
#8 0x4d6a3c in fdb_kvs_header_read ../forestdb/src/kv_instance.cc:1142
#9 0x485b94 in _fdb_open ../forestdb/src/forestdb.cc:2076
#10 0x4adfbc in _fdb_recover_compaction(_fdb_kvs_handle*, char const*) ../forestdb/src/forestdb.cc:585
#11 0x4869ac in _fdb_open ../forestdb/src/forestdb.cc:2237
#12 0x486f74 in fdb_open ../forestdb/src/forestdb.cc:848
#13 0x525da0 in compact_rename_to_original_test() ../forestdb/tests/functional/compact_functional_test.cc:525
#14 0x546878 in main ../forestdb/tests/functional/compact_functional_test.cc:3904
#15 0xffff9e4e2ce0 in __libc_start_main (/lib64/libc.so.6+0x1fce0)
#16 0x404c4c (/home/couchbase/server/build/forestdb/tests/functional/compact_functional_test+0x404c4c)
Direct leak of 721424 byte(s) in 11 object(s) allocated from:
#0 0xffff9f6d18bc in malloc (/opt/gcc-10.2.0/lib64/libasan.so.6+0x9d8bc)
#1 0x4b0284 in hash_init ../forestdb/src/hash.cc:32
#2 0x40e254 in _fname_create ../forestdb/src/blockcache.cc:806
#3 0x410698 in bcache_write ../forestdb/src/blockcache.cc:1063
#4 0x457dc8 in filemgr_read ../forestdb/src/filemgr.cc:2147
#5 0x4474d4 in _docio_read_through_buffer(docio_handle*, unsigned long, err_log_callback*, bool) ../forestdb/src/docio.cc:711
#6 0x4474d4 in _docio_read_length ../forestdb/src/docio.cc:803
#7 0x44c8c0 in docio_read_doc ../forestdb/src/docio.cc:1242
#8 0x4d6a3c in fdb_kvs_header_read ../forestdb/src/kv_instance.cc:1142
#9 0x485b94 in _fdb_open ../forestdb/src/forestdb.cc:2076
#10 0x486f74 in fdb_open ../forestdb/src/forestdb.cc:848
#11 0x524460 in compaction_delete_old_test() ../forestdb/tests/functional/compact_functional_test.cc:345
#12 0x546874 in main ../forestdb/tests/functional/compact_functional_test.cc:3903
#13 0xffff9e4e2ce0 in __libc_start_main (/lib64/libc.so.6+0x1fce0)
#14 0x404c4c (/home/couchbase/server/build/forestdb/tests/functional/compact_functional_test+0x404c4c)
Change-Id: I6179654af9da764d4ceed04fb2702ca84f43c874
Reviewed-on: http://review.couchbase.org/c/forestdb/+/159308
Tested-by: Build Bot <[email protected]>
Reviewed-by: Trond Norbye <[email protected]>
For users using O_DIRECT flag, superblock also should call
pread/pwrite with aligned memory.