Skip to content

jiic-iso build step fails on large staging trees (StringIndexOutOfBoundsException) #648

Description

@LSantha

Summary

The cd-x86-lite build fails inside the jiic-iso step (de.tu_darmstadt.informatik.rbg.hatlak.iso9660.ISOTask, wired in all/build-x86.xml:339-347) with java.lang.StringIndexOutOfBoundsException: String index out of range: 59 when the ISO staging tree contains on the order of ~1000 small files (a mauve testlet package tree staged under all/build/x86/cdrom-lite/ox/mauve/).

Environment

  • JNode 0.2.9-dev tree, host JDK 1.6.0_45, sh build.sh cd-x86-lite
  • Observed 2026-09-17

Reproduction

  1. Populate the lite-CD staging dir with a deep tree of small files, e.g.:
    cp -r /tmp/jars/mauve/gnu/testlet/java/{io,lang,math,text,util} \
      all/build/x86/cdrom-lite/ox/mauve/gnu/testlet/java/
    # (~1000 .class files, ~4 MB total)
    
  2. sh build.sh cd-x86-lite
  3. Build fails:
    [jiic-iso] Rock Ridge support enabled.
    [jiic-iso] Joliet support enabled.
    [jiic-iso] El Torito support enabled.
    [jiic-iso] java.lang.StringIndexOutOfBoundsException: String index out of range: 59
        ... (ant stack through all/build-x86.xml:347 <- all/build-x86.xml:376 <- all/build.xml:591)
    BUILD FAILED
    

Removing the big tree (back to ~100 loose files) makes the same build succeed, so it is content/shape-dependent — likely the vendored ISO writer's 8.3 name-mangling or path handling tripping over a specific filename or the entry count (note the guest-side ISO9660 reader has a related deep-directory blind spot; the two may share filename assumptions).

Expected behavior

Either the tree is mastered correctly regardless of size/shape, or the task fails with a message naming the offending path (not a bare index exception).

Workaround

Keep staged file counts small and flat (we stage per-testlet loose files + one explicitly-listed sibling class instead of whole package trees).

Impact

Caps what can be shipped on the test CD (no bulk test corpora), forcing fragile per-file staging maintenance in local/mk-ox-iso.sh-style flows.

Triage Addendum (auto, 2026-09-24)

  • Area / Kind: area/builder (best match) / kind/bug
  • Blast radius: L5 system (ISO creation path; exact writer failure boundary unconfirmed)
  • Expected scope: tentative: isolate and fix ISO writer path/name handling or improve failure reporting; exclude the guest ISO9660 reader pending reproduction
  • Test path: sh build.sh cd-x86-lite with a deterministic large staging tree, then inspect/boot the generated ISO
  • Merge signal: human-review (bug on the L5 ISO artifact path; writer source and failure boundary not yet established)
  • Gaps: blocking: exact revision/clean setup, reproducible input source, full ISOTask stack, and host/backend selection
  • Full report: ## Triage comment below.

✅ Ticket Runner Status

Field Value
Phase DONE
Turn 0/3
Retries 1/3
PR -
Started 2026-09-25T05:57:21.178Z

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent/needs-infoThe agent has posted clarifying questions; waiting for the reporter.area/builderbuilder/ — BootImageBuilder, JNasm, plugin descriptor tools.kind/bugConfirmed bug report with a repro or stack trace.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions