Skip to content

Docker: pin Julia to 1.10.11, unbreaking the image build - #1031

Closed
alongd wants to merge 1 commit into
mainfrom
docker_pin_julia_1_10_11
Closed

Docker: pin Julia to 1.10.11, unbreaking the image build#1031
alongd wants to merge 1 commit into
mainfrom
docker_pin_julia_1_10_11

Conversation

@alongd

@alongd alongd commented Aug 28, 2026

Copy link
Copy Markdown
Member

The failure

Every push to main since 20 Aug has failed the Docker Image Build and Push workflow (latest run), always in the same layer:

#17 1864.3 install_rms.sh: line 140:  77 Segmentation fault  (core dumped) python <<EOF
#17 ERROR: process "... micromamba run -n rmg_env bash -c \"cd .../RMG-Py && source install_rms.sh\"" did not complete successfully: exit code: 1

That heredoc is install_rms.sh's from juliacall import Main check, and python << EOF || return 1 turns its failure into a failed build. Same segfault in the 20 Aug (job 96581372697) and 24 Aug (job 97406886973) runs, so it is one cause for the whole red streak, not a flake.

Root cause

The builder stage asked juliaup for the floating 1.10 channel. That channel resolved to 1.10.11 through 16 Aug and to 1.10.12 from 17 Aug, and juliacall segfaults on import under 1.10.12. RMG-Py walked into this first and pinned the same patch version in its CI workflow and Dockerfile in 62eb728c0 ("Pin Julia and openbabel to unbreak CI"); ARC's Dockerfile installs Julia itself and did not follow.

The fix

Ask juliaup for 1.10.11 instead of 1.10, in all three places of the install step. One hunk, plus one final-stage comment line that names the pinned version.

Why pyjuliacall is left alone

RMG-Py pinned pyjuliacall==0.9.28 alongside the Julia pin. ARC does not need to follow: the identical Dockerfile with only the Julia pin applied built green on 27 Aug on branch fix_remote_job_lifecycle (job 98677031469, reaching "✅ ReactionMechanismSimulator is succesfully installed!") with pyjuliacall 0.9.34, which is what pyjuliacall<0.9.35 resolves to today. Keeping the change to one variable also keeps the bisect honest.

That green run is on a feature branch that also carries unrelated SSH work; this PR isolates the pin so main can go green without waiting on it.

Known, not fixed here

install_rms.sh's conda install -y 'conda-forge::pyjuliacall==0.9.28' fails inside the image — in the green run too, so it is not what breaks the build:

PackagesNotFoundInChannelsError: The following packages are not available from current channels:
  - blas*.*

conda cannot re-solve the blas=*=openblas spec that RMG-Py's environment.yml records into the micromamba-created env. It is silently non-fatal (install_rms.sh does not check the status), but it burned ~30 of the 44 minutes of the failing run and means the upstream pyjuliacall pin never takes effect in this image. Upstream territory; worth its own issue.

Verification

CI on this PR is the verifier: the "Build Docker Image (No Push)" job has to get past install_rms.sh to "✅ ReactionMechanismSimulator is succesfully installed!".

Every "Docker Image Build and Push" run on main since 20 Aug has died in the same
layer, `source install_rms.sh`, with

    install_rms.sh: line 140: 77 Segmentation fault (core dumped) python <<EOF

That heredoc is the `from juliacall import Main` check. The builder asked juliaup
for the floating `1.10` channel, which resolved to 1.10.11 up to 16 Aug and to
1.10.12 from 17 Aug; juliacall segfaults on import under 1.10.12. RMG-Py hit the
same wall and pinned 1.10.11 in its own CI and Dockerfile in 62eb728c0.

pyjuliacall is deliberately left as it is: the identical Dockerfile with only this
pin applied built green on 27 Aug (branch fix_remote_job_lifecycle) with
pyjuliacall 0.9.34, so 0.9.34 with Julia 1.10.11 is known-good here.
@calvinp0

Copy link
Copy Markdown
Member

Already solved in #1001

@codecov

codecov Bot commented Aug 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.79%. Comparing base (f45edb0) to head (3a556eb).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1031   +/-   ##
=======================================
  Coverage   64.79%   64.79%           
=======================================
  Files         119      119           
  Lines       40039    40039           
  Branches    10350    10350           
=======================================
  Hits        25942    25942           
+ Misses      11121    11119    -2     
- Partials     2976     2978    +2     
Flag Coverage Δ
functionaltests 64.79% <ø> (ø)
unittests 64.79% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@alongd
alongd requested review from calvinp0 and a lite review from Copilot August 28, 2026 15:33
@alongd

alongd commented Aug 28, 2026

Copy link
Copy Markdown
Member Author

superseded by #1001

@alongd alongd closed this Aug 28, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Pins the Julia version installed in ARC’s Docker image to restore deterministic, reliable Docker builds after the 1.10 juliaup channel began resolving to Julia 1.10.12, which causes a juliacall import segfault during install_rms.sh.

Changes:

  • Pin juliaup installation from floating 1.10 to fixed 1.10.11 (installer default-channel, juliaup add, and juliaup default).
  • Update Dockerfile comments to document the failure mode and the rationale for the patch pin.
  • Align final-stage documentation to reference the pinned Julia patch version.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

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.

3 participants