From a5bfb8b7e275b8d68819981c618e4a83bc7992d5 Mon Sep 17 00:00:00 2001 From: Wei Lin Date: Thu, 24 Sep 2026 10:16:57 +0800 Subject: [PATCH 1/6] ci(java): capture JDK 10 crash diagnostics --- .github/workflows/java-ci.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/java-ci.yml b/.github/workflows/java-ci.yml index 33cdb8c0..9e805d2e 100644 --- a/.github/workflows/java-ci.yml +++ b/.github/workflows/java-ci.yml @@ -90,3 +90,14 @@ jobs: run: | "$JAVA_HOME_10_X64/bin/java" -XX:-UseContainerSupport -version ./mvnw -B -ntp -Djvm="$JAVA_HOME_10_X64/bin/java" -DargLine=-XX:-UseContainerSupport verify + + - name: Upload JDK 10 crash diagnostics + if: failure() && matrix.java-version == '10' + uses: actions/upload-artifact@v4 + with: + name: java-10-crash-diagnostics + path: | + minipdf-java/**/target/surefire-reports/** + minipdf-java/**/hs_err_pid*.log + if-no-files-found: warn + retention-days: 3 From 2bdbab80e973f0f4ef90e50438134fc5dfbfda3a Mon Sep 17 00:00:00 2001 From: Wei Lin Date: Thu, 24 Sep 2026 10:20:56 +0800 Subject: [PATCH 2/6] ci(java): run JDK 10 tests without forking --- .github/workflows/java-ci.yml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/java-ci.yml b/.github/workflows/java-ci.yml index 9e805d2e..5a9ba549 100644 --- a/.github/workflows/java-ci.yml +++ b/.github/workflows/java-ci.yml @@ -69,13 +69,6 @@ jobs: cache: maven cache-dependency-path: minipdf-java/pom.xml - - name: Setup Maven runtime for JDK 10 - if: matrix.java-version == '10' - uses: actions/setup-java@v6 - with: - distribution: temurin - java-version: '17' - - name: Install CJK fonts run: sudo apt-get update && sudo apt-get install --yes fonts-noto-cjk fonts-unifont fonts-wqy-microhei @@ -85,11 +78,11 @@ jobs: - name: Test on JDK 10 if: matrix.java-version == '10' - # JDK 10 predates cgroup v2 support and can exit during startup on - # current hosted runners while reading their container configuration. - run: | - "$JAVA_HOME_10_X64/bin/java" -XX:-UseContainerSupport -version - ./mvnw -B -ntp -Djvm="$JAVA_HOME_10_X64/bin/java" -DargLine=-XX:-UseContainerSupport verify + # Keep Maven and Surefire in one JDK 10 process. The separate Surefire + # JVM intermittently exits before loading tests on current runners. + env: + MAVEN_OPTS: -XX:-UseContainerSupport + run: ./mvnw -B -ntp -DforkCount=0 verify - name: Upload JDK 10 crash diagnostics if: failure() && matrix.java-version == '10' From afd011dafed71989ca1a41c5d892b2c1fe417a23 Mon Sep 17 00:00:00 2001 From: Wei Lin Date: Thu, 24 Sep 2026 10:24:08 +0800 Subject: [PATCH 3/6] ci(java): preserve test paths without forking --- .github/workflows/java-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/java-ci.yml b/.github/workflows/java-ci.yml index 5a9ba549..384cc60b 100644 --- a/.github/workflows/java-ci.yml +++ b/.github/workflows/java-ci.yml @@ -80,9 +80,10 @@ jobs: if: matrix.java-version == '10' # Keep Maven and Surefire in one JDK 10 process. The separate Surefire # JVM intermittently exits before loading tests on current runners. + working-directory: minipdf-java/minipdf-tests env: MAVEN_OPTS: -XX:-UseContainerSupport - run: ./mvnw -B -ntp -DforkCount=0 verify + run: ../mvnw -B -ntp -f ../pom.xml -DforkCount=0 verify - name: Upload JDK 10 crash diagnostics if: failure() && matrix.java-version == '10' From f3e681d2aeb46bbc94e483108924f0c588a0b473 Mon Sep 17 00:00:00 2001 From: Wei Lin Date: Thu, 24 Sep 2026 10:31:02 +0800 Subject: [PATCH 4/6] ci(java): limit JDK 10 job to test phase --- .github/workflows/java-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java-ci.yml b/.github/workflows/java-ci.yml index 384cc60b..65c130bc 100644 --- a/.github/workflows/java-ci.yml +++ b/.github/workflows/java-ci.yml @@ -83,7 +83,7 @@ jobs: working-directory: minipdf-java/minipdf-tests env: MAVEN_OPTS: -XX:-UseContainerSupport - run: ../mvnw -B -ntp -f ../pom.xml -DforkCount=0 verify + run: ../mvnw -B -ntp -f ../pom.xml -DforkCount=0 test - name: Upload JDK 10 crash diagnostics if: failure() && matrix.java-version == '10' From 1844b6e1cc67ed8d98549f10b51ed2791f6ec363 Mon Sep 17 00:00:00 2001 From: Wei Lin Date: Thu, 24 Sep 2026 10:36:39 +0800 Subject: [PATCH 5/6] fix(java): prefer complete CJK fallback on JDK 10 --- .../minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java b/minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java index 262d1ac5..4829a24c 100644 --- a/minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java +++ b/minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java @@ -2281,9 +2281,9 @@ private static PDFont loadCollectionFont(PDDocument document, Path path) throws private static List cjkSystemFonts() { if (!FontEmbeddingPolicy.shouldSubset()) { return systemFonts( + "wqy-microhei.ttc", "unifont.ttf", "NotoSansSC-VF.ttf", - "wqy-microhei.ttc", "NotoSansCJK-Regular.ttc", "simhei.ttf", "simsun.ttc"); From 8340a448c6a06e05ee33e365365138ef51745003 Mon Sep 17 00:00:00 2001 From: Wei Lin Date: Thu, 24 Sep 2026 10:40:12 +0800 Subject: [PATCH 6/6] ci(java): interpret JDK 10 compatibility tests --- .github/workflows/java-ci.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/java-ci.yml b/.github/workflows/java-ci.yml index 65c130bc..9f7a8eaf 100644 --- a/.github/workflows/java-ci.yml +++ b/.github/workflows/java-ci.yml @@ -69,6 +69,13 @@ jobs: cache: maven cache-dependency-path: minipdf-java/pom.xml + - name: Setup Maven runtime for JDK 10 + if: matrix.java-version == '10' + uses: actions/setup-java@v6 + with: + distribution: temurin + java-version: '17' + - name: Install CJK fonts run: sudo apt-get update && sudo apt-get install --yes fonts-noto-cjk fonts-unifont fonts-wqy-microhei @@ -78,12 +85,10 @@ jobs: - name: Test on JDK 10 if: matrix.java-version == '10' - # Keep Maven and Surefire in one JDK 10 process. The separate Surefire - # JVM intermittently exits before loading tests on current runners. - working-directory: minipdf-java/minipdf-tests - env: - MAVEN_OPTS: -XX:-UseContainerSupport - run: ../mvnw -B -ntp -f ../pom.xml -DforkCount=0 test + # HotSpot 10 intermittently exits in compiled mode on hosted runner + # CPUs. Keep Maven on JDK 17 and run only compatibility tests in the + # JDK 10 interpreter. + run: ./mvnw -B -ntp -Djvm="$JAVA_HOME_10_X64/bin/java" -DargLine="-Xint -XX:-UseContainerSupport" verify - name: Upload JDK 10 crash diagnostics if: failure() && matrix.java-version == '10'