hyperfiddle

o位v 2025-09-13T18:58:15.536319Z

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. 馃

o位v 2025-09-16T08:13:46.316839Z

Largest file in the project is 636 LOC. Total LOC in the application is 871.

o位v 2025-09-16T08:14:59.653799Z

Largest dependency namespace requiring Electric is 737 LOC.

Dustin Getz (Hyperfiddle) 2025-09-16T10:25:10.810089Z

do you think there is a connection to size of that 700LOC file ?

o位v 2025-09-16T11:03:55.726839Z

I don't know, doesn't seem that big 馃

Dustin Getz (Hyperfiddle) 2025-09-16T14:15:36.300469Z

yeah agreed we have larger files than that

o位v 2025-09-16T14:17:12.337329Z

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.

Dustin Getz (Hyperfiddle) 2025-09-16T14:19:49.810199Z

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

Geoffrey Gaillard 2025-09-14T07:18:47.841899Z

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?

o位v 2025-09-14T07:52:08.794349Z

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.

Dustin Getz (Hyperfiddle) 2025-09-14T10:46:54.419149Z

how many LOC in your application and in the largest file

o位v 2025-09-18T12:40:15.550039Z

I'm getting this stack overflow on another project too. Not blocked, just mentioning it :^) Will see if I can make an MVE

馃憖 1
Dustin Getz (Hyperfiddle) 2025-09-18T12:49:39.169099Z

what do they have in common that both suddenly started getting the exception coincidentally?

o位v 2025-09-18T12:50:17.322259Z

I'll look into that 馃槃

o位v 2025-09-13T18:59:11.756639Z

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 [])

o位v 2025-09-13T19:00:39.255209Z

Anyone know what's up? I could rebase on electric3-starter-app, but I'm hoping there's a better way to fix this.

o位v 2025-09-13T19:14:37.160349Z

ohh, the obvious thing of just increasing stack size worked.. so i'm not blocked on this anymore.

o位v 2025-09-13T19:14:56.576739Z

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