We're updating the issue view to help you get more done. 

ctest - helgrind_helgrind3 reports possible race

Description

Test fails in Percona Jenkins. Stacktrace different from FT-664.

==3533== ---Thread-Announcement------------------------------------------
==3533==
==3533== Thread #1 is the program's root thread
==3533==
==3533== ---Thread-Announcement------------------------------------------
==3533==
==3533== Thread #6 was created
==3533== at 0x591743E: clone (clone.S:74)
==3533== by 0x5606199: do_clone.constprop.3 (createthread.c:75)
==3533== by 0x56078BA: pthread_create@@GLIBC_2.2.5 (createthread.c:245)
==3533== by 0x4C30C90: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==3533== by 0x5157781: toku_pthread_create(unsigned long*, pthread_attr_t const*, void* (void*), void*) (toku_pthread.h:392)
==3533== by 0x51578D9: toku_kibbutz_create(int, kibbutz**) (kibbutz.cc:137)
==3533== by 0x509DA66: toku_cachetable_create(cachetable*, long, __toku_lsn, tokulogger) (cachetable.cc:317)
==3533== by 0x50612AE: env_open(__toku_db_env*, char const*, unsigned int, int) (ydb.cc:974)
==3533== by 0x402C7E: initialize() (helgrind3.cc:113)
==3533== by 0x40315D: test_main(int, char* const*) (helgrind3.cc:179)
==3533== by 0x402AF9: main (test.h:501)
==3533==
==3533== ----------------------------------------------------------------
==3533==
==3533== Lock at 0x53ED2C0 was first observed
==3533== at 0x4C31DDA: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==3533== by 0x50BDA52: toku_mutex_init(toku_mutex*, pthread_mutexattr_t const*) (toku_pthread.h:163)
==3533== by 0x50D4040: toku_ft_layer_init() (ft-ops.cc:4544)
==3533== by 0x505EBBF: toku_ydb_init() (ydb.cc:232)
==3533== by 0x505E883: libtokuft_init() (ydb_lib.cc:102)
==3533== by 0x4010139: call_init.part.0 (dl-init.c:78)
==3533== by 0x4010222: _dl_init (dl-init.c:36)
==3533== by 0x4001309: ??? (in /lib/x86_64-linux-gnu/ld-2.19.so)
==3533==
==3533== Possible data race during read of size 1 at 0x6B31680 by thread #1
==3533== Locks held: 1, at address 0x53ED2C0
==3533== at 0x4C2ECB0: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==3533== by 0x4C31E3F: pthread_mutex_destroy (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==3533== by 0x5148D66: toku_mutex_destroy(toku_mutex*) (toku_pthread.h:198)
==3533== by 0x5149274: bjm_destroy(background_job_manager_struct*) (background_job_manager.cc:117)
==3533== by 0x50A28D1: write_dirty_pairs_for_close(cachetable*, cachefile*) (cachetable.cc:2412)
==3533== by 0x50A2AA5: cachetable_flush_cachefile(cachetable*, cachefile*, bool) (cachetable.cc:2499)
==3533== by 0x509E241: toku_cachefile_close(cachefile**, bool, __toku_lsn) (cachetable.cc:553)
==3533== by 0x50B2387: toku_ft_evict_from_memory(ft*, bool, __toku_lsn) (ft.cc:537)
==3533== by 0x50B33CC: toku_ft_remove_reference(ft*, bool, __toku_lsn, void (ft*, void*), void*) (ft.cc:959)
==3533== by 0x50CF7AE: ft_handle_close(ft_handle*, bool, __toku_lsn) (ft-ops.cc:3276)
==3533== by 0x50CF7E0: toku_ft_handle_close(ft_handle*) (ft-ops.cc:3284)
==3533== by 0x506FB48: toku_db_close(__toku_db*) (ydb_db.cc:206)
==3533==
==3533== This conflicts with a previous write of size 4 by thread #6
==3533== Locks held: none
==3533== at 0x560A7DA: pthread_mutex_unlock (pthread_mutex_unlock.c:51)
==3533== by 0x4C32622: pthread_mutex_unlock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==3533== by 0x5148F73: toku_mutex_unlock(toku_mutex*) (toku_pthread.h:239)
==3533== by 0x51493DE: bjm_remove_background_job(background_job_manager_struct*) (background_job_manager.cc:148)
==3533== by 0x50A24B9: cachetable_flush_pair_for_close(void*) (cachetable.cc:2333)
==3533== by 0x5157A2A: work_on_kibbutz(void*) (kibbutz.cc:184)
==3533== by 0x4C30E26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==3533== by 0x5607181: start_thread (pthread_create.c:312)
==3533==
==3533== Address 0x6B31680 is 64 bytes inside a block of size 112 alloc'd
==3533== at 0x4C2BF00: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==3533== by 0x53F6394: os_malloc(unsigned long) (os_malloc.cc:267)
==3533== by 0x53F55A1: toku_xmalloc(unsigned long) (memory.cc:387)
==3533== by 0x53F5C83: toku_xcalloc(unsigned long, unsigned long) (memory.cc:435)
==3533== by 0x51491C9: bjm_init(background_job_manager_struct**) (background_job_manager.cc:106)
==3533== by 0x50A27FC: write_dirty_pairs_for_close(cachetable*, cachefile*) (cachetable.cc:2389)
==3533== by 0x50A2AA5: cachetable_flush_cachefile(cachetable*, cachefile*, bool) (cachetable.cc:2499)
==3533== by 0x509E241: toku_cachefile_close(cachefile**, bool, __toku_lsn) (cachetable.cc:553)
==3533== by 0x50B2387: toku_ft_evict_from_memory(ft*, bool, __toku_lsn) (ft.cc:537)
==3533== by 0x50B33CC: toku_ft_remove_reference(ft*, bool, __toku_lsn, void (ft*, void*), void*) (ft.cc:959)
==3533== by 0x50CF7AE: ft_handle_close(ft_handle*, bool, __toku_lsn) (ft-ops.cc:3276)
==3533== by 0x50CF7E0: toku_ft_handle_close(ft_handle*) (ft-ops.cc:3284)

Environment

None

Status

Assignee

Unassigned

Reporter

George Lorch

Labels

None

External issue ID

None

External issue ID

None

External issue ID

None

External issue ID

None

External issue ID

None

External issue ID

None

External issue ID

None

External issue ID

None

External issue ID

None

Freshdesk Tickets

None

Fix versions

Priority

Minor