libpmemobj-cpp
libpmemobj-cpp copied to clipboard
intermittent helgrind test failure
It happend on Travis, once (TYPE=normal OS=ubuntu OS_VER=18.04 PUSH_IMAGE=1)
PKG_CONFIG_PATH=/opt/pmdk/lib/pkgconfig/ \
CC=gcc CXX=g++ \
cmake .. -DDEVELOPER_MODE=1 \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \
-DTRACE_TESTS=1 \
-DCOVERAGE=$COVERAGE
make -j2
test_command tests_gcc_debug
45/150 Test #38: cond_var_posix_0_helgrind ....................***Failed 5.46 sec
Running with expanded trace output on.
/libpmemobj-cpp/tests/cond_var_posix/cond_var_posix_0.cmake(32): include(/libpmemobj-cpp/tests/cond_var_posix/../helpers.cmake )
/libpmemobj-cpp/tests/helpers.cmake(32): set(DIR /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind )
/libpmemobj-cpp/tests/helpers.cmake(34): function(setup )
/libpmemobj-cpp/tests/helpers.cmake(41): function(print_logs )
/libpmemobj-cpp/tests/helpers.cmake(58): function(finish )
/libpmemobj-cpp/tests/helpers.cmake(72): function(match log_file match_file )
/libpmemobj-cpp/tests/helpers.cmake(83): function(check_file_exists file )
/libpmemobj-cpp/tests/helpers.cmake(99): function(valgrind_ignore_warnings valgrind_log )
/libpmemobj-cpp/tests/helpers.cmake(114): function(execute_common expect_success output_file name )
/libpmemobj-cpp/tests/helpers.cmake(213): function(check_target name )
/libpmemobj-cpp/tests/helpers.cmake(221): function(execute_with_output out name )
/libpmemobj-cpp/tests/helpers.cmake(228): function(execute_ignore_output name )
/libpmemobj-cpp/tests/helpers.cmake(238): function(execute name )
/libpmemobj-cpp/tests/helpers.cmake(249): function(pmreorder_create_store_log pool name )
/libpmemobj-cpp/tests/helpers.cmake(292): function(pmreorder_execute expect_success engine conf_file name )
/libpmemobj-cpp/tests/cond_var_posix/cond_var_posix_0.cmake(34): setup()
/libpmemobj-cpp/tests/helpers.cmake(35): execute_process(COMMAND /usr/bin/cmake -E remove_directory /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind )
/libpmemobj-cpp/tests/helpers.cmake(36): execute_process(COMMAND /usr/bin/cmake -E make_directory /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind )
/libpmemobj-cpp/tests/helpers.cmake(37): execute_process(COMMAND /usr/bin/cmake -E remove_directory /libpmemobj-cpp/build/tests/cond_var_posix_0_helgrind )
/libpmemobj-cpp/tests/helpers.cmake(38): execute_process(COMMAND /usr/bin/cmake -E make_directory /libpmemobj-cpp/build/tests/cond_var_posix_0_helgrind )
/libpmemobj-cpp/tests/cond_var_posix/cond_var_posix_0.cmake(36): execute(/libpmemobj-cpp/build/tests/cond_var_posix /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile )
/libpmemobj-cpp/tests/helpers.cmake(239): check_target(/libpmemobj-cpp/build/tests/cond_var_posix )
/libpmemobj-cpp/tests/helpers.cmake(214): if(NOT EXISTS /libpmemobj-cpp/build/tests/cond_var_posix )
/libpmemobj-cpp/tests/helpers.cmake(241): execute_common(true helgrind_0 /libpmemobj-cpp/build/tests/cond_var_posix /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile )
/libpmemobj-cpp/tests/helpers.cmake(115): if(TESTS_USE_FORCED_PMEM )
/libpmemobj-cpp/tests/helpers.cmake(119): if(helgrind STREQUAL pmemcheck )
/libpmemobj-cpp/tests/helpers.cmake(125): elseif(helgrind STREQUAL memcheck )
/libpmemobj-cpp/tests/helpers.cmake(128): elseif(helgrind STREQUAL helgrind )
/libpmemobj-cpp/tests/helpers.cmake(129): set(TRACE valgrind --error-exitcode=99 --tool=helgrind )
/libpmemobj-cpp/tests/helpers.cmake(138): if(NOT )
/libpmemobj-cpp/tests/helpers.cmake(144): string(REPLACE ; TRACE_STR valgrind;--error-exitcode=99;--tool=helgrind )
/libpmemobj-cpp/tests/helpers.cmake(145): message(STATUS Executing: valgrind --error-exitcode=99 --tool=helgrind /libpmemobj-cpp/build/tests/cond_var_posix /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile )
-- Executing: valgrind --error-exitcode=99 --tool=helgrind /libpmemobj-cpp/build/tests/cond_var_posix /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile
/libpmemobj-cpp/tests/helpers.cmake(147): set(cmd valgrind;--error-exitcode=99;--tool=helgrind /libpmemobj-cpp/build/tests/cond_var_posix /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile )
/libpmemobj-cpp/tests/helpers.cmake(149): if( )
/libpmemobj-cpp/tests/helpers.cmake(164): if(helgrind_0 STREQUAL none )
/libpmemobj-cpp/tests/helpers.cmake(168): else()
/libpmemobj-cpp/tests/helpers.cmake(169): execute_process(COMMAND valgrind;--error-exitcode=99;--tool=helgrind;/libpmemobj-cpp/build/tests/cond_var_posix;/libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile RESULT_VARIABLE res OUTPUT_FILE /libpmemobj-cpp/build/tests/cond_var_posix_0_helgrind/cond_var_posix_0_helgrind.out ERROR_FILE /libpmemobj-cpp/build/tests/cond_var_posix_0_helgrind/cond_var_posix_0_helgrind.err )
/libpmemobj-cpp/tests/helpers.cmake(179): if(EXISTS /libpmemobj-cpp/tests/cond_var_posix/cond_var_posix_0_helgrind.err.match )
/libpmemobj-cpp/tests/helpers.cmake(184): else()
/libpmemobj-cpp/tests/helpers.cmake(185): if(helgrind STREQUAL pmemcheck )
/libpmemobj-cpp/tests/helpers.cmake(197): if(res AND expect_success )
/libpmemobj-cpp/tests/helpers.cmake(198): print_logs()
/libpmemobj-cpp/tests/helpers.cmake(42): message(STATUS Test cond_var_posix_0_helgrind: )
-- Test cond_var_posix_0_helgrind:
/libpmemobj-cpp/tests/helpers.cmake(43): if(EXISTS /libpmemobj-cpp/build/tests/cond_var_posix_0_helgrind/cond_var_posix_0_helgrind.out )
/libpmemobj-cpp/tests/helpers.cmake(44): file(READ /libpmemobj-cpp/build/tests/cond_var_posix_0_helgrind/cond_var_posix_0_helgrind.out OUT )
/libpmemobj-cpp/tests/helpers.cmake(45): message(STATUS Stdout:
Signal 6, backtrace:
0: /libpmemobj-cpp/build/tests/cond_var_posix(test_dump_backtrace+0x2f) [0x110cff]
1: /libpmemobj-cpp/build/tests/cond_var_posix(test_sighandler+0x1c) [0x110dcc]
2: /lib/x86_64-linux-gnu/libc.so.6(+0x3ef1f) [0x5882f1f]
3: /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7) [0x5882e97]
4: /lib/x86_64-linux-gnu/libc.so.6(abort+0x140) [0x5884800]
5: /libpmemobj-cpp/build/tests/cond_var_posix(+0x2c5d) [0x10ac5d]
6: /libpmemobj-cpp/build/tests/cond_var_posix(+0x4d36) [0x10cd36]
7: /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so(+0xa9e1) [0x4c369e1]
8: /lib/x86_64-linux-gnu/libpthread.so.0(+0x76da) [0x50886da]
9: /lib/x86_64-linux-gnu/libc.so.6(clone+0x3e) [0x596588e]
)
-- Stdout:
Signal 6, backtrace:
0: /libpmemobj-cpp/build/tests/cond_var_posix(test_dump_backtrace+0x2f) [0x110cff]
1: /libpmemobj-cpp/build/tests/cond_var_posix(test_sighandler+0x1c) [0x110dcc]
2: /lib/x86_64-linux-gnu/libc.so.6(+0x3ef1f) [0x5882f1f]
3: /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7) [0x5882e97]
4: /lib/x86_64-linux-gnu/libc.so.6(abort+0x140) [0x5884800]
5: /libpmemobj-cpp/build/tests/cond_var_posix(+0x2c5d) [0x10ac5d]
6: /libpmemobj-cpp/build/tests/cond_var_posix(+0x4d36) [0x10cd36]
7: /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so(+0xa9e1) [0x4c369e1]
8: /lib/x86_64-linux-gnu/libpthread.so.0(+0x76da) [0x50886da]
9: /lib/x86_64-linux-gnu/libc.so.6(clone+0x3e) [0x596588e]
/libpmemobj-cpp/tests/helpers.cmake(47): if(EXISTS /libpmemobj-cpp/build/tests/cond_var_posix_0_helgrind/cond_var_posix_0_helgrind.err )
/libpmemobj-cpp/tests/helpers.cmake(48): file(READ /libpmemobj-cpp/build/tests/cond_var_posix_0_helgrind/cond_var_posix_0_helgrind.err ERR )
/libpmemobj-cpp/tests/helpers.cmake(49): message(STATUS Stderr:
==11089== Helgrind, a thread error detector
==11089== Copyright (C) 2007-2017, and GNU GPL'd, by OpenWorks LLP et al.
==11089== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==11089== Command: /libpmemobj-cpp/build/tests/cond_var_posix /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile
==11089==
/libpmemobj-cpp/tests/cond_var_posix/cond_var_posix.cpp:194 reader_mutex_until - assertion failure: diff < epsilon
==11089== ---Thread-Announcement------------------------------------------
==11089==
==11089== Thread #1502 was created
==11089== at 0x596587E: clone (clone.S:71)
==11089== by 0x5088EC4: create_thread (createthread.c:100)
==11089== by 0x5088EC4: pthread_create@@GLIBC_2.2.5 (pthread_create.c:797)
==11089== by 0x4C367ED: pthread_create_WRK (hg_intercepts.c:427)
==11089== by 0x4C378DF: pthread_create@* (hg_intercepts.c:460)
==11089== by 0x10B8AF: void (anonymous namespace)::mutex_test<void* (*)(void*), void* (*)(void*)>(pmem::obj::pool<(anonymous namespace)::root>&, bool, bool, void* (*)(void*), void* (*)(void*)) [clone .constprop.53] (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089== by 0x10B0E1: main (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089==
==11089== ----------------------------------------------------------------
==11089==
==11089== Thread #1502: Exiting thread still holds 1 lock
==11089== at 0x5928E06: _Exit (_exit.c:31)
==11089== by 0x5887111: __run_exit_handlers (exit.c:132)
==11089== by 0x5887139: exit (exit.c:139)
==11089== by 0x110DE1: test_sighandler (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089== by 0x5882F1F: ??? (in /lib/x86_64-linux-gnu/libc-2.27.so)
==11089== by 0x5882E96: __libc_signal_restore_set (nptl-signals.h:80)
==11089== by 0x5882E96: raise (raise.c:48)
==11089== by 0x5884800: abort (abort.c:79)
==11089== by 0x10AC5D: UT_FATAL(char const*, ...) (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089== by 0x10CD36: (anonymous namespace)::reader_mutex_until(void*) (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089== by 0x4C369E1: mythread_wrapper (hg_intercepts.c:389)
==11089== by 0x50886DA: start_thread (pthread_create.c:463)
==11089== by 0x596588E: clone (clone.S:95)
==11089==
==11089==
==11089== For counts of detected and suppressed errors, rerun with: -v
==11089== Use --history-level=approx or =none to gain increased speed, at
==11089== the cost of reduced accuracy of conflicting-access information
==11089== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 16099 from 35)
)
-- Stderr:
==11089== Helgrind, a thread error detector
==11089== Copyright (C) 2007-2017, and GNU GPL'd, by OpenWorks LLP et al.
==11089== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==11089== Command: /libpmemobj-cpp/build/tests/cond_var_posix /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile
==11089==
/libpmemobj-cpp/tests/cond_var_posix/cond_var_posix.cpp:194 reader_mutex_until - assertion failure: diff < epsilon
==11089== ---Thread-Announcement------------------------------------------
==11089==
==11089== Thread #1502 was created
==11089== at 0x596587E: clone (clone.S:71)
==11089== by 0x5088EC4: create_thread (createthread.c:100)
==11089== by 0x5088EC4: pthread_create@@GLIBC_2.2.5 (pthread_create.c:797)
==11089== by 0x4C367ED: pthread_create_WRK (hg_intercepts.c:427)
==11089== by 0x4C378DF: pthread_create@* (hg_intercepts.c:460)
==11089== by 0x10B8AF: void (anonymous namespace)::mutex_test<void* (*)(void*), void* (*)(void*)>(pmem::obj::pool<(anonymous namespace)::root>&, bool, bool, void* (*)(void*), void* (*)(void*)) [clone .constprop.53] (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089== by 0x10B0E1: main (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089==
==11089== ----------------------------------------------------------------
==11089==
==11089== Thread #1502: Exiting thread still holds 1 lock
==11089== at 0x5928E06: _Exit (_exit.c:31)
==11089== by 0x5887111: __run_exit_handlers (exit.c:132)
==11089== by 0x5887139: exit (exit.c:139)
==11089== by 0x110DE1: test_sighandler (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089== by 0x5882F1F: ??? (in /lib/x86_64-linux-gnu/libc-2.27.so)
==11089== by 0x5882E96: __libc_signal_restore_set (nptl-signals.h:80)
==11089== by 0x5882E96: raise (raise.c:48)
==11089== by 0x5884800: abort (abort.c:79)
==11089== by 0x10AC5D: UT_FATAL(char const*, ...) (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089== by 0x10CD36: (anonymous namespace)::reader_mutex_until(void*) (in /libpmemobj-cpp/build/tests/cond_var_posix)
==11089== by 0x4C369E1: mythread_wrapper (hg_intercepts.c:389)
==11089== by 0x50886DA: start_thread (pthread_create.c:463)
==11089== by 0x596588E: clone (clone.S:95)
==11089==
==11089==
==11089== For counts of detected and suppressed errors, rerun with: -v
==11089== Use --history-level=approx or =none to gain increased speed, at
==11089== the cost of reduced accuracy of conflicting-access information
==11089== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 16099 from 35)
/libpmemobj-cpp/tests/helpers.cmake(51): if(EXISTS /libpmemobj-cpp/build/tests/cond_var_posix_0_helgrind/cond_var_posix_0_helgrind.pmreorder )
/libpmemobj-cpp/tests/helpers.cmake(199): message(FATAL_ERROR valgrind;--error-exitcode=99;--tool=helgrind /libpmemobj-cpp/build/tests/cond_var_posix /libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile failed: 99 )
CMake Error at /libpmemobj-cpp/tests/helpers.cmake:199 (message):
valgrind;--error-exitcode=99;--tool=helgrind
/libpmemobj-cpp/build/tests/cond_var_posix
/libpmemobj-cpp/build/test/cond_var_posix_0_helgrind/testfile failed: 99
Call Stack (most recent call first):
/libpmemobj-cpp/tests/helpers.cmake:241 (execute_common)
/libpmemobj-cpp/tests/cond_var_posix/cond_var_posix_0.cmake:36 (execute)
Probably connected: #113