Merge "RefBase: test for stack check" am: 5daa3bb90e
am: 643d08e706
am: fcd246e6f3
Original change: https://android-review.googlesource.com/c/platform/system/core/+/2169132 Change-Id: Ia4dae75b5b623646531e1bc4978ae1d9ca2b468f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
f0ce53c05a
4 changed files with 7 additions and 6 deletions
|
@ -149,8 +149,8 @@ namespace android {
|
|||
// Same for weak counts.
|
||||
#define BAD_WEAK(c) ((c) == 0 || ((c) & (~MAX_COUNT)) != 0)
|
||||
|
||||
// see utils/StrongPointer.h - declared there for legacy reasons
|
||||
void sp_report_stack_pointer();
|
||||
// name kept because prebuilts used to use it from inlining sp<> code
|
||||
void sp_report_stack_pointer() { LOG_ALWAYS_FATAL("RefBase used with stack pointer argument"); }
|
||||
|
||||
// Check whether address is definitely on the calling stack. We actually check whether it is on
|
||||
// the same 4K page as the frame pointer.
|
||||
|
|
|
@ -275,6 +275,11 @@ TEST(RefBase, DoubleOwnershipDeath) {
|
|||
EXPECT_FALSE(isDeleted);
|
||||
}
|
||||
|
||||
TEST(RefBase, StackOwnershipDeath) {
|
||||
bool isDeleted;
|
||||
EXPECT_DEATH({ Foo foo(&isDeleted); foo.incStrong(nullptr); }, "");
|
||||
}
|
||||
|
||||
// Set up a situation in which we race with visit2AndRremove() to delete
|
||||
// 2 strong references. Bar destructor checks that there are no early
|
||||
// deletions and prior updates are visible to destructor.
|
||||
|
|
|
@ -21,7 +21,4 @@
|
|||
namespace android {
|
||||
|
||||
void sp_report_race() { LOG_ALWAYS_FATAL("sp<> assignment detected data race"); }
|
||||
|
||||
void sp_report_stack_pointer() { LOG_ALWAYS_FATAL("sp<> constructed with stack pointer argument"); }
|
||||
|
||||
}
|
||||
|
|
|
@ -184,7 +184,6 @@ COMPARE_STRONG_FUNCTIONAL(>=, std::greater_equal)
|
|||
|
||||
// For code size reasons, we do not want these inlined or templated.
|
||||
void sp_report_race();
|
||||
void sp_report_stack_pointer();
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// No user serviceable parts below here.
|
||||
|
|
Loading…
Reference in a new issue