$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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 www.boost-consulting.com