Skip to content

track-state may spin forever consuming 100% CPU #936

Closed
@alexander-yakushev

Description

@alexander-yakushev

From https://clojurians.slack.com/archives/C0617A8PQ/p1745491033246169

we upgraded cider-nrepl to 0.55.1 and today we had the case, where 11 cpus ran at 100% for around 45 minutes until we killed the process. I ran jstack and it looks like it has to do with latest changes to track-state

"clojure-agent-send-off-pool-7" #88 [3077360] prio=5 os_prio=0 cpu=2571688.20ms elapsed=3094.35s allocated=663M defined_classes=6 tid=0x00007fc44400a090 nid=30
0007fc4275fc000]
   java.lang.Thread.State: RUNNABLE
        at java.util.WeakHashMap.get([email protected]/WeakHashMap.java:415)
        at cider.nrepl.middleware.track_state$get_metadata_if_changed_QMARK_.invokeStatic(track_state.clj:74)
        at cider.nrepl.middleware.track_state$get_metadata_if_changed_QMARK_.invoke(track_state.clj:69)
        at cider.nrepl.middleware.track_state$compute_var_meta.invokeStatic(track_state.clj:96)
        at cider.nrepl.middleware.track_state$compute_var_meta.invoke(track_state.clj:89)
        at cider.nrepl.middleware.track_state$compute_var_metas_for_namespace$fn__96498.invoke(track_state.clj:128)
        at clojure.lang.PersistentHashMap$NodeSeq.kvreduce(PersistentHashMap.java:1309)
        at clojure.lang.PersistentHashMap$BitmapIndexedNode.kvreduce(PersistentHashMap.java:804)
        at clojure.lang.PersistentHashMap$NodeSeq.kvreduce(PersistentHashMap.java:1314)
        at clojure.lang.PersistentHashMap$BitmapIndexedNode.kvreduce(PersistentHashMap.java:804)
        at clojure.lang.PersistentHashMap$ArrayNode.kvreduce(PersistentHashMap.java:468)
        at clojure.lang.PersistentHashMap.kvreduce(PersistentHashMap.java:238)
        at clojure.core$fn__8555.invokeStatic(core.clj:6987)
        at clojure.core$fn__8555.invoke(core.clj:6967)
        at clojure.core.protocols$fn__8283$G__8278__8292.invoke(protocols.clj:174)
        at clojure.core$reduce_kv.invokeStatic(core.clj:6998)
        at clojure.core$reduce_kv.invoke(core.clj:6989)
        at cider.nrepl.middleware.track_state$compute_var_metas_for_namespace.invokeStatic(track_state.clj:123)
        at cider.nrepl.middleware.track_state$compute_var_metas_for_namespace.invoke(track_state.clj:114)
        at cider.nrepl.middleware.track_state$ns_state.invokeStatic(track_state.clj:208)
        at cider.nrepl.middleware.track_state$ns_state.invoke(track_state.clj:203)
        at cider.nrepl.middleware.track_state$initial_project_state$fn__96550.invoke(track_state.clj:257)
        at clojure.lang.ArrayChunk.reduce(ArrayChunk.java:65)
        at clojure.core.protocols$fn__8270.invokeStatic(protocols.clj:135)
        at clojure.core.protocols$fn__8270.invoke(protocols.clj:123)
        at clojure.core.protocols$fn__8229$G__8224__8238.invoke(protocols.clj:19)
        at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
        at clojure.core.protocols$fn__8262.invokeStatic(protocols.clj:74)
        at clojure.core.protocols$fn__8262.invoke(protocols.clj:74)
        at clojure.core.protocols$fn__8203$G__8198__8216.invoke(protocols.clj:13)
        at clojure.core$reduce.invokeStatic(core.clj:6965)
        at clojure.core$reduce.invoke(core.clj:6947)
        at cider.nrepl.middleware.track_state$initial_project_state.invokeStatic(track_state.clj:253)
        at cider.nrepl.middleware.track_state$initial_project_state.invoke(track_state.clj:250)
        at cider.nrepl.middleware.track_state$calculate_changed_project_state_response.invokeStatic(track_state.clj:315)
        at cider.nrepl.middleware.track_state$calculate_changed_project_state_response.invoke(track_state.clj:294)
        at cider.nrepl.middleware.track_state$make_transport$reify__96576$fn__96578.invoke(track_state.clj:341)
        at clojure.core$binding_conveyor_fn$fn__5842.invoke(core.clj:2047)
        at clojure.lang.AFn.call(AFn.java:18)
        at java.util.concurrent.FutureTask.run([email protected]/FutureTask.java:317)
        at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1144)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:642)
        at java.lang.Thread.runWith([email protected]/Thread.java:1596)
        at java.lang.Thread.run([email protected]/Thread.java:1583)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions