GithubHelp home page GithubHelp logo

pmem / libpmemobj-cpp Goto Github PK

View Code? Open in Web Editor NEW
107.0 17.0 76.0 84.89 MB

C++ bindings & containers for libpmemobj

Home Page: https://pmem.io

License: Other

C++ 89.75% Shell 2.42% Perl 0.58% C 0.24% CMake 6.86% GDB 0.15%
pmem pmdk

libpmemobj-cpp's Introduction

libpmemobj-cpp

Build status libpmemobj-cpp version Coverity Scan Build Status Coverage Status Packaging status

⚠️ Discontinuation of the project

The libpmemobj-cpp project will no longer be maintained by Intel.

  • Intel has ceased development and contributions including, but not limited to, maintenance, bug fixes, new releases, or updates, to this project.
  • Intel no longer accepts patches to this project.
  • If you have an ongoing need to use this project, are interested in independently developing it, or would like to maintain patches for the open source software community, please create your own fork of this project.
  • You will find more information here.

Introduction

libpmemobj-cpp is a C++ binding for libpmemobj (a library which is a part of PMDK collection). More implementation details can be found in include/libpmemobj++/README.md.

Latest releases can be found on the "releases" tab. Up-to-date support/maintenance status of branches/releases is available on pmem.io.

Compatibility note

In libpmemobj 1.12 we introduced a new transaction handler type: pmem::obj::flat_transaction. By defining LIBPMEMOBJ_CPP_USE_FLAT_TRANSACTION you can make pmem::obj::transaction to be an alias to pmem::obj::flat_transaction. In 1.12 we have also changed the default behavior of containers' transactional methods. Now, in case of any failure within such method, the outer transaction (if any) will not be immediately aborted. Instead, an exception will be thrown, which will lead to transaction abort only if it's not caught before the outer tx scope ends. To change the behavior to the old one, you can set LIBPMEMOBJ_CPP_FLAT_TX_USE_FAILURE_RETURN macro to 0. Be aware that the old behavior can lead to segfaults in some cases (see tx_nested_struct_example in this file).

Table of contents

  1. Pre-built packages
  2. Dependencies
  3. Linux build
  4. Windows build
  5. Extra CMake compilation flags
  6. Contact us

Pre-built packages

The best way to install stable releases, tested on specific OS, is to use package manager.

Windows

The recommended and the easiest way to install libpmemobj-cpp on Windows is to use Microsoft's vcpkg. Vcpkg is an open source tool and ecosystem created for library management. For more information about vcpkg please see vcpkg repository.

.\vcpkg.exe install libpmemobj-cpp:x64-windows

Ubuntu/Debian

For installation on Debian-related distros please execute following commands:

# apt install libpmemobj-cpp-dev

Fedora/RHEL

To install libpmemobj-cpp on Fedora or RedHat execute:

# dnf install libpmemobj++-devel

Dependencies

You will need the following packages for compilation:

  • cmake >= 3.3
  • libpmemobj-dev(el) >= 1.9 (https://pmem.io/pmdk/)
  • compiler with C++11 support
    • gcc >= 4.8.1 1
    • clang >= 3.3
    • msbuild >= 14 2
  • for testing and development:
  • for Windows compilation:

Required packages (or their names) for some OSes may differ. Some examples or scripts in this repository may require additional dependencies, but should not interrupt the build.

See our Dockerfiles (used e.g. on our CI systems) to get an idea what packages are required to build the entire libpmemobj-cpp, with all tests and examples.

1 C++11 is supported in GCC since version 4.8.1, but it does not support expanding variadic template variables in lambda expressions, which is required to build persistent containers and is possible with GCC >= 4.9.0. If you want to build libpmemobj-cpp without testing containers, use flag TEST_XXX=OFF (separate flag for each container).

2 radix_tree is supported on Windows with MSBuild >=15 (Visual Studio at least 2017 is needed). Testing radix_tree can be disabled via CMake option (use -DTEST_RADIX_TREE=OFF).

Linux build

Standard compilation

$ mkdir build
$ cd build
$ cmake .. [-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<path_to_installation_dir>]
$ make
# make install

Note: By default CMake's option USE_LIBUNWIND is switched ON. If libunwind package was found in the system, it is then linked to all tests' binaries. Sometimes this may lead to failing a test, if it is run under Valgrind. To avoid this false-positive fails, you can execute tests run under Valgrind separately, without libunwind:

cmake .. -DTESTS_USE_VALGRIND=ON -DUSE_LIBUNWIND=OFF && \
ctest -R "_helgrind|_pmemcheck|_drd|_memcheck|_pmreorder"	# run only valgrind tests

or valgrind tests can be disabled in CMake build:

cmake .. -DTESTS_USE_VALGRIND=OFF && \
ctest

Developer compilation

$ mkdir build
$ cd build
$ cmake .. -DCMAKE_BUILD_TYPE=Debug -DDEVELOPER_MODE=1 -DCHECK_CPP_STYLE=1
$ make
$ ctest --output-on-failure

Distribution package build

$ mkdir build
$ cd build
$ cmake .. -DCPACK_GENERATOR="$GEN" -DCMAKE_INSTALL_PREFIX=/usr
$ make package

$GEN is type of package generator and can be RPM or DEB

CMAKE_INSTALL_PREFIX must be set to a destination were packages will be installed

Compilation with Valgrind instrumentation

In order to build your application with libpmemobj-cpp and pmemcheck / memcheck / helgrind / drd, Valgrind instrumentation must be enabled during compilation by adding flags:

  • LIBPMEMOBJ_CPP_VG_PMEMCHECK_ENABLED=1 for pmemcheck instrumentation
  • LIBPMEMOBJ_CPP_VG_MEMCHECK_ENABLED=1 for memcheck instrumentation
  • LIBPMEMOBJ_CPP_VG_HELGRIND_ENABLED=1 for helgrind instrumentation
  • LIBPMEMOBJ_CPP_VG_DRD_ENABLED=1 for drd instrumentation, or
  • LIBPMEMOBJ_CPP_VG_ENABLED=1 for all Valgrind instrumentations (including pmemcheck).

If there are no memcheck / helgrind / drd / pmemcheck headers installed on your system, build will fail.

Windows build

Install prerequisites via vcpkg

vcpkg install pmdk:x64-windows
vcpkg integrate install

Compilation with Visual Studio 2015

cmake . -Bbuild -G "Visual Studio 14 2015 Win64"
        -DCMAKE_TOOLCHAIN_FILE="c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake"
        -DTEST_RADIX_TREE=OFF

msbuild build/ALL_BUILD.vcxproj /m

Compilation with Visual Studio 2017 or above

cmake . -Bbuild -G "Visual Studio 15 2017" -A "x64"
		-DCMAKE_TOOLCHAIN_FILE="c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake"

msbuild build/ALL_BUILD.vcxproj /m

Extra CMake compilation flags

For custom build you can use CMake flags to change build type, change C++ standard, enable/disable components or features for testing purposes. To list all CMake flags use the following:

$ mkdir build
$ cd build
$ cmake ..
$ cmake -LH

or just use graphical CMake frontend like cmake-qt-gui or cmake-curses-gui.

Contact us

If you read the blog post and still have some questions (especially about discontinuation of the project), please contact us using the dedicated e-mail: [email protected].

libpmemobj-cpp's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libpmemobj-cpp's Issues

Add information about available features

Currently only way to check if some feature (for example hashmap) is present is to try to compile some example code. We could put:
#define FEATURE_NAME_PRESENT 1

in version.hpp file.

map_cli example fails gets

On -cpp 1.5 (exact tag without further commits, but reproduces with unreleased stable-1.5 and with master), the map_cli example fails on every "get" operation.

  • PMDK package version(s): 1.5 (exact tag, as packaged in Debian)
  • OS(es) version(s): Debian unstable
  • ndctl version(s): 63-1.3
  • kernel version(s): 4.20.5
  • compiler, libraries, packaging and other related tools version(s): gcc 8.2, etc

Test commands that I'd expected to work:

m() { ./map_cli file persistent "$@"; }

m insert 1 1
m get 1
m insert 1 2
m get 1
m insert 2 10
m print
m remove 1
m get 1
m insert 1 3
m print

which should give:

1
2
map[1] = 2
map[2] = 10
2
key not found
map[1] = 3
map[2] = 10

Result: every "get" says, in addition to expected output, 「invalid queue operation」 on stderr.

I strongly suspect that this is a bug in the example rather than the library, but it's you who know better...

Add git-clang-format

There is git integration for clang-format which we could use to speed up builds (it can be run only on changed files/lines)

Should conversion operator of v<T> return reference to the underlying type?

While changing concurrent hash map to be able to use tbb::spin_rw_mutex and pmem::obj_shared_mutex I found that conversion operator of v template return T by value. As a result the conversion operator return copy of volatile data instead of reference to it. So that write access to underlying data is not allowed if conversion operator is explicitly used.

cond_var test failure on AppVeyor

18/58 Test #20: cond_var_0_none ...................................................***Failed    1.73 sec
-- Executing:  C:/projects/libpmemobj-cpp/build/tests/Release/cond_var.exe C:/projects/libpmemobj-cpp/build/test/cond_var_0_none/testfile
-- Stdout:
Signal 22, backtrace:
11: [00007FF72D716BE6]
10: [00007FF72D716D3B]
9: raise [00007FFC0A19DC17]
8: abort [00007FFC0A19EAA1]
7: [00007FF72D7128BD]
6: [00007FF72D71589D]
5: [00007FF72D712B77]
4: [00007FF72D712E06]
3: [00007FF72D712959]
2: o__realloc_base [00007FFC0A14CD70]
1: BaseThreadInitThunk [00007FFC11E313D2]
0: RtlUserThreadStart [00007FFC146E54F4]
End of stdout
-- Stderr:
C:\projects\libpmemobj-cpp\tests\cond_var\cond_var.cpp:178 reader_mutex_until - assertion failure: diff < epsilon
End of stderr
CMake Error at C:/projects/libpmemobj-cpp/tests/helpers.cmake:203 (message):
   C:/projects/libpmemobj-cpp/build/tests/Release/cond_var.exe C:/projects/libpmemobj-cpp/build/test/cond_var_0_none/testfile failed: 150
Call Stack (most recent call first):
  C:/projects/libpmemobj-cpp/tests/helpers.cmake:228 (execute_common)
  C:/projects/libpmemobj-cpp/tests/cond_var/cond_var_0.cmake:36 (execute)

Concurrent hash map strict-aliasing warning

On travis builds we get following warning:

In file included from �[01m�[K/libpmemobj-cpp/tests/concurrent_hash_map/concurrent_hash_map.cpp:49�[m�[K:
/libpmemobj-cpp/include/libpmemobj++/experimental/concurrent_hash_map.hpp: In instantiation of '�[01m�[Kvoid pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::rehash(pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::size_type) [with Key = pmem::obj::p<int>; T = pmem::obj::p<int>; Hash = std::hash<pmem::obj::p<int> >; KeyEqual = std::equal_to<pmem::obj::p<int> >; pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::size_type = long unsigned int]�[m�[K':
�[01m�[K/libpmemobj-cpp/tests/concurrent_hash_map/concurrent_hash_map.cpp:133:29:�[m�[K   required from here
�[01m�[K/libpmemobj-cpp/include/libpmemobj++/experimental/concurrent_hash_map.hpp:2960:19:�[m�[K �[01;35m�[Kwarning: �[m�[Kvariable '�[01m�[Kn�[m�[K' set but not used [�[01;35m�[K-Wunused-but-set-variable�[m�[K]
   node_base_ptr_t �[01;35m�[Kn�[m�[K = bp->node_list;
                   �[01;35m�[K^�[m�[K
/libpmemobj-cpp/include/libpmemobj++/experimental/concurrent_hash_map.hpp: In instantiation of '�[01m�[Kbool pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::lookup(const K&, const void*, pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::const_accessor*, bool, void (*)(pmem::obj::pool_base&, pmem::obj::persistent_ptr<pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::node>&, const void*, const node_base_ptr_t&)) [with bool OpInsert = false; K = pmem::obj::p<int>; Key = pmem::obj::p<int>; T = pmem::obj::p<int>; Hash = std::hash<pmem::obj::p<int> >; KeyEqual = std::equal_to<pmem::obj::p<int> >; pmem::obj::experimental::internal::hash_map_base::node_base_ptr_t = pmem::detail::persistent_pool_ptr<pmem::obj::experimental::internal::hash_map_node_base>]�[m�[K':
�[01m�[K/libpmemobj-cpp/include/libpmemobj++/experimental/concurrent_hash_map.hpp:2412:31:�[m�[K   required from '�[01m�[Kpmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::size_type pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::count(const Key&) const [with Key = pmem::obj::p<int>; T = pmem::obj::p<int>; Hash = std::hash<pmem::obj::p<int> >; KeyEqual = std::equal_to<pmem::obj::p<int> >; pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::size_type = long unsigned int]�[m�[K'
�[01m�[K/libpmemobj-cpp/tests/concurrent_hash_map/concurrent_hash_map.cpp:109:4:�[m�[K   required from here
�[01m�[K/libpmemobj-cpp/include/libpmemobj++/experimental/concurrent_hash_map.hpp:2810:15:�[m�[K �[01;35m�[Kwarning: �[m�[Kdereferencing type-punned pointer will break strict-aliasing rules [�[01;35m�[K-Wstrict-aliasing�[m�[K]
            �[01;35m�[Kb->tmp_node�[m�[K),
            �[01;35m�[K~~~^~~~~~~~�[m�[K
/libpmemobj-cpp/include/libpmemobj++/experimental/concurrent_hash_map.hpp: In instantiation of '�[01m�[Kbool pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::lookup(const K&, const void*, pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::const_accessor*, bool, void (*)(pmem::obj::pool_base&, pmem::obj::persistent_ptr<pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::node>&, const void*, const node_base_ptr_t&)) [with bool OpInsert = true; K = pmem::obj::p<int>; Key = pmem::obj::p<int>; T = pmem::obj::p<int>; Hash = std::hash<pmem::obj::p<int> >; KeyEqual = std::equal_to<pmem::obj::p<int> >; pmem::obj::experimental::internal::hash_map_base::node_base_ptr_t = pmem::detail::persistent_pool_ptr<pmem::obj::experimental::internal::hash_map_node_base>]�[m�[K':
�[01m�[K/libpmemobj-cpp/include/libpmemobj++/experimental/concurrent_hash_map.hpp:2738:33:�[m�[K   required from '�[01m�[Kbool pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::generic_move_insert(Accessor&&, pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::value_type&&) [with Accessor = pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>, pmem::obj::p<int> >::accessor_not_used; Key = pmem::obj::p<int>; T = pmem::obj::p<int>; Hash = std::hash<pmem::obj::p<int> >; KeyEqual = std::equal_to<pmem::obj::p<int> >; pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::value_type = std::pair<const pmem::obj::p<int>, pmem::obj::p<int> >]�[m�[K'
�[01m�[K/libpmemobj-cpp/include/libpmemobj++/experimental/concurrent_hash_map.hpp:2624:25:�[m�[K   required from '�[01m�[Kbool pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::insert(pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::value_type&&) [with Key = pmem::obj::p<int>; T = pmem::obj::p<int>; Hash = std::hash<pmem::obj::p<int> >; KeyEqual = std::equal_to<pmem::obj::p<int> >; pmem::obj::experimental::concurrent_hash_map<Key, T, Hash, KeyEqual>::value_type = std::pair<const pmem::obj::p<int>, pmem::obj::p<int> >]�[m�[K'
�[01m�[K/libpmemobj-cpp/tests/concurrent_hash_map/concurrent_hash_map.cpp:106:42:�[m�[K   required from here
�[01m�[K/libpmemobj-cpp/include/libpmemobj++/experimental/concurrent_hash_map.hpp:2810:15:�[m�[K �[01;35m�[Kwarning: �[m�[Kdereferencing type-punned pointer will break strict-aliasing rules```

Windows vcpkg support

It seems libpmemobj-cpp is not in vcpkg yet. I've spent some time trying to build from source on Windows but getting the toolchain aligned is ... challenging :-)

Volatile state for persistent objects.

One possible approach is to have singleton class for every persistent object type which would hold hashmap of volatile objects (volatile state) for every persistent one. This would require support from pmemobj - registering callback which would be called after redo log creation but before processing it (under lock?). This callback would take pointer to object which is destroyed and allow freeing corresponding volatile object.

test: concurrent_hash_map_singlethread_0_none fails on Windows

65/202 Test #66: concurrent_hash_map_singlethread_0_none ...........................***Failed 18.06 sec
-- Executing: D:/libpmemobj-cpp/build/tests/Debug/concurrent_hash_map_singlethread.exe D:/libpmemobj-cpp/build/test/concurrent_hash_map_singlethread_0_none/testfile
-- Test concurrent_hash_map_singlethread_0_none:
-- Stdout:

Signal 22, backtrace:
22: test_dump_backtrace [00007FF7C12F43E3]
21: test_sighandler [00007FF7C12F4561]
20: raise [00007FFC49758201]
19: abort [00007FFC49759D89]
18: get_wide_winmain_command_line [00007FFC4975F46F]
17: get_wide_winmain_command_line [00007FFC4975D488]
16: wassert [00007FFC4975FC6F]
15: pmem::obj::experimental::internal::hash_map_base::add_to_bucket [00007FF7C12EB229]
14: pmem::obj::experimental::internal::hash_map_base::insert_new_node [00007FF7C12F07FC]
13: pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >::internal_copy<pmem::obj::experimental::internal::hash_map_iterator<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,0> > [00007FF7C12DBE39]
12: pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > ><pmem::obj::experimental::internal::hash_map_iterator<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,0> > [00007FF7C12D7DA5]
11: pmem::detail::create<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,pmem::obj::experimental::internal::hash_map_iterator<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,0>,pmem::obj::experimental::internal::hash_map_iterator<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,0> > [00007FF7C12DA581]
10: pmem::obj::make_persistent<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,pmem::obj::experimental::internal::hash_map_iterator<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,0>,pmem::obj::experimental::internal::hash_map_iterator<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,0> > [00007FF7C12DD82C]
9: pmem::obj::make_persistent<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,pmem::obj::experimental::internal::hash_map_iterator<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,0>,pmem::obj::experimental::internal::hash_map_iterator<pmem::obj::experimental::concurrent_hash_map<pmem::obj::p<int>,pmem::obj::p<int>,pmem::obj::experimental::hash_compare<pmem::obj::p<int> > >,0> > [00007FF7C12DD69D]
8: anonymous namespace'::ctor_test [00007FF7C12D3FAC]
6: main [00007FF7C12D658D]
5: invoke_main [00007FF7C12F61C4]
4: __scrt_common_main_seh [00007FF7C12F6087]
3: __scrt_common_main [00007FF7C12F5F4E]
2: mainCRTStartup [00007FF7C12F61E9]
1: BaseThreadInitThunk [00007FFC5A6C13F2]
0: RtlUserThreadStart [00007FFC5C1D54F4]

-- Stderr:
Assertion failed: b->tmp_node->next == b->node_list, file D:\libpmemobj-cpp\include\libpmemobj++/experimental/concurrent_hash_map.hpp, line 1203

CMake Error at D:/libpmemobj-cpp/tests/helpers.cmake:215 (message):
D:/libpmemobj-cpp/build/tests/Debug/concurrent_hash_map_singlethread.exe D:/qba1/libpmemobj-cpp/build/test/concurrent_hash_map_singlethread_0_none/testfile failed: 150
Call Stack (most recent call first):
D:/libpmemobj-cpp/tests/helpers.cmake:267 (execute_common)
D:/libpmemobj-cpp/tests/run_default.cmake:36 (execute)

Found on 2e51f7c

test: obj_cpp_cond_var_posix/TEST1: SETUP (all/non-pmem/static-debug/helgrind)

Found on 9316fc7eaadfc9a7a4a9527116c75c0db135d8db

==28580== Helgrind, a thread error detector
==28580== Copyright (C) 2007-2015, and GNU GPL'd, by OpenWorks LLP et al.
==28580== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info
==28580== Command: ./obj_cpp_cond_var_posix.static-nondebug /dev/shm/LoremipsumdolorsitametconsecteturadipiscingelitVivamuslacinianibhattortordictumsollicitudinNullamvariusvestibulumligulaetegestaselitsemperidMaurisultriciesligulaeuipsumtinciduntluctusMorbimaximusvariusdolorid/LoremipsumdolorsitametconsecteturadipiscingelitVivamuslacinianibhattortordictumsollicitudinNullamvariusvestibulumligulaetegestaselitsemperidMaurisultriciesligulaeuipsumtinciduntluctusMorbimaximusvariusdolorid/LoremipsumdolorsitametconsecteturadipiscingelitVivamuslacinianibhattortordictumsollicitudinNullamvariusvestibulumligulaetegestaselitsemperidMaurisultriciesligulaeuipsumtinciduntluctusMorbimaximusvariusdolorid/LoremipsumdolorsitametconsecteturadipiscingelitVivamuslacinianibhattortordictumsollicitudinNullamvariusvestibulumligulaetegestaselitsemperidMaurisultriciesligulaeuipsumtinciduntluctusMorbimaximusvariusdolorid/LoremipsumdolorsitametconsecteturadipiscingelitVivamuslacinianibhattortordictumsollicitudinNullamvariusvestibulumligulaetegestaselitsemperidMaurisultriciesligulaeuipsumtinciduntluctusMorbimaximusvariusdolorid/test_obj_cpp_cond_var_posix1😘⠝⠧⠍⠇ɗPMDKӜ⥺🙋/testfile1
==28580== Parent PID: 28542
==28580==
==28580==
==28580== For counts of detected and suppressed errors, rerun with: -v
==28580== Use --history-level=approx or =none to gain increased speed, at
==28580== the cost of reduced accuracy of conflicting-access information
==28580== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 24460 from 29)

FEAT: C++ Persistent Containers

C++ Persistent Containers for 1.6

This is a meta-issue for pmem::vector, pmem::string, pmem::map, and pmem::unordered_map.

Rationale

Our C++ bindings cannot be easily used with any existing implementations of basic containers like vector, string or a map. This means that users are effectively left on their own.

Description

We should implement C++ containers are tailored made and optimized for persistent memory. They should be modeled after the STL containers, so that the standard algorithms work, but they won't be drop-in replacements.
We should also provide convenient and safe way of accessing data from those containers. Non-const iterators should automatically snapshot elements in reasonable chunks, and we should also provide a way to access only a range of data from a containers, so that we need to snapshot less.

API Changes

No visible changes.

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)

concurrent_hash_map tests fail

These three tests fail:
147 - concurrent_hash_map_0_drd
148 - concurrent_hash_map_0_helgrind
152 - concurrent_hash_map_rehash_0_helgrind
Tested on two machines:

  • Debian buster (+ pmdk-1.6 from Debian/experimental): gcc-8, valgrind 3.14, kernel 5.1.14
  • Debian unstable + gcc-9 and pmdk-1.6: valgrind 3.14, kernel 5.2-rc6

with same errors.

(ex-pman fail is unrelated: it doesn't like hardcopy terminals w/o addressable cursor; probably too obscure case to bother fixing.)

Logs: buster, unstable.

FEAT: Support for polymorphism in persistent_ptr<>

Per https://software.intel.com/en-us/articles/an-introduction-to-persistent-memory-pointers-in-c-plus-plus and other references in the documentation:

They (persistent pointers) don’t point to polymorphic objects in C++. This means pointers for the base class are not type-compatible with pointers of a derived class. This is due to the lack of a vtable implementation that can be stored safely in persistent memory. This limitation may be addressed in future versions of the C++ bindings.

Is this likely to be addressed in the nearish future, and/or any thoughts on short term workarounds? :-)

Creating arrays

Hi!

I tried creating an application based on your arrays example, but simpler and I always get an error like this:
error: no matching function for call to ‘make_persistent<uint64_t [size]>()’
The relevant code pieces are the struct that describes an entry:

struct entry {
		p<uint64_t> size;
		persistent_ptr<uint64_t[]> entry;
};

And the line where I actually try to create a persistent array:
new_entry->entry = make_persistent<uint64_t[]>(size);

I might be making a really obvious mistake so please just bear with me here.

cpp: CTL/allocation flags

CTL APIs are currently not exposed to the C++ bindings. We need to create convenience wrappers around them, and maybe create an abstraction for allocation classes.
We will also need to allow allocating from custom allocation classes - could be as simple as exposing the flags field, but we might also do a larger wrapper.

"make doc" is noisy without "dot" tool installed

$ make doc
/home/marcin/dev/libpmemobj-cpp/include/libpmemobj++/experimental/vector.hpp:1570: warning: unable to resolve reference to `temp_value' for \ref command
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/allocation__flag_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/allocation__flag_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/allocator_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/allocator_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/condition__variable_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/condition__variable_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array__traits_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array__traits_8hpp__incl.png"'
sh: 1: sh: 1: dot: not found
dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/check__persistent__ptr__array_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/check__persistent__ptr__array_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array__traits_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array__traits_8hpp__dep__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/check__persistent__ptr__array_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/check__persistent__ptr__array_8hpp__dep__incl.png"'
sh: 1: sh: 1: dot: not found
dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/common_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/common_8hpp__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/allocation__flag_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/allocation__flag_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/common_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/common_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/conversions_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/conversions_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/conversions_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/conversions_8hpp__dep__incl.png"'
sh: 1: sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/integer__sequence_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/integer__sequence_8hpp__incl.png"'
dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/ctl_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/ctl_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/iterator__traits_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/iterator__traits_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/integer__sequence_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/integer__sequence_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/ctl_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/ctl_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/iterator__traits_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/iterator__traits_8hpp__dep__incl.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/life_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/life_8hpp__dep__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/life_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/life_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr__base_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr__base_8hpp__incl.png"'
sh: 1: sh: 1: dot: not founddot: not found

error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr__base_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr__base_8hpp__dep__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__atomic__impl_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__atomic__impl_8hpp__dep__incl.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/specialization_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/specialization_8hpp__incl.png"'
sh: 1: sh: 1: dot: not found
dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pexceptions_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pexceptions_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pexceptions_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pexceptions_8hpp__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/specialization_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/specialization_8hpp__dep__incl.png"'
sh: 1: dot: not founderror: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__atomic__impl_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__atomic__impl_8hpp__incl.png"'
sh: 1: dot: not found

error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/temp__value_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/temp__value_8hpp__dep__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/temp__value_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/temp__value_8hpp__incl.png"'
sh: 1: sh: 1: dot: not found
dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/variadic_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/variadic_8hpp__dep__incl.png"'
sh: 1: dot: not founderror: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array_8hpp__incl.png"'

error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array_8hpp__dep__incl.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/basic__string_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/basic__string_8hpp__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/basic__string_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/basic__string_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/contiguous__iterator_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/contiguous__iterator_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/slice_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/slice_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/contiguous__iterator_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/contiguous__iterator_8hpp__dep__incl.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/string_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/string_8hpp__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/slice_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/slice_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/v_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/v_8hpp__incl.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent_8hpp__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/vector_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/vector_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/vector_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/vector_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__array_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__array_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__array_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__array_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/mutex_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/mutex_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__atomic_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__atomic_8hpp__incl.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__array__atomic_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__array__atomic_8hpp__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/mutex_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/mutex_8hpp__dep__incl.png"'
sh: 1: sh: 1: dot: not founddot: not found

error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/p_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/p_8hpp__dep__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr_8hpp__incl.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pext_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pext_8hpp__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/p_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/p_8hpp__incl.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr_8hpp__dep__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pool_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pool_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pext_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pext_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pool_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pool_8hpp__dep__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/shared__mutex_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/shared__mutex_8hpp__incl.png"'
sh: 1: dot: not foundsh: 1: dot: not found

error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/timed__mutex_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/timed__mutex_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/transaction_8hpp__dep__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/transaction_8hpp__dep__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/transaction_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/transaction_8hpp__incl.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__alloc__error__inherit__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__alloc__error__inherit__graph.png"'
sh: 1: sh: 1: dot: not found
dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__error__inherit__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__error__inherit__graph.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/utils_8hpp__incl.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/utils_8hpp__incl.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__alloc__error__coll__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__alloc__error__coll__graph.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__free__error__coll__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__free__error__coll__graph.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__free__error__inherit__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__free__error__inherit__graph.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1detail_1_1persistent__ptr__base__inherit__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1detail_1_1persistent__ptr__base__inherit__graph.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1persistent__ptr__coll__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1persistent__ptr__coll__graph.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1persistent__ptr__inherit__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1persistent__ptr__inherit__graph.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1pool__coll__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1pool__coll__graph.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1pool__inherit__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1pool__inherit__graph.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1pool__base__inherit__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1pool__base__inherit__graph.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1transaction_1_1automatic__coll__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1transaction_1_1automatic__coll__graph.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1basic__contiguous__iterator__inherit__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1basic__contiguous__iterator__inherit__graph.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1basic__contiguous__iterator__coll__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1basic__contiguous__iterator__coll__graph.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1range__snapshotting__iterator__inherit__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1range__snapshotting__iterator__inherit__graph.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1experimental_1_1vector__coll__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1experimental_1_1vector__coll__graph.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1range__snapshotting__iterator__coll__graph.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1range__snapshotting__iterator__coll__graph.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/graph_legend.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/graph_legend.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/dir_260aea9212bad7ad28b9965711bc32cc_dep.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/dir_260aea9212bad7ad28b9965711bc32cc_dep.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/dir_78fd0ef1c12e2c4e76100e472fbc448e_dep.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/dir_78fd0ef1c12e2c4e76100e472fbc448e_dep.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/dir_55fd483c9ae557ee09ad95ebc247273e_dep.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/dir_55fd483c9ae557ee09ad95ebc247273e_dep.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_0.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_0.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_2.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_2.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_4.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_4.png"'
sh: 1: dot: not found
sh: 1: dot: not founderror: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_5.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_5.png"'

error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_3.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_3.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_7.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_7.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_6.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_6.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_9.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_9.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_8.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_8.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_12.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_12.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_11.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_11.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_10.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_10.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_13.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_13.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_14.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_14.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_15.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_15.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_17.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_17.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_16.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_16.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_19.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_19.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_18.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_18.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_20.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_20.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_21.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_21.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_22.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_22.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_25.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_25.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_24.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_24.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_23.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_23.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_26.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_26.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_27.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_27.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_28.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_28.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_29.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_29.png"'
sh: 1: dot: not found
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_30.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_30.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_31.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_31.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_32.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_32.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_33.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_33.png"'
sh: 1: dot: not foundsh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_35.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_35.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_36.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_36.png"'
sh: 1: dot: not found

error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_37.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_37.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_34.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_34.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_38.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_38.png"'
sh: 1: sh: 1: dot: not founddot: not found

error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_40.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_40.png"'
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_39.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_39.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_1.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_1.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_44.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_44.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_41.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_41.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_42.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_42.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_46.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_46.png"'
sh: 1: dot: not found
sh: 1: error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_43.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_43.png"'
sh: 1: dot: not found
error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_48.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_48.png"'
sh: 1: dot: not found
dot: not founderror: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_45.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_45.png"'

error: Problems running dot: exit code=127, command='dot', arguments='"/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_47.dot" -Tpng -o "/home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_47.png"'
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/allocation__flag_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/allocation__flag_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/allocator_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/condition__variable_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array__traits_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array__traits_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/check__persistent__ptr__array_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/check__persistent__ptr__array_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/common_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/common_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/conversions_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/conversions_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/ctl_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/ctl_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/integer__sequence_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/integer__sequence_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/iterator__traits_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/iterator__traits_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/life_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/life_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__atomic__impl_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__atomic__impl_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr__base_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr__base_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pexceptions_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pexceptions_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/specialization_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/specialization_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/temp__value_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/temp__value_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/variadic_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/array_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/basic__string_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/basic__string_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/contiguous__iterator_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/contiguous__iterator_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/slice_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/slice_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/string_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/v_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/vector_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/vector_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__array_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__array_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__array__atomic_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/make__persistent__atomic_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/mutex_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/mutex_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/p_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/p_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/persistent__ptr_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pext_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pext_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pool_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/pool_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/shared__mutex_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/timed__mutex_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/transaction_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/transaction_8hpp__dep__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/utils_8hpp__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__alloc__error__inherit__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__alloc__error__coll__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__error__inherit__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__free__error__inherit__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1transaction__free__error__coll__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1detail_1_1persistent__ptr__base__inherit__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1persistent__ptr__inherit__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1persistent__ptr__coll__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1pool__inherit__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1pool__coll__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1pool__base__inherit__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1transaction_1_1automatic__coll__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1basic__contiguous__iterator__inherit__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1basic__contiguous__iterator__coll__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1range__snapshotting__iterator__inherit__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/structpmem_1_1obj_1_1experimental_1_1range__snapshotting__iterator__coll__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/classpmem_1_1obj_1_1experimental_1_1vector__coll__graph.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/dir_260aea9212bad7ad28b9965711bc32cc_dep.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/dir_55fd483c9ae557ee09ad95ebc247273e_dep.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/dir_78fd0ef1c12e2c4e76100e472fbc448e_dep.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_0.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_1.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_2.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_3.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_4.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_5.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_6.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_7.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_8.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_9.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_10.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_11.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_12.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_13.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_14.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_15.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_16.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_17.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_18.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_19.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_20.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_21.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_22.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_23.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_24.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_25.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_26.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_27.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_28.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_29.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_30.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_31.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_32.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_33.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_34.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_35.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_36.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_37.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_38.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_39.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_40.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_41.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_42.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_43.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_44.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_45.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_46.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_47.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
error: problems opening map file /home/marcin/dev/libpmemobj-cpp/build/doc/cpp_html/inherit_graph_48.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run, 
try deleting the output directory and rerun doxygen.
Built target doc

It probably shouldn't succeed, but it did...

gh-pages branch should be cleaned from doubled code

On gh-pages branch there are copies of jquery.js, sizzle.js, search/search.js, and dynsections.js. These "helpers" code is copied for each release/branch we have.

This could be omitted if we create folder with these scripts and generate doxygen pointing to proper place (change relative path to these scripts in our generated documentation).

ref. #394

build fail on examples

All libraries should be installed, when trying to compile the examples, but I am getting errors on vector.hpp. I am using gcc 7.3.1 on centos 7, how do I fix this error ?

[ 2%] Building CXX object tests/CMakeFiles/vector_range.dir/vector_range/vector_range.cpp.o
In file included from /home/labuser/Graftek/libpmemobj-cpp/tests/vector_range/vector_range.cpp:36:0:
/home/labuser/PDME/libpmemobj-cpp/include/libpmemobj++/experimental/vector.hpp: In lambda function:
/home/labuser/PDME/libpmemobj-cpp/include/libpmemobj++/experimental/vector.hpp:1715:26: error: parameter packs not expanded with ‘...’:
tmp(std::forward(args)...);
^
/home/labuser/PDME/libpmemobj-cpp/include/libpmemobj++/experimental/vector.hpp:1715:26: note: ‘args’
/home/labuser/PDME/libpmemobj-cpp/include/libpmemobj++/experimental/vector.hpp: In lambda function:
/home/labuser/PDME/libpmemobj-cpp/include/libpmemobj++/experimental/vector.hpp:1774:43: error: parameter packs not expanded with ‘...’:
construct(size(), 1, std::forward(args)...);
^
/home/labuser/PDME/libpmemobj-cpp/include/libpmemobj++/experimental/vector.hpp:1774:43: note: ‘args’
make[2]: *** [tests/CMakeFiles/vector_range.dir/vector_range/vector_range.cpp.o] Error 1
make[1]: *** [tests/CMakeFiles/vector_range.dir/all] Error 2
make: *** [all] Error 2

Use self-relative ptrs in containers

Rationale

Current implementation of libpmemobj-cpp is based on persistent_ptr which is in fact a fat pointer. It stores PMEMoid which consists of two 64 bit fileds: pool_uuid and offset. Every dereference of peristent_ptr requires a call to pmemobj_direct function which calculates real address based on PMEMoid. Because of the nature of pmemobj_direct calls to this function cannot be optimized by the compiler and as a result using persistent_ptr is much slower than regular pointers.

Proposal

To address performance problems of peristent_ptr new pointer type with offset addressing model could be introduced. This new type of pointer would have only one 64 bit field: offset. Pointer value would be equal to offset + address of the pointer itself. This pointer would allow compiler to perform much better optimizations as no pmemobj function is required to be called during dereference. Additional benefit over persistent_ptr is smaller size.

The only limitation of this new type of pointer is that it cannot point to objects in another pool.

tests use pmemcheck unconditionally

A lot of tests fail with:

valgrind: failed to start tool 'pmemcheck' for platform 'amd64-linux': No such file or directory

Until we somehow manage to upstream or package pmemcheck, such tests need to detect and skip.

fails to find TBB

At least on Debian (and untried Ubuntu — which has unmodified packages from Debian) the build system fails to find TBB:

CMake Warning at CMakeLists.txt:157 (find_package):
  By not providing "FindTBB.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "TBB", but
  CMake did not find one.

  Could not find a package configuration file provided by "TBB" with any of
  the following names:

    TBBConfig.cmake
    tbb-config.cmake

  Add the installation prefix of "TBB" to CMAKE_PREFIX_PATH or set "TBB_DIR"
  to a directory containing one of the above files.  If "TBB" provides a
  separate development package or SDK, be sure it has been installed.

The relevant files installed by libtbb-dev are:

/usr/lib/x86_64-linux-gnu/pkgconfig/tbb.pc
/usr/share/cmake/Modules/FindTBB.cmake
/usr/share/cmake/Modules/README.rst
/usr/share/cmake/Modules/TBBBuild.cmake
/usr/share/cmake/Modules/TBBGet.cmake
/usr/share/cmake/Modules/TBBMakeConfig.cmake
/usr/share/cmake/Modules/tbb_config_generator.cmake
/usr/share/cmake/Modules/templates/TBBConfig.cmake.in
/usr/share/cmake/Modules/templates/TBBConfigForSource.cmake.in
/usr/share/cmake/Modules/templates/TBBConfigVersion.cmake.in

Compile error

when I clone this repo and try to compile it. I get a compile error. It shows that CMakeFile.txt has some problem. The error information is below:

`CMake Error at CMakeLists.txt:136 (list):
list index: 1 out of range (-1, 0)

CMake Error at CMakeLists.txt:141 (list):
list index: 2 out of range (-2, 1)

CMake Error at CMakeLists.txt:150 (math):
math cannot parse the expression: " + * 100 + 13b613114c * 10000": syntax
error, unexpected exp_TIMES, expecting exp_PLUS or exp_MINUS or
exp_OPENPARENT or exp_NUMBER (5)
`

All compile log is :

`-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Perl: /usr/bin/perl (found version "5.26.1")
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Performing Test CXX_HAS_/Zc:_cplusplus
-- Performing Test CXX_HAS
/Zc:__cplusplus - Failed
cat: .version: 没有那个文件或目录
-- Checking for module 'libpmemobj>=1.4'
-- Found libpmemobj, version 13b613114c
CMake Error at CMakeLists.txt:136 (list):
list index: 1 out of range (-1, 0)

CMake Error at CMakeLists.txt:141 (list):
list index: 2 out of range (-2, 1)

CMake Error at CMakeLists.txt:150 (math):
math cannot parse the expression: " + * 100 + 13b613114c * 10000": syntax
error, unexpected exp_TIMES, expecting exp_PLUS or exp_MINUS or
exp_OPENPARENT or exp_NUMBER (5)

-- Checking for module 'tbb'
-- No package 'tbb' found
CMake Warning at cmake/tbb.cmake:38 (find_package):
By not providing "FindTBB.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "TBB", but
CMake did not find one.

Could not find a package configuration file provided by "TBB" with any of
the following names:

TBBConfig.cmake
tbb-config.cmake

Add the installation prefix of "TBB" to CMAKE_PREFIX_PATH or set "TBB_DIR"
to a directory containing one of the above files. If "TBB" provides a
separate development package or SDK, be sure it has been installed.
Call Stack (most recent call first):
CMakeLists.txt:152 (include)

CMake Warning at cmake/tbb.cmake:48 (message):
TBB not found. Please set TBB_DIR CMake variable if TBB is installed in a
non-standard directory, like: -DTBB_DIR=<path_to_tbb_cmake_dir>
Call Stack (most recent call first):
CMakeLists.txt:152 (include)

-- Performing Test PMEMVLT_PRESENT
-- Performing Test PMEMVLT_PRESENT - Success
-- Performing Test NO_GCC_VARIADIC_TEMPLATE_BUG
-- Performing Test NO_GCC_VARIADIC_TEMPLATE_BUG - Success
-- Performing Test NO_GCC_AGGREGATE_INITIALIZATION_BUG
-- Performing Test NO_GCC_AGGREGATE_INITIALIZATION_BUG - Success
-- Performing Test NO_CLANG_BRACE_INITIALIZATION_NEWEXPR_BUG
-- Performing Test NO_CLANG_BRACE_INITIALIZATION_NEWEXPR_BUG - Success
-- Performing Test NO_CLANG_TEMPLATE_BUG
-- Performing Test NO_CLANG_TEMPLATE_BUG - Success
-- Performing Test NO_CHRONO_BUG
-- Performing Test NO_CHRONO_BUG - Success
-- Performing Test MAX_ALIGN_TYPE_EXISTS
-- Performing Test MAX_ALIGN_TYPE_EXISTS - Success
-- Performing Test AGGREGATE_INITIALIZATION_AVAILABLE
-- Performing Test AGGREGATE_INITIALIZATION_AVAILABLE - Failed
-- Performing Test CXX_HAS__DLIBPMEMOBJ_CPP_VG_MEMCHECK_ENABLED_1
-- Performing Test CXX_HAS__DLIBPMEMOBJ_CPP_VG_MEMCHECK_ENABLED_1 - Success
-- Performing Test CXX_HAS__DLIBPMEMOBJ_CPP_VG_DRD_ENABLED_1
-- Performing Test CXX_HAS__DLIBPMEMOBJ_CPP_VG_DRD_ENABLED_1 - Success
-- Performing Test CXX_HAS__DLIBPMEMOBJ_CPP_VG_HELGRIND_ENABLED_1
-- Performing Test CXX_HAS__DLIBPMEMOBJ_CPP_VG_HELGRIND_ENABLED_1 - Success
CMake Warning at cmake/functions.cmake:190 (message):
Valgrind pmemcheck NOT found.
Call Stack (most recent call first):
CMakeLists.txt:309 (find_pmemcheck)

-- Performing Test CXX_HAS__Wall
-- Performing Test CXX_HAS__Wall - Success
-- Performing Test CXX_HAS__Wpointer_arith
-- Performing Test CXX_HAS__Wpointer_arith - Success
-- Performing Test CXX_HAS__Wunused_macros
-- Performing Test CXX_HAS__Wunused_macros - Success
-- Performing Test CXX_HAS__Wsign_conversion
-- Performing Test CXX_HAS__Wsign_conversion - Success
-- Performing Test CXX_HAS__Wsign_compare
-- Performing Test CXX_HAS__Wsign_compare - Success
-- Performing Test CXX_HAS__Wunreachable_code_return
-- Performing Test CXX_HAS__Wunreachable_code_return - Failed
-- Performing Test CXX_HAS__Wmissing_variable_declarations
-- Performing Test CXX_HAS__Wmissing_variable_declarations - Failed
-- Performing Test CXX_HAS__fno_common
-- Performing Test CXX_HAS__fno_common - Success
-- Performing Test CXX_HAS__ggdb
-- Performing Test CXX_HAS__ggdb - Success
-- Performing Test CXX_HAS__DDEBUG
-- Performing Test CXX_HAS__DDEBUG - Success
-- Performing Test CXX_HAS__U_FORTIFY_SOURCE__D_FORTIFY_SOURCE_2
-- Performing Test CXX_HAS__U_FORTIFY_SOURCE__D_FORTIFY_SOURCE_2 - Success
-- Pmreorder will not be used. Pmemcheck must be installed in version 1.X
CMake Warning at tests/CMakeLists.txt:108 (message):
Skipping aggregate initialization test because of no compiler support

CMake Warning at tests/CMakeLists.txt:236 (message):
Skipping pmreorder tests because of no pmreorder support

CMake Warning at tests/CMakeLists.txt:345 (message):
Skipping concurrent_hash_map_tbb test because it was not enabled.

CMake Warning at tests/CMakeLists.txt:360 (message):
Skipping pmreorder tests because of no pmreorder support

-- Found Doxygen: /usr/bin/doxygen (found version "1.8.13") found components: doxygen dot
-- Configuring incomplete, errors occurred!
See also "/home/wangep/libpmemobj-cpp-master/build/CMakeFiles/CMakeOutput.log".
See also "/home/wangep/libpmemobj-cpp-master/build/CMakeFiles/CMakeError.log".
`

string:memcheck tests fail

In Debian build environment (ie, a sanitized chroot with only base + build-dep packages installed), 84 tests fail, all of them string:memcheck. Source used is tag 1.7 (my Debian/Ubuntu packaging in preparation). gcc 8, valgrind 3.14, pmdk 1.6.

Logs from two host machines: Skylake ÷ kernel 5.1.14, Pinnacle Ridge ÷ kernel 5.2-rc6 — as expected, no differences.

Both machines have fake pmem present in the system but not reachable from the chroot; all packages are unmodified from the distro.

CMake Error at examples/CMakeLists.txt:139 (list)

Fatal error during building:

$ mkdir build
$ cd build
$ cmake ..

CMake Error at examples/CMakeLists.txt:139 (list):
  list GET given empty list

-- Configuring incomplete, errors occurred!
See also "/home/ldorau/work/libpmemobj-cpp/build/CMakeFiles/CMakeOutput.log".
See also "/home/ldorau/work/libpmemobj-cpp/build/CMakeFiles/CMakeError.log".

The whole output:

$ cmake ..
CMake Warning at tests/ctest_helpers.cmake:159 (message):
  Pmemobj does not support PMEMOBJ_COW.  Pmreorder tests will not be
  performed.
Call Stack (most recent call first):
  tests/ctest_helpers.cmake:202 (check_pmemobj_cow_support)
  tests/CMakeLists.txt:89 (find_packages)


CMake Warning at tests/CMakeLists.txt:116 (message):
  Skipping aggregate initialization test because of no compiler support


CMake Warning at tests/CMakeLists.txt:244 (message):
  Skipping pmreorder tests because of no pmreorder support


CMake Error at examples/CMakeLists.txt:139 (list):
  list GET given empty list


-- Configuring incomplete, errors occurred!
See also "/home/ldorau/work/libpmemobj-cpp/build/CMakeFiles/CMakeOutput.log".
See also "/home/ldorau/work/libpmemobj-cpp/build/CMakeFiles/CMakeError.log".

FEAT: C++ change atomic make persistent to allow nesting

C++ change atomic make persistent to allow nesting

Rationale

make_persistent_atomic currently uses pmemobj_alloc and calls the class constructor in the constructor of the object. This means that a class constructor cannot allocate any more persistent memory.

Description

This can be solved by instead using the pmemobj_reserve call, and building out the reservations, starting from the first constructor, in thread local memory.

API Changes

No visible changes.

how to compile with clang ?

i try it like that:
$export CC=/usr/bin/clang-3.6
$export CXX=/usr/bin/clang++-3.6
$cmake ..
$make

but i got a error like below:
In file included from /home/brook/pmem/libpmemobj-cpp/tests/allocator/allocator.cpp:43:
/home/brook/pmem/libpmemobj-cpp/include/libpmemobj++/transaction.hpp:470:29: error: no member named 'is_trivially_copyable' in
namespace 'std'
typename std::enable_if<IS_TRIVIALLY_COPYABLE(T), T>::type * =
^~~~~~~~~~~~~~~~~~~~~~~~
/home/brook/pmem/libpmemobj-cpp/include/libpmemobj++/detail/common.hpp:101:39: note: expanded from macro 'IS_TRIVIALLY_COPYABLE'
#define IS_TRIVIALLY_COPYABLE(T) std::is_trivially_copyable::value
~~~~~^
In file included from /home/brook/pmem/libpmemobj-cpp/tests/allocator/allocator.cpp:43:
/home/brook/pmem/libpmemobj-cpp/include/libpmemobj++/transaction.hpp:470:51: error: 'T' does not refer to a value
typename std::enable_if<IS_TRIVIALLY_COPYABLE(T), T>::type * =
^
/home/brook/pmem/libpmemobj-cpp/include/libpmemobj++/detail/common.hpp:101:61: note: expanded from macro 'IS_TRIVIALLY_COPYABLE'
#define IS_TRIVIALLY_COPYABLE(T) std::is_trivially_copyable::value
^
/home/brook/pmem/libpmemobj-cpp/include/libpmemobj++/transaction.hpp:469:21: note: declared here
template <typename T,
^
/home/brook/pmem/libpmemobj-cpp/include/libpmemobj++/transaction.hpp:470:59: error: no type named 'type' in the global namespace
typename std::enable_if<IS_TRIVIALLY_COPYABLE(T), T>::type * =
~~^
/home/brook/pmem/libpmemobj-cpp/include/libpmemobj++/transaction.hpp:470:66: error: expected member name or ';' after declaration
specifiers
typename std::enable_if<IS_TRIVIALLY_COPYABLE(T), T>::type * =
~~~~~~ ^
/home/brook/pmem/libpmemobj-cpp/include/libpmemobj++/transaction.hpp:404:14: error: use of undeclared identifier 'add_lock'
auto err = add_lock(locks...);
^
/home/brook/pmem/libpmemobj-cpp/tests/allocator/allocator.cpp:95:23: note: in instantiation of function template specialization
'pmem::obj::transaction::run<>' requested here
nvobj::transaction::run(pop, [&] {
^
5 errors generated.

Allowing persistent containers to be stored in volatile memory.

Currently, persistent vector, array and string are not allowed on volatile memory (including stack). This makes it impossible to pass/return those containers by value. This limitation was introduced to decrease possibility of a persistent memory leak. Persistent containers always allocate from pmem so if a crash would occur before the container is moved to persistent memory we would have no way to access memory which was managed by the container.

cannot build from github - 'Is a directory'

The version of this library in Debian is old. I tried compiling source downloaded from github, but it doesn't compile, with error message:
/usr/bin/ld: cannot open output file concurrent_hash_map_singlethread: Is a directory

[README] Requirements should include C++11 compiler version

There was a recent thread on the PMEM Google Group relating to a compilation issue. The solution was to use a recent gcc version that supports C++11. We should document this requirement and recommended minimum Linux/Windows compiler version in the README 'Requirements' section for others to follow.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.