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 |
|
---|