Skip to content

Revise ARM float/double accessors and ordering regressions (#419) - #860

Draft
peter-lawrey wants to merge 7 commits into
developfrom
feat/Chronicle-Core-419-audit-volatile-float-double-access
Draft

peter-lawrey wants to merge 7 commits into
developfrom
feat/Chronicle-Core-419-audit-volatile-float-double-access

Conversation

@peter-lawrey

@peter-lawrey peter-lawrey commented Aug 20, 2026

Copy link
Copy Markdown
Member

Revise ARM float/double runtime accessors and retain the representation, addressing-mode and ordering regressions for #419. Aligned access uses the platform volatile primitive. Misaligned reads put the plain read before the acquire fence; misaligned writes put the release fence before the plain store. Misaligned access can tear and does not provide full volatile semantics.

The tests now allocate native storage inside the executed dynamic-test body and own both workers before startup. Cleanup stops and joins started workers before freeing storage, preserves primary failures and restores owner interruption. These changes are implemented; ARM hardware qualification is still outstanding.

Temporary diagnostics in 07ad47dfefa7 identify every completed ordering case, report the test JVM, retain the last observed marker bits and acknowledgement, and preserve worker exceptions with a separate memory snapshot after both workers join. Logging stays outside the active handshake. The existing subprocess controls now include an injected writer failure. Production accessors and test deadlines are unchanged; a diagnostic pass does not establish a repair.

Review map: ARM accessors, public contract, worker ownership and ordering tests, lifecycle controls.

Validation for 07ad47dfefa717449514b4ae6c2ad666ce31284c on Linux amd64, with a dedicated Maven repository and effective test retries verified as zero:

Configuration Invocation Result
OpenJDK 8u502-b07 mvn -B -Dsurefire.rerunFailingTestsCount=0 clean verify 2,205 reported cases: 2,195 passed, 10 skipped, no failures/errors
Ubuntu OpenJDK 21.0.12+8 Same command with -Dtest=UnsafeMemoryFloatTest,UnsafeMemoryDoubleTest,UnsafeMemoryOrderingLifecycleTest 331 passed, no skips/failures/errors

Both runs executed all 168 local ordering cases and the three lifecycle/diagnostic controls. These x86 runs validate the diagnostic paths; ARM and Mac qualification of the pushed revision is pending.

Earlier receipt at 1a742c277b36 and prior evidence: the first Java 21 clean attempt stopped at an ObjectUtils compilation error; one unchanged repeat passed all 330 selected cases, with no test retries or skips. Both matched develop compile controls passed. The intermittent compilation cause remains unclassified; the repeat is not a repair.

Next owner: peter-lawrey must self-review the ordering contract and native-memory lifetime, investigate the compilation failure and arrange ARM qualification. A second reviewer with memory-ordering expertise is to be chosen after that self-review. Keep draft pending ARM qualification; required checks and maintainer disposition remain merge gates.

Refs #419.

peter-lawrey and others added 4 commits August 19, 2026 19:21
Local addressment for the 2022-backlog PR programme (see .pr/NOTES.md).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Audit outcome: the volatile float/double accessors are in active use and
ARMMemory provides custom unaligned implementations of the address-based
read/writeVolatileFloat/Double, so the surface is kept and covered rather
than deprecated. Adds UnsafeMemoryFloatTest and UnsafeMemoryDoubleTest by
analogy with the existing Short/Int/Long tests, exercising the plain,
unsafe, and volatile paths across UnsafeMemory and ARMMemory for direct,
on-heap, and null-object addressing.

Fixes #419

Co-Authored-By: Claude Opus 4.8 <noreply@noreply.anthropic.com>
@peter-lawrey
peter-lawrey changed the base branch from ea to develop August 22, 2026 11:13
@peter-lawrey peter-lawrey changed the title [#419] Implement UnsafeMemoryFloatTest and UnsafeMemoryDoubleTest Correct ARM float/double ordering and add accessor regressions Sep 13, 2026

Copy link
Copy Markdown
Member Author

Validation receipt, 13 September 2026. Review owner: peter-lawrey; author self-review is next. A second reviewer is to be chosen afterwards.

Source: 1a742c277b36dfb3f3f48609a1f759ca10bd8331, clean tree 16a624feab048a2609457eb97a545eadcec37bb0. The separately resolved current target develop is 9c26a484f3150c7f079aea626abffac22e53a506; the computed merge base is 9c26a484f3150c7f079aea626abffac22e53a506.

Executed on Linux amd64, OpenJDK 21.0.12+8-1-24.04-Ubuntu, Maven 3.9.11; started 2026-09-13T07:43:58.490638+00:00. Focused clean verify: 330 reported, 330 passed, 0 skipped, 0 failures, 0 errors. Each actual Surefire execution logged rerunFailingTestsCount = 0; reports contain no flaky/rerun entries. Source remained clean afterwards.

First attempt retained: the original clean verification failed before tests in ObjectUtils.java:57, with inference variable V has incompatible bounds. The one planned unchanged repeat above passed all 330 cases. Matched develop clean compile controls passed twice. This is one PR compilation failure in two attempts; its cause and repair destination remain unclassified. A passing repeat is not a repair. peter-lawrey owns the next compiler investigation; real ARM qualification and ordering review remain outstanding.

Command and relevant execution log

The private worktree and cache paths are replaced by labelled placeholders. The isolated cache was already populated; resolved artifact hashes follow below.

JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 mvn -B -o -ntp -X -Dmaven.repo.local=[isolated-maven-repository] -Dsurefire.rerunFailingTestsCount=0 -Dstyle.color=never clean verify -Dtest=UnsafeMemoryFloatTest,UnsafeMemoryDoubleTest,UnsafeMemoryOrderingLifecycleTest

Verbatim configuration/result log lines, with local paths redacted:

[INFO] --- surefire:3.1.2:test (default-test) @ chronicle-core ---
[DEBUG]   (f) rerunFailingTestsCount = 0
[DEBUG] Forking command line: /bin/sh -c cd '[validation]/worktrees/core860' && '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' '--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED' '--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED' '--add-exports=java.base/jdk.internal.util=ALL-UNNAMED' '--add-exports=java.base/sun.nio.ch=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED' '--add-opens=java.base/java.io=ALL-UNNAMED' '--add-opens=java.base/java.lang=ALL-UNNAMED' '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED' '--add-opens=java.base/java.util=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac=ALL-UNNAMED' '-jar' '[validation]/worktrees/core860/target/surefire/surefirebooter-20260913084407227_9.jar' '[validation]/worktrees/core860/target/surefire' '2026-09-13T08-44-07_082-jvmRun2' 'surefire-20260913084407227_2tmp' 'surefire_0-20260913084407227_4tmp'
[DEBUG] Forking command line: /bin/sh -c cd '[validation]/worktrees/core860' && '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' '--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED' '--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED' '--add-exports=java.base/jdk.internal.util=ALL-UNNAMED' '--add-exports=java.base/sun.nio.ch=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED' '--add-opens=java.base/java.io=ALL-UNNAMED' '--add-opens=java.base/java.lang=ALL-UNNAMED' '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED' '--add-opens=java.base/java.util=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac=ALL-UNNAMED' '-jar' '[validation]/worktrees/core860/target/surefire/surefirebooter-20260913084407227_7.jar' '[validation]/worktrees/core860/target/surefire' '2026-09-13T08-44-07_082-jvmRun1' 'surefire-20260913084407227_3tmp' 'surefire_2-20260913084407227_6tmp'
[DEBUG] Forking command line: /bin/sh -c cd '[validation]/worktrees/core860' && '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' '--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED' '--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED' '--add-exports=java.base/jdk.internal.util=ALL-UNNAMED' '--add-exports=java.base/sun.nio.ch=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED' '--add-opens=java.base/java.io=ALL-UNNAMED' '--add-opens=java.base/java.lang=ALL-UNNAMED' '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED' '--add-opens=java.base/java.util=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac=ALL-UNNAMED' '-jar' '[validation]/worktrees/core860/target/surefire/surefirebooter-20260913084407227_8.jar' '[validation]/worktrees/core860/target/surefire' '2026-09-13T08-44-07_082-jvmRun3' 'surefire-20260913084407227_1tmp' 'surefire_1-20260913084407227_5tmp'
[INFO] Running net.openhft.chronicle.core.UnsafeMemoryFloatTest
[INFO] Running net.openhft.chronicle.core.UnsafeMemoryDoubleTest
[INFO] Running net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.189 s -- in net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest
[INFO] Tests run: 164, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.520 s -- in net.openhft.chronicle.core.UnsafeMemoryDoubleTest
[INFO] Tests run: 164, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.542 s -- in net.openhft.chronicle.core.UnsafeMemoryFloatTest
[INFO] Tests run: 330, Failures: 0, Errors: 0, Skipped: 0
[INFO] BUILD SUCCESS
Surefire report content for both lifecycle controls

The properties block and local path identifiers are removed; included test outcomes and diagnostic output are retained.

target/surefire-reports/TEST-net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest.xml; original SHA-256 1afe6a4a51604a78090b793a5b5b6050c9263c9e0d82aa8c7140533181c15bbc.

<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest" time="0.189" tests="2" errors="0" skipped="0" failures="0">
  <testcase name="partialStartupJoinsTheStartedWorkerBeforeFreeingNativeMemory" classname="net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest" time="0.094" />
  <testcase name="interruptedOwnerJoinsWorkersBeforeFreeingNativeMemory" classname="net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest" time="0.083" />
</testsuite>
Full selected-case manifest and compilation attempts
TEST-net.openhft.chronicle.core.UnsafeMemoryDoubleTest.xml: 164 cases, 0 skipped
TEST-net.openhft.chronicle.core.UnsafeMemoryFloatTest.xml: 164 cases, 0 skipped
TEST-net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest.xml: 2 cases, 0 skipped

net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryDoubleTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.misalignedVolatileOrderingTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.readWriteTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryFloatTest.volatileTests - passed
net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest.partialStartupJoinsTheStartedWorkerBeforeFreeingNativeMemory - passed
net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest.interruptedOwnerJoinsWorkersBeforeFreeingNativeMemory - passed

First PR attempt:

[ERROR] COMPILATION ERROR : 
[ERROR] [validation]/worktrees/core860/src/main/java/net/openhft/chronicle/core/util/ObjectUtils.java:[57,67] incompatible types: inference variable V has incompatible bounds
[INFO] BUILD FAILURE
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.0:compile (java8) on project chronicle-core: Compilation failure
[ERROR] [validation]/worktrees/core860/src/main/java/net/openhft/chronicle/core/util/ObjectUtils.java:[57,67] incompatible types: inference variable V has incompatible bounds
[ERROR]     equality constraints: java.lang.Object,java.lang.Class<java.lang.Double>,V,V,V,V,V,V,V,V,V
[ERROR]     lower bounds: java.lang.Class<java.lang.Byte>,java.lang.Class<java.lang.Character>,java.lang.Class<java.lang.Short>,java.lang.Class<java.lang.Integer>,java.lang.Class<java.lang.Float>,java.lang.Class<java.lang.Long>,java.lang.Class<java.lang.Void>,java.lang.Class<java.lang.Boolean>,java.lang.Class<java.lang.Double>
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Two matched develop compile controls: both BUILD SUCCESS; neither executes tests. The command differs only in stopping at compile rather than running the later verification/test phases.

Resolved test dependency SHA-256 manifest
c7b947702f27d2e432b561afc4a8cee01f03d43629e5d657b92d617f672bff90  com/github/jnr/jffi/1.3.12/jffi-1.3.12-native.jar
d7ddb6e9f11133600894eb04f95a9d834caefa4acfc86ef9ad59e7555297bbd3  com/github/jnr/jffi/1.3.12/jffi-1.3.12.jar
53ae5ea7fa5c284e8279aa348e7b9de4548b0cae10bfd058fa217c791875e4cf  com/github/jnr/jnr-a64asm/1.0.0/jnr-a64asm-1.0.0.jar
9a5b8cf9798d9d0331b8d8966c5235a22c4307676e35803a24659e6d76096f78  com/github/jnr/jnr-constants/0.10.4/jnr-constants-0.10.4.jar
a34ef74dc7d44d1575e522b47ab41116953c3128a61f9a35a6a9fd4a9d47a195  com/github/jnr/jnr-ffi/2.2.15/jnr-ffi-2.2.15.jar
39f3675b910e6e9b93825f8284bec9f4ad3044cd20a6f7c8ff9e2f8695ebf21e  com/github/jnr/jnr-x86asm/1.0.2/jnr-x86asm-1.0.2.jar
9c8c581c29f22f877a35d11380462f75bb24bf1886204fe835ee695594a2784e  com/squareup/okhttp3/mockwebserver/4.9.3/mockwebserver-4.9.3.jar
93ecd6cba19d87dccfe566ec848d91aae799e3cf16c00709358ea69bd9227219  com/squareup/okhttp3/okhttp/4.9.3/okhttp-4.9.3.jar
4496b06e73982fcdd8a5393f46e5df2ce2fa4465df5895454cac68a32f09bbc8  com/squareup/okio/okio/2.8.0/okio-2.8.0.jar
78b3cb0f835098f2264a59e791d885f808ad80d2425ef298dc2cfed033c6b9e8  com/tngtech/archunit/archunit/1.2.1/archunit-1.2.1.jar
548977dbbab5df88cbdd35668798ab1ad02a4a880b48d4372648be638d9172e3  io/github/classgraph/classgraph/4.8.161/classgraph-4.8.161.jar
8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3  junit/junit/4.13.2/junit-4.13.2.jar
24d81621f82ac29fcdd9a74116031f5907a2343158e616f4573bbfa2434ae0d5  net/java/dev/jna/jna-platform/5.5.0/jna-platform-5.5.0.jar
b308faebfe4ed409de8410e0a632d164b2126b035f6eacff968d3908cafb4d9e  net/java/dev/jna/jna/5.5.0/jna-5.5.0.jar
76c0f0e4b4667b00bfaa195fdc10f44bf467acdf0142ddaeccfd2f0547833450  net/openhft/affinity/2026.2/affinity-2026.2.jar
d836787f46984f30b8411a64f2078b1c699bd09c315a902db45af6616e50b15e  net/openhft/assertions-disabled/1.0.0/assertions-disabled-1.0.0.jar
87ed2df17addd6953e879f6561b4692b98bed1ff3fce206ca2a1e934f5bdc346  net/openhft/chronicle-analytics/2026.2/chronicle-analytics-2026.2.jar
db1eb8b52a1a4e47dc774495e484f4828fa8886870959abadc6a9b5236984b4c  net/openhft/chronicle-test-framework/2026.2/chronicle-test-framework-2026.2.jar
2e8ffca67311d94237f41d5caa9a4f6ae1a518c1ccb05ddefb0387dd5b68265a  net/openhft/posix/2026.2/posix-2026.2.jar
b509448ac506d607319f182537f0b35d71007582ec741832a1f111e5b5b70b38  org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar
66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9  org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
61666dbce7e42e6c85b43c04fcfb8293a21dcb55b3c80e869270ce42c01a6b35  org/jetbrains/annotations/24.0.1/annotations-24.0.1.jar
8601e004d74d4be5e871f6c43a730b482ce4dff45082b08924d5d69d33c9f7d1  org/jetbrains/kotlin/kotlin-stdlib-common/1.4.0/kotlin-stdlib-common-1.4.0.jar
f9566380c08722c780ce33ceee23e98ddf765ca98fabd3e2fabae7975c8d232b  org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/kotlin-stdlib-jdk7-1.4.10.jar
39b7a9442d7a3865e0f4a732c56c1d5da0e11ffb3bb82a461d32deb0c0ca7673  org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/kotlin-stdlib-jdk8-1.4.10.jar
01ecb09782c042b931c1839acf21a188340b295d05400afd6e3415d4475b8daa  org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotlin-stdlib-1.4.10.jar
108088fd7ea46a8e65a0ce7f5d75ae3ff7865606770a078715f5a6e5709e17d8  org/junit/jupiter/junit-jupiter-api/5.10.0/junit-jupiter-api-5.10.0.jar
f259a7322cce375430c2236a2dcb24d4a49d22045b723ad85af88e11704391c2  org/junit/jupiter/junit-jupiter-params/5.10.0/junit-jupiter-params-5.10.0.jar
6083db08ca11fca1e16099d0dcfede0193d80b3762b276349d80d3da536791b2  org/junit/platform/junit-platform-commons/1.10.0/junit-platform-commons-1.10.0.jar
48e2df636cab6563ced64dcdff8abb2355627cb236ef0bf37598682ddf742f1b  org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar
b9d4fe4d71938df38839f0eca42aaaa64cf8b313d678da036f0cb3ca199b47f5  org/ow2/asm/asm/9.2/asm-9.2.jar
7b751d952061954d5abfed7181c1f645d336091b679891591d63329c622eb832  org/slf4j/slf4j-api/2.0.17/slf4j-api-2.0.17.jar
ddfea59ac074c6d3e24ac2c38622d2d963895e17f70b38ed4bdae4d780be6964  org/slf4j/slf4j-simple/2.0.17/slf4j-simple-2.0.17.jar
Earlier validation and discriminators

These are prior receipts inspected during this pass, not newly rerun full suites. Their recorded checkout SHAs precede the follow-up commits; keep them distinct from the clean published-head run above.

Earlier local run Recorded checkout before follow-up commit Reported Passed Skipped Failures/errors
core860-final-full21 adbe41715753 plus local follow-up edits 2204 2204 0 0/0
core860-focused8 adbe41715753 plus local follow-up edits 330 330 0 0/0

The earlier deliberate cleanup-removal mutation failed both lifecycle controls; this is a mutation discriminator, not an ARM-ordering reproduction:

[INFO] --- surefire:3.1.2:test (default-test) @ chronicle-core ---
[INFO] Running net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest
[ERROR] Tests run: 2, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 0.171 s <<< FAILURE! -- in net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest
[ERROR] net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest.partialStartupJoinsTheStartedWorkerBeforeFreeingNativeMemory -- Time elapsed: 0.092 s <<< FAILURE!
[ERROR] net.openhft.chronicle.core.UnsafeMemoryOrderingLifecycleTest.interruptedOwnerJoinsWorkersBeforeFreeingNativeMemory -- Time elapsed: 0.065 s <<< FAILURE!
[ERROR] Failures: 
[ERROR]   UnsafeMemoryOrderingLifecycleTest.interruptedOwnerJoinsWorkersBeforeFreeingNativeMemory:19->runControl:31 Refusing to free memory while an ordering worker is alive
[ERROR]   UnsafeMemoryOrderingLifecycleTest.partialStartupJoinsTheStartedWorkerBeforeFreeingNativeMemory:24->runControl:31 Refusing to free memory while an ordering worker is alive
[ERROR] Tests run: 2, Failures: 2, Errors: 0, Skipped: 0
[INFO] BUILD FAILURE
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.1.2:test (default-test) on project chronicle-core: There are test failures.
[ERROR] 
[ERROR] Please refer to [earlier-validation]/worktrees/core860/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Historical description before 13 September corrections (superseded state)

This preserves the earlier failures, dated check assessments and revision provenance. Draft/readiness statements below describe that older snapshot only.

Refresh on 12 September 2026

Merged develop 9c26a484f3150c7f079aea626abffac22e53a506 into the existing branch with normal forward commits. Updated head: adbe41715753a2836ce0fd0b84914bf086062279. Both develop 9c26a484f3150c7f079aea626abffac22e53a506 and the declared parent are ancestors of this head; both missing-commit counts are zero.

Retained newer cleanup fixes. Full clean verify passed on Java 21: 2,202 reported tests, none skipped; the Java 8 assertions profile passed 328 selected float/double memory cases.

These runs used Linux x86-64. Running the ARM implementation on x86 does not qualify ARM hardware.

Local runs used Linux x86-64 and OpenJDK 21.0.12 unless Java 8 is explicitly stated (8u502). Reported test counts include skips. Commands requested zero Surefire reruns. Draft status and declared target are retained.

Earlier implementation/review notes follow. Earlier validation and performance claims apply only to their stated revisions and are superseded by the current receipt above where they differ.


What changed

Local 631b521c adds focused volatile float/double accessor tests.

Why

This publishes the reviewed local solution for #419 so the implementation can be discussed in the normal review workflow.

Review status

Draft — coherent local solution, not yet merge-ready.

Before marking ready: Publish after the common gate; close after merge if no live accessor gap is found.

Validation

  • git diff --check against ea: passed.
  • Internal .pr/ scaffolding and local workspace paths: removed.
  • Focused validation recorded by the backlog audit is described above; it was not rerun during this publication pass.
  • Remote CI and maintainer review are still required.

Tracking

Fixes #419

This evidence supports author self-review. It does not waive required checks or certify merge readiness. No reviewer was requested and no review thread was resolved by this housekeeping pass.

@peter-lawrey peter-lawrey changed the title Correct ARM float/double ordering and add accessor regressions Revise ARM float/double accessors and ordering regressions (#419) Sep 13, 2026
Dynamic factory summaries lose mode and offset details. Retain the last
observed marker bits, acknowledgement and original worker exceptions,
with a separate snapshot after both workers have joined.

Log each completed case and the test JVM identity. Exercise an injected
writer failure in the existing bounded native-memory control process.
Production accessors, handshake count and deadline remain unchanged.

Validation: Java 8 clean verify, 2205 tests, 10 skipped; Java 21 focused
verify, 331 tests, none skipped. Both used effective retries of zero.
These local x86 checks do not qualify ARM ordering or establish a repair.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement UnsafeMemoryFloatTest and UnsafeMemoryDoubleTest

1 participant