Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2006-03-22 22:24:56

"Peter Dimov" <pdimov_at_[hidden]> writes:

> Peter Dimov wrote:
>> John Maddock wrote:
>>> Program received signal SIGSEGV, Segmentation fault
>>> si_code: 1 - SEGV_MAPERR - Address not mapped to object.
>>> 0x40601e1 in boost::detail::atomic_decrement (pw=0x40014bd4)
>>> at sp_counted_base_gcc_ia64.hpp:52
>> The problem is that in
>> __asm__ (" fetchadd4.rel %0=[%2],-1 ;; \n"
>> the %2 register (r15 in my test) contains 0x40014bd4, while the
>> address of *pw is actually 0x2000000040014bd4. Apparently g++ needs
>> to be informed of the fact that %2 is an address register, not a data
>> register. Now I only need to find out how to do that.
> I fixed it. shared_ptr_test with -O0 -g still segfaults on td176, but this
> has nothing to do with the inline asm, as the same fault occurs
> with -DBOOST_SP_DISABLE_THREADS. shared_ptr_test -O2 works fine, as does
> smart_ptr_test. I tested the fix on the other IA64 testdrives as well, all
> seem to work. Committed to trunk.
> OK to commit to branch?

Bugfixes on the release branch are always OK until the release manager
freezes it.

Dave Abrahams
Boost Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at