This is captured by asserts from JDK-8232729 with hotspot_gc_shenandoah on x86_64:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/shade/trunks/jdk-jdk/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp:133), pid=10196, tid=10214
# assert(is_aligned(addr, HeapWordSize)) failed: Address should be aligned: 0x00007f9c04e7eaf6
#
# JRE version: OpenJDK Runtime Environment (14.0) (fastdebug build 14-internal+0-adhoc.shade.jdk-jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 14-internal+0-adhoc.shade.jdk-jdk, mixed mode, sharing, tiered, compressed oops, shenandoah gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x13bfa67] ShenandoahHeap::cas_oop(oop, oop*, oop)+0xb7
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %d %P" (or dumping to /home/shade/trunks/jdk-jdk/build/linux-x86_64-server-fastdebug/test-support/jtreg_test_hotspot_jtreg_hotspot_gc_shenandoah/scratch/2/core.10196)
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x00007f9bec001000): GCTaskThread "Shenandoah GC Threads#4" [stack: 0x00007f9bfd9ef000,0x00007f9bfdaef000] [id=10214]
Stack: [0x00007f9bfd9ef000,0x00007f9bfdaef000], sp=0x00007f9bfdaed940, free space=1018k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x13bfa67] ShenandoahHeap::cas_oop(oop, oop*, oop)+0xb7
V [libjvm.so+0x16b1266] void ShenandoahTraversalGC::process_oop<oop, false, false>(oop*, Thread*, Padded<BufferedOverflowTaskQueue<ObjArrayChunkedTask, (MemoryType)5, 131072u>, 128ul>*, ShenandoahMarkingContext*) [clone .constprop.488]+0x146
V [libjvm.so+0x139df94] nmethod::oops_do(OopClosure*, bool)+0x1d4
V [libjvm.so+0xdfde63] MarkingCodeBlobClosure::do_code_blob(CodeBlob*)+0x43
V [libjvm.so+0x16068d1] void ShenandoahCodeRootsIterator::fast_parallel_blobs_do<true>(CodeBlobClosure*)+0x131
V [libjvm.so+0x16b8e21] ShenandoahRootScanner<ShenandoahCsetCodeRootsIterator>::roots_do(unsigned int, OopClosure*, CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0x1f1
V [libjvm.so+0x16b9183] ShenandoahInitTraversalCollectionTask::work(unsigned int)+0x203
V [libjvm.so+0x1969480] GangWorker::loop()+0xe0
V [libjvm.so+0x182f816] Thread::call_run()+0xf6
V [libjvm.so+0x142c26e] thread_native_entry(Thread*)+0x10e
The underlying reason for this is trying to CAS the roots that are not aligned to the pointer size, notably code roots. Normal concurrent cycle avoids this by updating the roots with plain stores, Traversal should do the same.