Juno unreasonably slow at random

Since the last update of julia-client, I am experiencing random hiccups of the julia client, often in conjunction with plotting. There is no significant processor load, and when I press ctrl-c I get the following trace

InterruptException:
in  at base/event.jl:73
in handlemsg at Atom/src/comm.jl:163
in  at Atom/src/eval.jl:44
in macro expansion at Media/src/dynamic.jl:67 <inlined>
in wait at base/task.jl:181
in wait at base/event.jl:27
in wait at base/event.jl:234
in try_yieldto at base/event.jl:189

InterruptException:
Stacktrace:
 [1] process_events at ./libuv.jl:82 [inlined]
 [2] wait() at ./event.jl:216
 [3] wait(::Condition) at ./event.jl:27
 [4] lock(::ReentrantLock) at ./lock.jl:74
 [5] macro expansion at /local/home/fredrikb/.julia/v0.6/Atom/src/eval.jl:102 [inlined]
 [6] (::Atom.##62#65{Dict{String,Any}})() at ./task.jl:80
fatal: error thrown and no exception handler available.
InterruptException()
jl_run_once at /buildworker/worker/package_linux64/build/src/jl_uv.c:132
process_events at ./libuv.jl:82 [inlined]
wait at ./event.jl:216
task_done_hook at ./task.jl:256
unknown function (ip: 0x7f5e759e6852)
jl_call_fptr_internal at /buildworker/worker/package_linux64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /buildworker/worker/package_linux64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:1926
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1424 [inlined]
finish_task at /buildworker/worker/package_linux64/build/src/task.c:232
start_task at /buildworker/worker/package_linux64/build/src/task.c:275
unknown function (ip: 0xffffffffffffffff)
WARNING: ErrorException
atexit hook threw an error: ErrorException("schedule: Task not runnable")

System info


versioninfo()

Julia Version 0.6.1
Commit 0d7248e2ff (2017-10-24 22:15 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, haswell)

Julia-client: 0.6.6
Atom version: 1.22.1

Next time this happens, can you check Atom’s console (Ctrl-Shift-I) for errors?

Also, can you give some info as to what you were doing when the error occured? Did Juno display the busy indicator in the bottom left?

What plotting package do you use? Does it use the plot pane? Is it interactive?

The problem seems to have gone away since I included Plots when building a sysimage. Plots took 90+ seconds to load on my machine when julia was started with multiple workers (now it’s instant), and I suspect that the boot mode = cycle might have been doing something in the background when I was experiencing this. If I do experience this again, I’ll make sure to check the console!

Juno was displaying the busy indicator and I was not using the plotting pane btw, I have never gotten it to work properly. I never managed to have it display more than a single plot, and the behavior of the pane varied a lot between backends so I never learnt how to use it properly since I use multiple backends, often in the same session.

When plotting with Plots and GR as backend, before the first plot appears (in standalone GUI) I always have to do the following commands in order

plot(...)
closeall()
gui()
# Now the plot appears

The following does not work

plot(...)
gui()

The same is not an issue in the REPL. Any thoughts on how I can avoid this?

This happened again. I just launched a fresh Julia session, ran using OrdinaryDiffEq. The output in the julia console was the following

INFO: Recompiling stale cache file /home/fredrikb/.julia/lib/v0.6/Atom.ji for module Atom.
WARNING: using Lazy.remove in module AtomShell conflicts with an existing identifier.

With the busy indicator spinning, after several minutes i pressed ctrl-C and got the following

ERROR (unhandled task failure): InterruptException:
Stacktrace:
 [1] process_events at ./libuv.jl:82 [inlined]
 [2] wait() at ./event.jl:216
 [3] wait(::Condition) at ./event.jl:27
 [4] stream_wait(::Timer, ::Condition, ::Vararg{Condition,N} where N) at ./stream.jl:42
 [5] wait(::Timer) at ./event.jl:357
 [6] (::Base.##300#301{PyCall.##7#8{PyCall.PyObject},Timer})() at ./event.jl:430

The busy indicator was still spinning and I pressed ctrl-C again and got

fatal: error thrown and no exception handler available.
InterruptException()
jl_run_once at /buildworker/worker/package_linux64/build/src/jl_uv.c:132
process_events at ./libuv.jl:82 [inlined]
wait at ./event.jl:216
task_done_hook at ./task.jl:256
unknown function (ip: 0x7f4060164522)
jl_call_fptr_internal at /buildworker/worker/package_linux64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /buildworker/worker/package_linux64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:1926
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1424 [inlined]
finish_task at /buildworker/worker/package_linux64/build/src/task.c:232
start_task at /buildworker/worker/package_linux64/build/src/task.c:275
unknown function (ip: 0xffffffffffffffff)
Julia has stopped: 1

The atom developement console displayed the following

<embedded>:119290 IntersectionObserver.observe(target): target element is not a descendant of root.
TreeView @ <embedded>:119290
misc.coffee [sm]:29 Julia Boot: 85.05s
misc.coffee [sm]:29 Julia Boot: 0.05s
misc.coffee [sm]:29 Julia Boot: 0.13s
misc.coffee [sm]:29 Julia Boot: 0.05s
internal/process/next_tick.js:103 Uncaught (in promise) Array[2]0: 11: nulllength: 2__proto__: Array[0]
internal/process/next_tick.js:103 Uncaught (in promise) disconnected
evaluation.coffee [sm]:39 Uncaught (in promise) TypeError: Cannot read property 'type' of undefined
    at evaluation.coffee [sm]:22
    at process._tickCallback (internal/process/next_tick.js:103)