We are pleased to announce the release of IcedTea 3.9.0!

The IcedTea project provides a harness to build the source code from OpenJDK using Free Software build tools, along with additional features such as the ability to build against system libraries and support for alternative virtual machines and architectures beyond those supported by OpenJDK.

This release updates our OpenJDK 8 support with the July 2018 security fixes from OpenJDK 8 u181.

If you find an issue with the release, please report it to our bug database under the appropriate component. Development discussion takes place on the distro-pkg-dev OpenJDK mailing list and patches are always welcome.

Full details of the release can be found below.

What’s New?

New in release 3.9.0 (2018-09-27)

  • Security fixes
  • New features
    • PR3623: Allow Shenandoah to be used on all architectures
    • PR3624: Sync desktop files with Fedora/RHEL versions again
    • PR3628: Install symlinks to tapsets in SystemTap directory
  • Import of OpenJDK 8 u172 build 11
    • S8031304: Add dcmd to print all loaded dynamic libraries.
    • S8044107: Add Diagnostic Command to list all ClassLoaders
    • S8055755: Information about loaded dynamic libraries is wrong on MacOSX
    • S8059036: Implement Diagnostic Commands for heap and finalizerinfo
    • S8130400: Test java/awt/image/DrawImage/IncorrectClipXorModeSurface2Surface.java fails with ClassCastException
    • S8136356: Add time zone mappings on Windows
    • S8139673: NMT stack traces in output should show mtcomponent
    • S8147542: ClassCastException when repainting after display resolution change
    • S8154017: Shutdown hooks are racing against shutdown sequence, if System.exit()-calling thread is interrupted
    • S8165466: DecimalFormat percentage format can contain unexpected %
    • S8166772: Touch keyboard is not shown for text components on a screen touch
    • S8169424: src/share/sample/scripting/scriptpad/src/scripts/memory.sh missing #!
    • S8170358: [REDO] 8k class metaspace chunks misallocated from 4k chunk Freelist
    • S8170395: Metaspace initialization queries the wrong chunk freelist
    • S8176072: READING attributes are not available on TSF
    • S8177721: Improve diagnostics in sun.management.Agent#startAgent()
    • S8177758: Regression in java.awt.FileDialog
    • S8183504: 8u131 Win 10, issue with wrong position of Sogou IME popup
    • S8184991: NMT detail diff should take memory type into account
    • S8187331: VirtualSpaceList tracks free space on wrong node
    • S8187629: NMT: Memory miscounting in compiler (C2)
    • S8187658: Bigger buffer for GetAdaptersAddresses
    • S8187685: NMT: Tracking compiler memory usage of thread’s resource area
    • S8187803: JDK part of JavaFX-Swing dialogs appearing behind main stage
    • S8187985: Broken certificate number in debug output
    • S8188855: Fix VS10 build after “8187658: Bigger buffer for GetAdaptersAddresses”
    • S8189599: InitialBootClassLoaderMetaspaceSize and CompressedClassSpaceSize should be checked consistent from MaxMetaspaceSize
    • S8189646: sun/security/ssl/SSLSocketImpl/SSLSocketCloseHang.java failed with “java.net.SocketTimeoutException: Read timed out”
    • S8190442: Backout changes for JDK-8087291 from 8u-dev as it didn’t use main CR id
    • S8190690: Impact on krb5 test cases in the 8u-CPU nightly
    • S8191969: javac produces incorrect RuntimeInvisibleTypeAnnotations length attribute
    • S8192987: keytool should remember real storetype if it is not provided
    • S8193156: Need to backout fixes for JDK-8058547, JDK-8055753, JDK-8085903
    • S8193807: Avoid UnsatisfiedLinkError on AIX by providing empty basic implementations of getSystemCpuLoad and getProcessCpuLoad
  • Import of OpenJDK 8 u181 build 13
    • S8038636: speculative traps break when classes are redefined
    • S8051972: sun/security/pkcs11/ec/ReadCertificates.java fails intermittently
    • S8055008: Clean up code that saves the previous versions of redefined classes
    • S8057570: RedefineClasses() tests fail assert(((Metadata*)obj)->is_valid()) failed: obj is valid
    • S8074373: NMT is not enabled if NMT option is specified after class path specifiers
    • S8076117: EndEntityChecker should not process custom extensions after PKIX validation
    • S8156137: SIGSEGV in ReceiverTypeData::clean_weak_klass_links
    • S8157898: SupportedDSAParamGen.java failed with timeout
    • S8169201: Montgomery multiply intrinsic should use correct name
    • S8170035: When determining the ciphersuite lists, there is no debug output for disabled suites.
    • S8176183: sun/security/mscapi/SignedObjectChain.java fails on Windows
    • S8187045: [linux] Not all libraries in the VM are linked with -z,noexecstack
    • S8187635: On Windows Swing changes keyboard layout on a window activation
    • S8188223: IfNode::range_check_trap_proj() should handler dying subgraph with single if proj
    • S8196224: Even better Internet address support
    • S8196491: Newlines in JAXB string values of SOAP-requests are escaped to “
”
    • S8196854: TestFlushableGZIPOutputStream failing with IndexOutOfBoundsException
    • S8197943: Unable to use JDWP API in JDK 8 to debug JDK 9 VM
    • S8198605: Touch keyboard is shown for a non-focusable text component
    • S8198606: Touch keyboard does not hide, when a text component looses focus
    • S8198794: Hotspot crash on Cassandra 3.11.1 startup with libnuma 2.0.3
    • S8199406: Performance drop with Java JDK 1.8.0_162-b32
    • S8199748: Touch keyboard is not shown, if text component gets focus from other text component
    • S8200359: (tz) Upgrade time-zone data to tzdata2018d
    • S8201433: Fix potential crash in BufImg_SetupICM
    • S8202585: JDK 8u181 l10n resource file update
    • S8202996: Remove debug print statements from RMI fix
    • S8203233: (tz) Upgrade time-zone data to tzdata2018e
    • S8203368: ObjectInputStream filterCheck method throws NullPointerException
    • S8204874: Update THIRDPARTYREADME file
    • S8205491: adjust reflective access checks
  • Backports
  • Bug fixes
    • PR3597: Potential bogus -Wformat-overflow warning with -Wformat enabled
    • PR3600: jni_util.c does not import header file which declares getLastErrorString
    • PR3601: Fix additional -Wreturn-type issues introduced by 8061651
    • PR3630: Use ${datadir} when specifying default tz.properties location
    • PR3632: IcedTea installing symlinks to SystemTap directory rather than individual tapsets
  • AArch64 port
    • S8207345, PR3626: Trampoline generation code reads from uninitialized memory
  • Shenandoah
    • PR3619: Shenandoah broken on s390
    • PR3620: Shenandoah broken on ppc64
    • Allocation failure injection machinery
    • [backport] AArch64 shenandoah_store_check should read evacuation_in_progress as byte
    • [backport] Account trashed regions from coalesced CM-with-UR
    • [backport] Adaptive collection set selection in adaptive policy
    • [backport] Adaptive heuristics accounts trashed cset twice
    • [backport] Adapt upstream object pinning API
    • [backport] Add comments in shenandoah_store_check on direct heap field use
    • [backport] Added diagnostic flag ShenandoahOOMDuringEvacALot
    • [backport] Added missing header file for non-PCH build
    • [backport] Add missing barrier in C1 NIOCheckIndex intrinsic
    • [backport] Add new pinned/cset region state for evac-failure-path
    • [backport] Add ShenandoahRootProcessor API to report threads while scanning roots
    • [backport] Add test to verify Shenandoah is not enabled by default, and enabled with the flag
    • [backport] Add -XX:+ShenandoahVerify to more interesting tests
    • [backport] AESCrypt.implEncryptBlock/AESCrypt.implDecryptBlock intrinsics assume non null inputs
    • [backport] Allow use of fp spills around write barrier
    • [backport] Arraycopy fixes (tests and infrastructure)
    • [backport] Assert Shenandoah-specific safepoints instead of generic ones
    • [backport] Asynchronous region recycling
    • [backport] Avoid notifying about zero waste
    • [backport] barrier moved due to null checks needs to always fix memory edges
    • [backport] Basic support for x86_32: build and run in STW configuration
    • [backport] Bitmap based ShHeapRegionSet
    • [backport] Break heuristics out from ShCollectorPolicy into their own source files
    • [backport] C2 should use heapword-sized object math
    • [backport] Check BS type in immByteMapBase predicate
    • [backport] Cleanup allocation tracking in heuristics
    • [backport] Cleanup and refactor Full GC code
    • [backport] Cleanup and strengthen BrooksPointer verification
    • [backport] Clean up dead code
    • [backport] Cleanup: removed unused code
    • [backport] Cleanup reset_{next|complete}_mark_bitmap
    • [backport] Cleanup SHH::should_start_normal_gc
    • [backport] “Compact” heuristics for dense footprint scenarios
    • [backport] Compact heuristics should not shortcut on immediate garbage, but aggressively compact
    • [backport] Conditionalize PerfDataMemorySize on enabled heap sampling
    • [backport] Consistent liveness for humongous regions
    • [backport] Control loop should wait before starting another GC cycle
    • [backport] Critical native tests should only be ran on x86_64 platforms
    • [backport] Degenerated GC
    • [backport] Degenerated GC: rename enum, report degen reasons in stats
    • [backport] Demote ShenandoahAllocImplicitLive to diagnostic
    • [backport] Demote warning message about OOM-during-evac to informational
    • [backport] Denser ShHeapRegion status line
    • [backport] Disable verification from non-Shenandoah VMOps.
    • [backport] Disallow pinned_cset region moves and allocations during Full GC
    • [backport] Disambiguate “upgrade to Full GC” GCause
    • [backport] Do not add non-allocatable regions to the freeset
    • [backport] Don’t treat allocation regions implicitely live during some GCs
    • [backport] Double check for UseShenandoahGC in WB expand
    • [backport] Drop distinction between immediate garbage and free in heuristics
    • [backport] Dynamic worker refactoring
    • [backport] Eagerly drop CSet state from regions during Full GC
    • [backport] Eliminate write-barrier assembly stub (part 1)
    • [backport] Enable biased locking for Shenandoah by default
    • [backport] Ensure tasks use correct number of workers
    • [backport] Excessive assert in ShHeap::mark_next
    • [backport] Excessive asserts in marked_object_iterate
    • [backport] FinalEvac pause to turn off evacuation
    • [backport] Fix || and && chaining warnings in memnode.cpp
    • [backport] Fix broken asserts in ShenandoahSharedEnumFlag
    • [backport] Fixed code roots scanning that might be bypassed during degenerated cycle
    • [backport] Fixed compilation error of libTestHeapDump.c on Windows with VS2010
    • [backport] Fixed missing ResourceMark in ShenandoahAsserts::print_obj
    • [backport] Fixed pinned region handling in mark-compact
    • [backport] Fix (external) heap iteration + TestHeapDump should unlock aggressive heuristics
    • [backport] fix for alias analysis with ShenandoahBarriersForConst
    • [backport] Fix/improve CLD processing
    • [backport] Fixing Windows and ARM32 build
    • [backport] Fix Mac OS build warnings
    • [backport] Fix Minimal VM build
    • [backport] Fix ShFreeSet boundary case
    • [backport] fix TCK crash with shenandoah
    • [backport] Forcefully update counters when GC cycle is running
    • [backport] FreeSet and HeapRegion should have the reference to ShenandoahHeap
    • [backport] FreeSet refactor: bitmaps, cursors, biasing
    • [backport] FreeSet should accept responsibility over trashed regions
    • [backport] FreeSet should report its internal state before/after GC cycle
    • [backport] Full GC should compact humongous regions
    • [backport] Full GC should not trash empty regions
    • [backport] GC state testers (infra)
    • [backport] Generic verification is possible only at Shenandoah safepoints
    • [backport] Get easy on template instantiations in ShConcMark
    • [backport] Heap region sampling should publish region states
    • [backport] Humongous regions should support explicit pinning
    • [backport] Immediate garbage ratio should not go over 100%
    • [backport] Implement flag to generate write-barriers without membars
    • [backport] Implement protocol for safe OOM during evacuation handling + Use jint in oom-evac-handler to match older JDKs Atomic support better + Missing OOMScope in ShenandoahFixRootsTask
    • [backport] Improve assertion/verification messages a bit
    • [backport] Improve/more detailed timing stats for root queue work
    • [backport] Incorrect constant folding with final field and -ShenandoahOptimizeFinals
    • [backport] Increase test timeouts
    • [backport] Introduce assert_in_correct_region to verify object is in correct region
    • [backport] Isolate shenandoahVerifier from stray headers
    • [backport] keep read barriers for final instance/stable field accesses
    • [backport] Keep track of per-cycle mutator/collector allocs. Fix mutator/collector alloc region overlap in traversal.
    • [backport] Little cleanup
    • [backport] Log message on ref processing, class unload, update refs for mark events
    • [backport] LotsOfCycles test timeouts
    • [backport] Make concurrent precleaning log message optional again
    • [backport] Make control loop more responsive under allocation pressure
    • [backport] Make degenerated update-refs use region-set cursor to hand over work
    • [backport] Make heap counters update completely asynchronous
    • [backport] Make major GC phases exclusive from each other
    • [backport] Make sure selective barriers enabling/disabling works
    • [backport] Make sure -XX:+ShenandoahVerify comes first in the tests
    • [backport] Mark bitmap slices commit/uncommit + Aggregated bitmap slicing
    • [backport] Match barrier fastpath checks better
    • [backport] Minor cleanups
    • [backport] Minor cleanup, uses latest Atomic API
    • [backport] Move barriers into typeArrayOop.hpp direct memory accessors
    • [backport] Move ShHeap::used increment out of locked allocation path
    • [backport] No need for fence in control loop: flags are now ShSharedVariables
    • [backport] Only report GC pause time to GC MXBean + Re-fix memory managers and memory pools usage and pause reporting
    • [backport] Optimize fwdptr region handling in ShenandoahVerifyOopClosure::verify_oop
    • [backport] Optimize oop/fwdptr/hr_index verification a bit
    • [backport] overflow integer during size calculation
    • [backport] Pacer should account allocation waste and unsuccessful pacing in the budget
    • [backport] Pacer should poll FreeSet to figure out actually available space
    • [backport] Passive should opt-in the barriers, not opt-out
    • [backport] Pauses that do not affect heap occupancy should not report heap
    • [backport] Print message when heuristics changes the setting ergonomically
    • [backport] Protect C2 matchers with UseShenandoahGC
    • [backport] Provide non-taxable allocation slack at the beginning of the cycle
    • [backport] Record cycle start/end to avoid continuous periodic GC
    • [backport] Record Shenandoah events in hs_err events section
    • [backport] Refactor allocation failure and explicit GC handling
    • [backport] Refactor allocation metadata handling
    • [backport] Refactor FreeSet rebuilding into the single source
    • [backport] Refactoring GC phase and heap allocation tracking out of policy
    • [backport] Refactor uncommit handling: react on explicit GCs, feature kill flag, etc
    • [backport] Refactor worker timings into ShenandoahPhaseTimings
    • [backport] ReferenceProcessor is_alive setup is racy
    • [backport] Region sampling should lock while gathering region data
    • [backport] Rehash VMOperations and cycle driver mechanics for consistency
    • [backport] Relax assert in SBS::is_safe()
    • [backport] Remove BS:is_safe in favor of logged BS::verify_safe_oop
    • [backport] Remove CSetThreshold handling from heuristics
    • [backport] Remove FreeSet::add_region, inline into FreeSet::rebuild
    • [backport] Remove obsolete check in FreeSet::allocate
    • [backport] Remove ShenandoahGCWorkerPerJavaThread flag
    • [backport] Remove ShenandoahMarkCompactBarrierSet
    • [backport] Rename and cleanup _regions and _free_set uses
    • [backport] Rename dynamic heuristics to static
    • [backport] Rename *_oop_static/oop_ref to *_forwarded
    • [backport] Rename ShenandoahConcurrentThread to ShenandoahControlThread
    • [backport] Report all GC status flags in hs_err
    • [backport] Report fwdptr size in JNI GetObjectSize
    • [backport] Report how much we have failed to allocate during Allocation Failure
    • [backport] Report illegal transitions verbosely, and remove some no-op transitions
    • [backport] Rewire control loop to avoid double cleanup work
    • [backport] Rework shared bool/enum flags with proper types and synchronization
    • [backport] Rewrite and fix ShenandoahHeap::marked_object_iterate
    • [backport] Rich assertion failure logging
    • [backport] Roots verification should take the special roots first
    • [backport] RP closures should accept NULL referents
    • [backport] Set ShenandoahMinFreeThreshold default to 10%
    • [backport] Setup process references and class unloading once before the cycle
    • [backport] ShConcurrentThread races with set_gc_state_bit
    • [backport] Shenandoah critical native support
    • [backport] Shenandoah region/set iterators should not allow copying
    • [backport] Shenandoah SA implementation
    • [backport] Shenandoah/SPARC barrier stubs
    • [backport] ShenandoahVerifyOptoBarriers should not fail with disabled barriers
    • [backport] ShenandoahWriteBarrierNode::find_bottom_mem() fix
    • [backport] ShenandoahWriteBarrierRB flag to conditionally disable RB on WB fastpath
    • [backport] Shenandoah/Zero barrier stubs
    • [backport] SieveObjects test is too hostile to verification
    • [backport] Single GCTimer shared by all operations
    • [backport] Single thread-local GC state flag for all barriers
    • [backport] Some smallish ShHeapRegionSet changes
    • [backport] Speed up asserts and verification, improve fastdebug builds performance
    • [backport] Split live data management for allocations and GCs
    • [backport] Static heuristics should be really static and report decisions
    • [backport] Static heuristics should use non-zero allocation threshold
    • [backport] Store checks should run most of the time
    • [backport] Tax-and-Spend allocation pacing
    • [backport] Testbug: VerifyJCStressTest leaks memory
    • [backport] TestSelectiveBarrierFlags should accept multi-element flag selections
    • [backport] TestSelectiveBarrierFlags times out due to too aggressive compilation mode
    • [backport] Trim/expand test heap sizes to fit small heaps
    • [backport] Trim the TLAB sizes to avoid wasteful retirement under TLAB races
    • [backport] Use leftmost region in GC allocations
    • [backport] Use os::naked_short_sleep instead of naked Thread events for sleeping
    • [backport] Use/sort (cached) RegionData not ShenandoahHeapRegionSet (infrastructure)
    • [backport] UX: Cleanup (adaptive) CSet selection message
    • [backport] UX: Pacer reports incorrect free size
    • [backport] UX: Shorter gc+ergo messages from CSet selection
    • [backport] Verifier crashes when reporting multiple forwardings
    • [backport] Verifier should check klass pointers before attempting to reach for object size
    • [backport] Verifier should print verification label at liveness verification
    • [backport] Verify fwdptr accesses during Full GC moves
    • [backport] Verify regions status
    • [backport] When Shenandoah WB is moved out of loop, connect it to correct loop memory Phi (back out and revisit previous fix)
    • [backport] Wipe out ShenandoahStoreCheck implementation
    • [backport] Workaround C1 ConstantOopWriteValue bug
    • Bitmap size might not be page aligned when large page is used
    • Changed claim count to jint
    • Cherry-pick JDK-8173013: JVMTI tagged object access needs G1 pre-barrier
    • Defer cleaning of system dictionary and friends to parallel cleaning phase
    • Do not put down update-refs-in-progress flag concurrently
    • Fix AArch64 build failure: misplaced #endif
    • Fixed Shenandoah 8u build
    • Fixed Windows build
    • Fix non-PCH build
    • Fix non-PCH x86_32 build
    • Fix up SPARC and Zero headers for proper locations
    • missing barriers in String intrinsics with -ShenandoahOptimizeInstanceFinals -ShenandoahOptimizeStableFinals
    • Missing event log for canceled GC
    • StringInternCleanup times out
    • VerifyJCStressTest should test all heuristics
    • Workaround VM crash with JNI Weak Refs handling

The tarballs can be downloaded from:

We provide both gzip and xz tarballs, so that those who are able to make use of the smaller tarball produced by xz may do so.

The tarballs are accompanied by digital signatures available at:

These are produced using my public key. See details below.

  • PGP Key: ed25519/0xCFDA0F9B35964222 (hkp://keys.gnupg.net)
  • Fingerprint = 5132 579D D154 0ED2 3E04 C5A0 CFDA 0F9B 3596 4222

GnuPG >= 2.1 is required to be able to handle this key.

SHA256 checksums:

  • 84a63bc59f4e101ce8fa183060a59c7e8cbe270945310e90c92b8609a9b8bc88 icedtea-3.9.0.tar.gz
  • 7ee0a348f4e32436b3cdc915f2a405ab8a6bfca0619d9acefb2920c14208d39e icedtea-3.9.0.tar.gz.sig
  • 45577f65e61509fcfa1dfce06ff9c33ef5cfea0e308dc1f63e120975ce7bdc3c icedtea-3.9.0.tar.xz
  • 82cb48e36437d0df16fe5071c3d479672d2b360a18afe73559c63d6fb604caf2 icedtea-3.9.0.tar.xz.sig

The checksums can be downloaded from:

A 3.9.0 ebuild for Gentoo is available.

The following people helped with these releases:

  • Andrew Hughes (all bug fixes and backports, release management)

We would also like to thank the bug reporters and testers!

To get started:

$ tar xzf icedtea-3.9.0.tar.gz

or:

$ tar x -I xz -f icedtea-3.9.0.tar.xz

then:

$ mkdir icedtea-build
$ cd icedtea-build
$ ../icedtea-3.9.0/configure
$ make

Full build requirements and instructions are available in the INSTALL file.

Happy hacking!