| 1 | The procedures below proof that boost shared_ptr fails with EINVAL on
|
|---|
| 2 | AIX 7.1 if compiled using atomic.
|
|---|
| 3 |
|
|---|
| 4 | Note: ilona is our test application which is using the boost library.
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 | preconditions
|
|---|
| 9 | ==============
|
|---|
| 10 | patched: boost_1_55_0/boost/smart_ptr/detail/lwm_pthreads.hpp
|
|---|
| 11 | changes: added logging which reports locking errors and class
|
|---|
| 12 | ctor/dtor;
|
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 | patched: ilona.pbp
|
|---|
| 16 | changes: only builds ilona static/sharable objects including
|
|---|
| 17 | a simple test application (ilona_activator_test)
|
|---|
| 18 |
|
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 | build#1
|
|---|
| 22 | =======
|
|---|
| 23 | Build boost 1.55 on RHEL6 and AIX71 using identical bootstrap options.
|
|---|
| 24 |
|
|---|
| 25 |
|
|---|
| 26 | rhel6
|
|---|
| 27 | -----
|
|---|
| 28 | boost build: ./log/build-boost_x86_64-pc-linux-rhel6-gnu-64-debug.log
|
|---|
| 29 | ilona build: ./log/build-ilona_x86_64-pc-linux-rhel6-gnu-64-debug.log
|
|---|
| 30 |
|
|---|
| 31 |
|
|---|
| 32 | aix71
|
|---|
| 33 | -----
|
|---|
| 34 | boost build: build-boost-aix71-15663342-debug.log
|
|---|
| 35 | ilona build: build-ilona-aix71-16121982-debug.log
|
|---|
| 36 |
|
|---|
| 37 |
|
|---|
| 38 | - Both systems do have identical component configuration (check
|
|---|
| 39 | both boost logs).
|
|---|
| 40 | - Both system have no issues when building the boost library
|
|---|
| 41 | including the test application;
|
|---|
| 42 | - The files created in the stage/lib for both boost build differ,
|
|---|
| 43 | on aix also libboost_atomic.a is created;
|
|---|
| 44 |
|
|---|
| 45 | rhel6: libboost_filesystem.a libboost_program_options.a libboost_regex.a libboost_serialization.a libboost_system.a libboost_thread.a libboost_wserialization.a
|
|---|
| 46 |
|
|---|
| 47 | aix71: libboost_filesystem.a libboost_program_options.a libboost_regex.a libboost_serialization.a libboost_system.a libboost_thread.a libboost_wserialization.a
|
|---|
| 48 | libboost_atomic.a
|
|---|
| 49 |
|
|---|
| 50 | - On aix executing ilona_test_activator_test fails, check the ilona build
|
|---|
| 51 | log "build-ilona-aix71-16121982-debug.log";
|
|---|
| 52 |
|
|---|
| 53 | A coredump is create: core.5308560.04090902
|
|---|
| 54 | A trace trace is provided in file: callstack.log
|
|---|
| 55 |
|
|---|
| 56 |
|
|---|
| 57 |
|
|---|
| 58 | build#2
|
|---|
| 59 | =======
|
|---|
| 60 | Build boost 1.55 on AIX71, only change with build#1 is that compiler
|
|---|
| 61 | option -DBOOST_THREAD_DONT_USE_ATOMIC has been defined.
|
|---|
| 62 |
|
|---|
| 63 |
|
|---|
| 64 | AIX71
|
|---|
| 65 | -----
|
|---|
| 66 | boost build: build-boost-aix71-12583090-debug.log
|
|---|
| 67 | ilona build: build-ilona-aix71-11796734-debug.log
|
|---|
| 68 |
|
|---|
| 69 |
|
|---|
| 70 | - The files created in the stage/lib are identical to build#1
|
|---|
| 71 |
|
|---|
| 72 | aix71: libboost_filesystem.a libboost_program_options.a libboost_regex.a libboost_serialization.a libboost_system.a libboost_thread.a libboost_wserialization.a
|
|---|
| 73 | libboost_atomic.a
|
|---|
| 74 |
|
|---|
| 75 | - On aix executing ilona_test_activator_test succeeds, check the ilona build
|
|---|
| 76 | log "build-ilona-aix71-11796734-debug.log";
|
|---|
| 77 |
|
|---|
| 78 |
|
|---|
| 79 | CONCLUSION: when BOOST_THREAD_DONT_USE_ATOMIC is defined no build/runtime errors occur.
|
|---|
| 80 | Internally in boost file smart_ptr/detail/lwm_pthreads.hpp is not used anymore.
|
|---|
| 81 |
|
|---|
| 82 |
|
|---|
| 83 |
|
|---|
| 84 |
|
|---|