My project fails to compile on AMD64. It compiles fine on ARM and dev mode also works fine on ARM. I'm getting a stack overflow. 馃
Largest file in the project is 636 LOC. Total LOC in the application is 871.
Largest dependency namespace requiring Electric is 737 LOC.
do you think there is a connection to size of that 700LOC file ?
I don't know, doesn't seem that big 馃
yeah agreed we have larger files than that
I have a big file in my dependency library, it's 4772 LOC. That file is not required anywhere in my project though (directly or transitively.
it is the electric cljs macroexpansion that i was thinking about, we had issues in the past but i have not seen any recent issues since we fixed it in 2023
Thank you for the report. I'd like to know more. What's the amd64 platform used for? Is it a prod server? Could there also be a difference in JVM distribution between your dev machine (ARM) and the AMD64 one?
Yes, amd64 is prod. There might be JVM differences. I started by using the default Dockerfile and then I upgraded the JDK to 24. That did not fix the error.
how many LOC in your application and in the largest file
I'm getting this stack overflow on another project too. Not blocked, just mentioning it :^) Will see if I can make an MVE
what do they have in common that both suddenly started getting the exception coincidentally?
I'll look into that 馃槃
The compiler points to the first e/defn in main.cljc. For example it says it stack overflows when compiling
(e/defn HowAboutThis [])
(ns electric-starter-app.main
{:clj-kondo/ignore true}
(:require [hyperfiddle.electric3 :as e]
[hyperfiddle.electric-dom3 :as dom]
[lambdaisland.deep-diff2 :as ddiff]
[hyperfiddle.rcf :refer [tests tap %]]
[com.itonomi.komponentkassen.shell2 :as ks2]
[com.itonomi.komponentkassen.simple :as ksi]
[lentes.core :as l]
[clojure.edn :as edn]
[clojure.pprint :refer [pprint]]
[clojure.string :as str]
#?(:clj [clojure.java.shell :refer [sh]])
#?(:clj [ :as jio])
#?(:clj [tick.core :as tick])
#?(:clj [taoensso.telemere :as t])
#?(:clj [com.itonomi :refer :all])
#?(:clj [wkok.openai-clojure.api :as api])
#?(:clj [missionary.core :as m])
#?(:clj [clojure.pprint :refer :all])
#?(:clj [clojure.data.json :as json])
#?(:clj [duratom.core :as dur])))
(e/defn HowAboutThis []) Anyone know what's up? I could rebase on electric3-starter-app, but I'm hoping there's a better way to fix this.
ohh, the obvious thing of just increasing stack size worked.. so i'm not blocked on this anymore.
FTR, this is the compiler error:
#15 8.717 INFO build: uberjar {:version "021677ec2c797e6c5ac08ecbc975d024dbe0515f", :build/jar-name app.jar}
#15 8.717 INFO build: build-client {:version "021677ec2c797e6c5ac08ecbc975d024dbe0515f"}
#15 14.78 shadow-cljs - server version: 2.26.2 running at
#15 14.78 shadow-cljs - nREPL server started on port 33475
#15 14.78 [:prod] Compiling ...
#15 25.72 ------ ERROR -------------------------------------------------------------------
#15 25.72 File: /app/src/electric_starter_app/main.cljc:24:1
#15 25.72 --------------------------------------------------------------------------------
#15 25.72 21 | #?(:clj [clojure.data.json :as json])
#15 25.72 22 | #?(:clj [duratom.core :as dur])))
#15 25.72 23 |
#15 25.72 24 | (e/defn HowAboutThis [])
#15 25.72 -------^------------------------------------------------------------------------
#15 25.72 Encountered error when macroexpanding hyperfiddle.electric3/defn.
#15 25.72 Encountered error when macroexpanding e/defn.
#15 25.72 StackOverflowError:
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:290)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro/fn--49230 (lang3.clj:132)
#15 25.72 clojure.core/mapv/fn--8565 (core.clj:7059)
#15 25.72 clojure.core.protocols/fn--8275 (protocols.clj:167)
#15 25.72 clojure.core.protocols/fn--8275 (protocols.clj:123)
#15 25.72 clojure.core.protocols/fn--8229/G--8224--8238 (protocols.clj:19)
#15 25.72 clojure.core.protocols/seq-reduce (protocols.clj:31)
#15 25.72 clojure.core.protocols/fn--8260 (protocols.clj:74)
#15 25.72 clojure.core.protocols/fn--8260 (protocols.clj:74)
#15 25.72 clojure.core.protocols/fn--8203/G--8198--8216 (protocols.clj:13)
#15 25.72 clojure.core/reduce (core.clj:6965)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:132)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:126)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:379)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:135)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:126)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:379)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:135)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:126)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:379)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:135)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:126)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:379)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:135)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:126)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:379)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro/fn--49233 (lang3.clj:136)
#15 25.72 clojure.core/mapv/fn--8565 (core.clj:7059)
#15 25.72 clojure.lang.PersistentList.reduce (PersistentList.java:143)
#15 25.72 clojure.core/reduce (core.clj:6964)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:136)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:126)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:379)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro/fn--49233 (lang3.clj:136)
#15 25.72 clojure.core/mapv/fn--8565 (core.clj:7059)
#15 25.72 clojure.core.protocols/fn--8275 (protocols.clj:167)
#15 25.72 clojure.core.protocols/fn--8275 (protocols.clj:123)
#15 25.72 clojure.core.protocols/fn--8229/G--8224--8238 (protocols.clj:19)
#15 25.72 clojure.core.protocols/seq-reduce (protocols.clj:31)
#15 25.72 clojure.core.protocols/fn--8260 (protocols.clj:74)
#15 25.72 clojure.core.protocols/fn--8260 (protocols.clj:74)
#15 25.72 clojure.core.protocols/fn--8203/G--8198--8216 (protocols.clj:13)
#15 25.72 clojure.core/reduce (core.clj:6965)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:136)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:126)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:379)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:135)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:126)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:379)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro/fn--49230 (lang3.clj:132)
#15 25.72 clojure.core/mapv/fn--8565 (core.clj:7059)
#15 25.72 clojure.lang.PersistentList.reduce (PersistentList.java:143)
#15 25.72 clojure.core/reduce (core.clj:6964)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:132)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro (lang3.clj:126)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:379)
#15 25.72 hyperfiddle.electric.impl.lang3/-expand-all (lang3.clj:289)
#15 25.72 hyperfiddle.electric.impl.lang3/?expand-macro/fn--49233 (lang3.clj:136)
#15 25.72 clojure.core/mapv/fn--8565 (core.clj:7059)
#15 25.72 clojure.lang.PersistentList.reduce (PersistentList.java:143)
#15 25.72 clojure.core/reduce (core.clj:6964)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72 clojure.core/mapv (core.clj:7050)
#15 25.72
#15 25.72 --------------------------------------------------------------------------------
#15 25.72 25 | (e/defn ThisIsFine [ val seq])
#15 25.72 26 | (e/defn This [Rf])
#15 25.72 27 | (e/defn AndThis [Rf val seq])
#15 25.72 28 |
#15 25.72 --------------------------------------------------------------------------------
#15 25.72
#15 25.79 Execution error (AssertionError) at build/build-client (build.clj:35).
#15 25.79 Assert failed: shadow-api/release error
#15 25.79 (= shadow-status :done)
#15 25.79
#15 25.79 Full report at:
#15 25.79 /tmp/clojure-15811410206407145458.edn
#15 ERROR: process "/bin/sh -c clojure -X:build:prod uberjar :version \"\\\"$VERSION\\\"\" :build/jar-name \"app.jar\"" did not complete successfully: exit code: 1
------
> [10/10] RUN clojure -X:build:prod uberjar :version ""021677ec2c797e6c5ac08ecbc975d024dbe0515f"" :build/jar-name "app.jar":
25.72 27 | (e/defn AndThis [Rf val seq])
25.72 28 |
25.72 --------------------------------------------------------------------------------
25.72
25.79 Execution error (AssertionError) at build/build-client (build.clj:35).
25.79 Assert failed: shadow-api/release error
25.79 (= shadow-status :done)
25.79
25.79 Full report at:
25.79 /tmp/clojure-15811410206407145458.edn
------
1 warning found (use docker --debug to expand):
- JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 19)
Dockerfile:17
--------------------
15 | ENV VERSION=$VERSION
16 |
17 | >>> RUN clojure -X:build:prod uberjar :version "\"$VERSION\"" :build/jar-name "app.jar"
18 |
19 | CMD java -cp target/app.jar clojure.main -m prod
--------------------
ERROR: failed to build: failed to solve: process "/bin/sh -c clojure -X:build:prod uberjar :version \"\\\"$VERSION\\\"\" :build/jar-name \"app.jar\"" did not complete successfully: exit code: 1
docker stderr: Nothing written