From 4e1bfa06e97f03fc1bb20107ba927c878b98808f Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Mon, 24 Apr 2023 22:45:14 +0000 Subject: [PATCH] Use copy of apex_available in AvailableToSameApexes Modifying the list in-place causes some non-determinism. Test: go test ./cc -run TestStubsForLibraryInMultipleApexes -count 1000 Bug: 275313114 Change-Id: Ia2519e146d97667ad5900cf68ab9935fcbaf08a4 --- android/apex.go | 5 +++-- cc/cc_test.go | 3 --- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/android/apex.go b/android/apex.go index 5bbc02e51..5cc0584e0 100644 --- a/android/apex.go +++ b/android/apex.go @@ -502,8 +502,9 @@ func (m *ApexModuleBase) checkApexAvailableProperty(mctx BaseModuleContext) { // exactly the same set of APEXes (and platform), i.e. if their apex_available // properties have the same elements. func AvailableToSameApexes(mod1, mod2 ApexModule) bool { - mod1ApexAvail := SortedUniqueStrings(mod1.apexModuleBase().ApexProperties.Apex_available) - mod2ApexAvail := SortedUniqueStrings(mod2.apexModuleBase().ApexProperties.Apex_available) + // Use CopyOf to prevent non-determinism (b/275313114#comment1) + mod1ApexAvail := SortedUniqueStrings(CopyOf(mod1.apexModuleBase().ApexProperties.Apex_available)) + mod2ApexAvail := SortedUniqueStrings(CopyOf(mod2.apexModuleBase().ApexProperties.Apex_available)) if len(mod1ApexAvail) != len(mod2ApexAvail) { return false } diff --git a/cc/cc_test.go b/cc/cc_test.go index b986511f0..417ea9c9b 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -3573,9 +3573,6 @@ func TestVersionedStubs(t *testing.T) { } func TestStubsForLibraryInMultipleApexes(t *testing.T) { - // TODO(b/275313114): Test exposes non-determinism which should be corrected and the test - // reenabled. - t.Skip() t.Parallel() ctx := testCc(t, ` cc_library_shared {