Subject: Re: [Boost-bugs] [Boost C++ Libraries] #9912: shared_ptr SEGV in Android debug builds
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-04-19 09:01:05
#9912: shared_ptr SEGV in Android debug builds
-------------------------------+-----------------------
Reporter: ian@⦠| Owner: pdimov
Type: Bugs | Status: new
Milestone: To Be Determined | Component: smart_ptr
Version: Boost 1.55.0 | Severity: Problem
Resolution: | Keywords:
-------------------------------+-----------------------
Comment (by pdimov):
> Also, the armeabi binary exhibits the crash on the Nexus 7, while the
armeabi-v7a does not.
The problem is that, while the ARMv7 and ARMv6 instruction sets have
support for memory barriers (the former via a dedicated instruction, DMB,
the latter by using the coprocessor #15), earlier instruction sets do not.
(Presumably pre-ARMv6 chips didn't support multiprocessing.)
Since the Nexus 7 is a multicore device (I suppose), it needs the memory
barriers to be present in the code for the spinlock to work properly. But,
since the default configuration doesn't define any ARMv6/ARMv7 macro, we
have no way of inserting a memory barrier as we have to assume an earlier
instruction set.
In principle, one should be able to compile for ARMv6+ while still using
the earlier ABI, but I don't know how.
I'm not sure how we can fix that problem on our side. The only option
seems to be to disable spinlock_gcc_arm.hpp altogether when not on ARMv6+
and fall back to phtreads.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/9912#comment:5> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:16 UTC