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
This commit is contained in:
Spandan Das
2023-04-24 22:45:14 +00:00
parent a23feefdc4
commit 4e1bfa06e9
2 changed files with 3 additions and 5 deletions

View File

@@ -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
}

View File

@@ -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 {