History log of /art/test/141-class-unload/src/Main.java
Revision Date Author Comments
c9658049f924d2faf1e39246d300ca03db8278b6 06-Jul-2017 Chris Larsen <chris.larsen@imgtec.com> Eliminate false negatives from ART 141-class-unload test.

This test looks for memory mappings of the 141-class-unload
class file. In previous versions of Android these mappings
appeared as lines in the file /proc/<pid>/maps which contained
the string "@141-class-unload-ex.jar". Android now uses a
different encoding for these mappings. Memory mappings of the
141-class-unload class file now contain either the string
"141-class-unload-ex.odex", or the string
"141-class-unload-ex.vdex". The test has been updated to now
search for mappings which contain either of these strings.

To see what entries exist in /proc/<pid>/maps file run the ART
test 141-class-unload under the control of the debugger, and set
a breakpoint for Heap::CollectGarbageInternal(). When the
breakpoint is triggered run "adb shell" in a different terminal
window and run the command
"grep 141-class-unload-ex /proc/<pid>/maps".

Test: ./run-test --gdb --debuggable --no-optimize --always-clean 141
This test was run against the emulators for aosp_arm-eng,
aosp_arm64-eng, aosp_mips-eng, aosp_mips64-eng, aosp_x86-eng,
and aosp_x86_64-eng.

Change-Id: Iadf8dc9cb9cc6884d82ff9993c13d24369c4955c
f6c66c3348a2b64e4b6472827e31f711142006e3 17-Dec-2015 Kevin Brodsky <kevin.brodsky@linaro.org> Tests: never use System.err

Always print stack traces to System.out, and replace all
System.err.println()'s with System.out.println().

Follow-up of https://android-review.googlesource.com/#/c/187020/ and
https://android-review.googlesource.com/#/c/407032/.

Test: m test-art-host
m test-art-target
Change-Id: I9ab9cd955a8db25b2ec6673790e5bc924f62c88a
bc1ef6c60dae949002242ffd4c1551b468f04939 30-Mar-2017 Mathieu Chartier <mathieuc@google.com> Do more GCs for test 141

Try to prevent rare race conditions that could cause the class loader
to not be unloaded.

Bug: 36377932
Test: test/testrunner/testrunner.py --host -t 141

Change-Id: I9429350b73c241478d474af37262576a512cc6a6
40d4c7636e51f910b2c9ef226b7183e6ccc9ab4b 08-Nov-2016 neo.chae <neo.chae@lge.com> Add visiting for class loaders in StickyMarkSweep

StickyMarkSweep clear the mark stack,
Because all reachable objects must be referenced by a root or a dirty card.
But, there are some marking hole for class object.

If some object is marked and the object and it's class object is not dirty,
Then class object cannot be marking by card table.

In previous OS including mashmellow,
Class table was maintaned by class linker
and all class object was marked with kVisitRootFlagAllRoots flag.

In N OS,
Class object is not marked with kVisitRootFlagAllRoots.
So, I added new flag to mark class object and using it StickyMarkSweep.

Added regression test in 141-class-unload.

Test: test-art-host
Merged-In: I57599e6db53b260f4c5ef466b63962141b8da5c3

(cherry picked from commit a2d1b28599e38ee0180f0f7130a879eac5be9dec)

Bug: 33924225

Change-Id: I57599e6db53b260f4c5ef466b63962141b8da5c3
Signed-off-by: Hyangseok Chae <neo.chae@lge.com>
021c5f285550bf1cfa435db6a8bc7e77843e2b7d 16-Dec-2016 Nicolas Geoffray <ngeoffray@google.com> Make 141-class-unload more robust under JIT.

Make sure jit is stopped before counting maps.

bug: 29712509
test: 141-class-unload
Change-Id: I52c0fed74556fa228cd73c9c0bc6a1d019df0a1c
a2d1b28599e38ee0180f0f7130a879eac5be9dec 08-Nov-2016 neo.chae <neo.chae@lge.com> Add visiting for class loaders in StickyMarkSweep

StickyMarkSweep clear the mark stack,
Because all reachable objects must be referenced by a root or a dirty card.
But, there are some marking hole for class object.

If some object is marked and the object and it's class object is not dirty,
Then class object cannot be marking by card table.

In previous OS including mashmellow,
Class table was maintaned by class linker
and all class object was marked with kVisitRootFlagAllRoots flag.

In N OS,
Class object is not marked with kVisitRootFlagAllRoots.
So, I added new flag to mark class object and using it StickyMarkSweep.

Added regression test in 141-class-unload.

Test: test-art-host

Change-Id: I57599e6db53b260f4c5ef466b63962141b8da5c3
Signed-off-by: Hyangseok Chae <neo.chae@lge.com>
166aaee6aa39c20c87113b3fcf0dcd81e0a934cb 18-Jul-2016 Andreas Gampe <agampe@google.com> ART: Fix type parameter in tests

Move Class to Class<?>, Constructor to Constructor<?>, and in
general clean up reflection.

Test: m test-art-host-run-test
Change-Id: I3a4223ee8d14d032015edf34bf27135757f7138c
b0e861cb829f190f91579637f93a096fc1a680b7 01-Jul-2016 Mathieu Chartier <mathieuc@google.com> Fix unsafe weak reference usage in test 141

There were patterns like:
WeakRef<Class> klass = ...
klass.get().<method>

These are unsafe since background GC could unload and null out the
weak reference. We now pass the weak reference to another function.

Deleted bad and unsafe test.

Test: test-art-host

Bug: 29889416

Change-Id: I6a8daf678262757e54e5817ec63b7c33f4b156ab
0452f4dcde1b67e4a5ee80e0c1ccd70156bf89ba 29-Apr-2016 Dimitry Ivanov <dimitry@google.com> Supply librarySearchPath to PathClassLoader

PathClassLoader needs librarySearchPath in order to
be able to find native libraries.

The java.library.path property is no longer implicitly
applied to all basedexclassloaders, and needs to be
passed explicitly.

Bug: http://b/28449304
Change-Id: Id5b4273553d783c0f7a964f72ecb2c99f3aeaf6f
(cherry picked from commit 3a79b6389df39928823a7a8e862c2f647a1cd164)
3a79b6389df39928823a7a8e862c2f647a1cd164 29-Apr-2016 Dimitry Ivanov <dimitry@google.com> Supply librarySearchPath to PathClassLoader

PathClassLoader needs librarySearchPath in order to
be able to find native libraries.

The java.library.path property is no longer implicitly
applied to all basedexclassloaders, and needs to be
passed explicitly.

Bug: http://b/28449304
Change-Id: Id5b4273553d783c0f7a964f72ecb2c99f3aeaf6f
b6e20ae17d0881a66c22532e4152ce6779454a92 07-Mar-2016 Nicolas Geoffray <ngeoffray@google.com> Clear inline caches at each full GC.

This fixes occasional failures of 141-class-unload.

Also fix a bug where clearing inline caches also cleared the dex
pc associated with it.

bug:26846185
bug:23128949
Change-Id: I77bf1dee229d7764c3cc21440829c7fba7b37001
91d65e024846717fce3572106cffe9b957b8902c 19-Jan-2016 Roland Levillain <rpl@google.com> Fix various typos in ART's comments and string literals.

Change-Id: I85d628055b1a61647a77fef730c9631c234e22a2
e58991b3b2282b5761f1a6023a16c803e1c4eb45 13-Oct-2015 Mathieu Chartier <mathieuc@google.com> Revert "Revert "Unload oat files""

Fixed a race where two threads calling OatFile::Open could both use
dlopen on the host.

Bug: 22720414

This reverts commit 72da5e7461fec3b1e116050f2e6f233efb9c54f3.

Change-Id: I1636045b724944d2a09417527280784967957095
72da5e7461fec3b1e116050f2e6f233efb9c54f3 13-Oct-2015 Nicolas Geoffray <ngeoffray@google.com> Revert "Unload oat files"

Tentative, will monitor bots if flakiness is fixed.

Bug: 22720414

This reverts commit 18656fefc7e68e2549a8fa93455074d359d1efa8.

Change-Id: I53b645b73207ccd21cad6ddac1de483bcc158794
18656fefc7e68e2549a8fa93455074d359d1efa8 10-Oct-2015 Mathieu Chartier <mathieuc@google.com> Unload oat files

Unregister and delete oat file when we call DexFile.closeDexFile if
all of the dex files are no longer in use. We store the oat file as
the first element of the dex files array (cookie).

Added a test that reads the proc maps to ensure there are no
unload-ex maps. Also some clean up.

Bug: 22720414

Change-Id: I52ab84562d1045e94b9a37aafe57609a14f188f7
910e8275440dd3b70f2e8f6c473ba1707c00261d 30-Sep-2015 Mathieu Chartier <mathieuc@google.com> Revert "Revert "Keep internal stack trace methods declaring classes live""

Fixed some code which used old stack trace representation in throwable.cc.

Bug: 22720414

This reverts commit 45a8522898702f6a725ae19d97bceedc8fc609a6.

Change-Id: I7385075caf649ce76da5d8866fd0031b9e8e5ef4
45a8522898702f6a725ae19d97bceedc8fc609a6 30-Sep-2015 Nicolas Geoffray <ngeoffray@google.com> Revert "Keep internal stack trace methods declaring classes live"

Breaks jdwp tests.

Bug: 22720414

This reverts commit 566fc926942ed57925627d1bd43e099938084f1e.

Change-Id: Ic3544e86af35bf748f9d47e0a4077dcdc206a821
566fc926942ed57925627d1bd43e099938084f1e 29-Sep-2015 Mathieu Chartier <mathieuc@google.com> Keep internal stack trace methods declaring classes live

We now store the declaring classes in the internal stack trace to
make sure class unloading doesn't unload any classes owning methods
in the stack trace.

This fixes DexClassLoaderTest in libcore. Added regression test.

Bug: 22720414

Change-Id: I185f87c8ec0807e83f4661bd5bb5652dba6fc281
a50f9cf85a3c72376a6f3e4d2e673c08169cffde 25-Sep-2015 Mathieu Chartier <mathieuc@google.com> Fix JIT for class unloading

Keep declaring class of method live to prevent unloading.
Wait for JIT to finish compiling before calling Runtime.gc(), this
prevents flaky failures due to classes not being unloaded.

Bug: 22720414

Change-Id: I9fe5e5e39d681bcd22acc2d2f34b0dbc9887708d
598302ac91fd3e990f50e1aa530c3ad61d6d946e 23-Sep-2015 Mathieu Chartier <mathieuc@google.com> Call JNI_OnUnload when class loaders get collected

Added test case to 141-class-unload.

Bug: 22720414
Change-Id: I0575fae72521520a17587e8b0088bf8112705ad8
05aa4d3eb18bdcf2dab0addbc656f5ba28242043 19-Sep-2015 Mathieu Chartier <mathieuc@google.com> Enable class unloading

Also added class unloading test. Added a missing write barrier in
the class linker to fix a heap corruption error.

Bug: 22720414
Change-Id: Iff615d69b574a4438e91d4c844279d202f4f2736