David M Garza wrote:
When I added -DBOOST_SP_USE_PTHREADS smart_ptr_test ran, like John Maddock found already. I assume the following output is correct:
UDT with value 999888777 being destroyed UDT with value 111222333 being destroyed OK UDT with value 54321 being destroyed UDT with value 333 being destroyed UDT with value 222 being destroyed UDT with value 111 being destroyed UDT with value 333222111 being destroyed No errors detected.
For what it's worth, it worked with both -O0 and -O2.
Adding "-D_REENTRANT -pthread " to my original g++ command line, on the other hand, did not change the original behavior.
Combining Peter's and Ben's suggested flags works.
If you use -DBOOST_SP_USE_PTHREADS then the IA64-specific code I wrote for manipulating use counts will not be used. This worked on a dual-Itanium system under Linux, but I have not tested it on either the Itanium 2 or HP-UX. (Nor am I easily able to.) If you could use gdb to find exactly where the segmentation fault or bus error occurs, that might help me to track down the bug. You'll need to use the -g option to g++ in order for gdb to produce useful information. Ben.