android / android/android-test

Tests failing with StackOverflowError cause a secondary OOM in TestExecutor

Offen
#285 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
1.2k
Forks
342
Ø Merge
11 Std. 29 Min.
Gemergte PRs (30 T.)
2

Beschreibung

### Description

### Steps to Reproduce

```java
@Test
public void testWithInfiniteRecursion() {
recurseInfinitely();
}
```

### Expected Results

Test runner reports the StackOverflowError.

### Actual Results

Test runner crashes, because it tries to write the entire stacktrace to the summary writer:

```
Test failed to run to completion. Reason: 'Instrumentation run failed due to 'Process crashed.''. Check device logcat for details
Crash Message:Failed to allocate a 8994568 byte allocation with 462080 free bytes and 451KB until OOM, target footprint 201326592, growth limit 201326592
java.lang.OutOfMemoryError: Failed to allocate a 8994568 byte allocation with 462080 free bytes and 451KB until OOM, target footprint 201326592, growth limit 201326592
at java.lang.StringFactory.newStringFromChars(StringFactory.java:260)
at java.lang.StringFactory.newStringFromBytes(StringFactory.java:245)
at java.lang.StringFactory.newStringFromBytes(StringFactory.java:54)
at java.io.ByteArrayOutputStream.toString(ByteArrayOutputStream.java:221)
at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:68)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:389)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2189)
```

### AndroidX Test and Android OS Versions

AndroidX Test Runner: 1.1.2-alpha01

### Link to a public git repo demonstrating the problem:

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Reproduziere den Fehler mit dem bereitgestellten testWithInfiniteRecursion-Beispiel und untersuche anschließend androidx.test.internal.runner.TestExecutor bei TestExecutor.java:68, wo der Stacktrace in den Summary Writer geschrieben wird. Als erledigt gilt die Aufgabe, wenn der Test Runner den StackOverflowError meldet, ohne mit einem sekundären OutOfMemoryError abzustürzen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
android, java
Bereich
mobile, testing
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
55/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.