Pluto.jl: Pluto notebook freeze unexpectedly on warnings

Created on 8 Nov 2020  ยท  7Comments  ยท  Source: fonsp/Pluto.jl

One of my Pluto notebook freeze on warnings. It is not a fancy notebook, but it freezes quite often.

https://github.com/TensorBFS/TropicalTensors.jl/blob/master/notebooks/spinglass.jl

I notice that the if I remove the warnings. It does not freeze anymore. Maybe the warning is not handled properly! The warning is redirected to the browser console

Logging.js:21 โ”Œ Warn: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}
handle_log @ Logging.js:21
2Logging.js:21 โ”Œ Warn: Input type of `ArrayReg` is not Complex, got TropicalNumbers.Tropical{Float64}

Also, wondering why can not I suppress the warning in a Pluto notebook with Suppressor?

Most helpful comment

Thank you @ericphanson! I also found the error you sent -- it will be fixed in #646

All 7 comments

(@info, @warn, etc. are always redirected to the browser console - a hidden feature!)

(@info, @warn, etc. are always redirected to the browser console - a hidden feature!)

The feature sounds good. But freezing after several warnings (like 10 warnings or so will trigger this bug) is an urgent bug because it is so hard to identify and so easy to depress users (I won't tell you I spent a whole afternoon to figure it out). Let me see if I can write some MWE to examplify this better.

I updated from Pluto 0.12.4 to 0.12.7 and ran into something similar. I ran my notebook, hit the following warning, and then it froze. Restarting Julia + Pluto didn't help (same thing happened). Reverted to 0.12.4 (glad I checked in the manifest!) and everything works fine, no warnings nor freezes.
```julia
โ”Œ Warning: Failed to write to WebSocket of 1fpq1j9
โ”‚ exception =
โ”‚ MethodError: no method matching +(::Nothing, ::UInt8)
โ”‚ Closest candidates are:
โ”‚ +(::Any, ::Any, ::Any, ::Any...) at operators.jl:538
โ”‚ +(::Missing, ::Number) at missing.jl:115
โ”‚ +(::Base.CoreLogging.LogLevel, ::Integer) at logging.jl:116
โ”‚ ...
โ”‚ Stacktrace:
โ”‚ [1] to_msgpack(::MsgPack.ExtensionType, ::Array{Union{},1}) at /home
/ec2-user/.julia/packages/Pluto/xPnTl/src/webserver/MsgPack.jl:35
โ”‚ [2] pack_type(::Base.GenericIOBuffer{Array{UInt8,1}}, ::MsgPack.Exte
nsionType, ::Array{Union{},1}) at /home/ec2-user/.julia/packages/MsgPack/p
N9xd/src/pack.jl:310
โ”‚ [3] pack(::Base.GenericIOBuffer{Array{UInt8,1}}, ::Array{Union{},1})
at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pack.jl:25
โ”‚ [4] pack_format(::Base.GenericIOBuffer{Array{UInt8,1}}, ::MsgPack.Ma
pFixFormat, ::Dict{Symbol,Any}) at /home/ec2-user/.julia/packages/MsgPack/
pN9xd/src/pack.jl:283
โ”‚ [5] pack_type at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pa
ck.jl:273 [inlined]
โ”‚ [6] pack at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pack.jl
:25 [inlined]
โ”‚ [7] pack_format(::Base.GenericIOBuffer{Array{UInt8,1}}, ::MsgPack.Ar
rayFixFormat, ::Tuple{Dict{Symbol,Any},MIME{Symbol("application/vnd.pluto.
tree+object")}}) at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pack.
jl:246
โ”‚ [8] pack_type at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pa
ck.jl:237 [inlined]
โ”‚ ... (the last 3 lines are repeated 1 more time)
โ”‚ [12] pack(::Base.GenericIOBuffer{Array{UInt8,1}}, ::Tuple{Symbol,Tup
le{Dict{Symbol,Any},MIME{Symbol("application/vnd.pluto.tree+object")}}}) a
t /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pack.jl:25
โ”‚ [13] pack_format(::Base.GenericIOBuffer{Array{UInt8,1}}, ::MsgPack.A
rrayFixFormat, ::Array{Tuple{Symbol,Tuple{Any,MIME}},1}) at /home/ec2-user
/.julia/packages/MsgPack/pN9xd/src/pack.jl:246
โ”‚ [14] pack_type at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/p
ack.jl:237 [inlined]
โ”‚ [15] pack(::Base.GenericIOBuffer{Array{UInt8,1}}, ::Array{Tuple{Symb
ol,Tuple{Any,MIME}},1}) at /home/ec2-user/.julia/packages/MsgPack/pN9xd/sr
c/pack.jl:25
โ”‚ [16] pack_format(::Base.GenericIOBuffer{Array{UInt8,1}}, ::MsgPack.M
apFixFormat, ::Dict{Symbol,Any}) at /home/ec2-user/.julia/packages/MsgPack
/pN9xd/src/pack.jl:283
โ”‚ [17] pack_type at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/p
ack.jl:273 [inlined]
โ”‚ [18] pack at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pack.j
l:25 [inlined]
โ”‚ [19] pack_format(::Base.GenericIOBuffer{Array{UInt8,1}}, ::MsgPack.A
rrayFixFormat, ::Tuple{Dict{Symbol,Any},MIME{Symbol("application/vnd.pluto
.tree+object")}}) at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pack
.jl:246
โ”‚ [20] pack_type at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/p
ack.jl:237 [inlined]
โ”‚ ... (the last 3 lines are repeated 2 more times)
โ”‚ ... (the last 12 lines are repeated 1 more time)
โ”‚ [39] pack(::Base.GenericIOBuffer{Array{UInt8,1}}, ::Array{Tuple{Symb
ol,Tuple{Dict{Symbol,Any},MIME{Symbol("application/vnd.pluto.tree+object")
}}},1}) at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pack.jl:25
โ”‚ [40] pack_format(::Base.GenericIOBuffer{Array{UInt8,1}}, ::MsgPack.M
apFixFormat, ::Dict{Symbol,Any}) at /home/ec2-user/.julia/packages/MsgPack
/pN9xd/src/pack.jl:283
โ”‚ [41] pack_type at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/p
ack.jl:273 [inlined]
โ”‚ ... (the last 3 lines are repeated 3 more times)
โ”‚ [51] pack(::Base.GenericIOBuffer{Array{UInt8,1}}, ::Dict{Symbol,Any}
) at /home/ec2-user/.julia/packages/MsgPack/pN9xd/src/pack.jl:25
โ”‚ [52] pack(::Base.GenericIOBuffer{Array{UInt8,1}}, ::Vararg{Any,N} wh
ere N) at /home/ec2-user/.julia/packages/Pluto/xPnTl/src/webserver/MsgPack
.jl:72
โ”‚ [53] serialize_message_to_stream(::Base.GenericIOBuffer{Array{UInt8,
1}}, ::Pluto.UpdateMessage) at /home/ec2-user/.julia/packages/Pluto/xPnTl/
src/webserver/PutUpdates.jl:15
โ”‚ [54] sprint(::Function, ::Pluto.UpdateMessage; context::Nothing, siz
ehint::Int64) at ./strings/io.jl:105
โ”‚ [55] sprint at ./strings/io.jl:101 [inlined]
โ”‚ [56] serialize_message at /home/ec2-user/.julia/packages/Pluto/xPnTl
/src/webserver/PutUpdates.jl:19 [inlined]
โ”‚ [57] flushclient(::Pluto.ClientSession) at /home/ec2-user/.julia/pac
kages/Pluto/xPnTl/src/webserver/PutUpdates.jl:73
โ”‚ [58] flushallclients(::Pluto.ServerSession, ::Array{Pluto.ClientSess
ion,1}) at /home/ec2-user/.julia/packages/Pluto/xPnTl/src/webserver/PutUpd
ates.jl:97
โ”‚ [59] putnotebookupdates!(::Pluto.ServerSession, ::Pluto.Notebook, ::
Pluto.UpdateMessage; flush::Bool) at /home/ec2-user/.julia/packages/Pluto/
xPnTl/src/webserver/PutUpdates.jl:31
โ”‚ [60] putnotebookupdates! at /home/ec2-user/.julia/packages/Pluto/xPn
Tl/src/webserver/PutUpdates.jl:24 [inlined]
โ”‚ [61] run_reactive!(::Pluto.ServerSession, ::Pluto.Notebook, ::Pluto.
NotebookTopology, ::Pluto.NotebookTopology, ::Array{Pluto.Cell,1}; deletio
n_hook::Function, persist_js_state::Bool) at /home/ec2-user/.julia/package
s/Pluto/xPnTl/src/evaluation/Run.jl:83
โ”‚ [62] run_reactive! at /home/ec2-user/.julia/packages/Pluto/xPnTl/src
/evaluation/Run.jl:26 [inlined]
โ”‚ [63] macro expansion at /home/ec2-user/.julia/packages/Pluto/xPnTl/s
rc/evaluation/Run.jl:13 [inlined]
โ”” @ Pluto ~/.julia/packages/Pluto/xPnTl/src/webserver/PutUpdates.jl:84

Thank you @ericphanson! I also found the error you sent -- it will be fixed in #646

I've happily updated to 0.12.10 (which I understand includes #646) and have not had this issue again. @GiggleLiu maybe try that version?

Unfortunately, it does not fix my issue. In my case, there is no error information like you showed. I looks nornal in either the console or the Julia REPL, except the page is not reactive anymore.

FYI:

Browser Console log

Logging.js:21 โ”Œ Warn: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}
handle_log @ Logging.js:21
2Logging.js:21 โ”Œ Warn: Input type of `ArrayReg` is not Complex, got TropicalNumbers.Tropical{Float64}
handle_log @ Logging.js:21
2Logging.js:21 โ”Œ Warn: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}
handle_log @ Logging.js:21
2Logging.js:21 โ”Œ Warn: Input type of `ArrayReg` is not Complex, got TropicalNumbers.Tropical{Float64}
handle_log @ Logging.js:21
2Logging.js:21 โ”Œ Warn: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}

Julia REPL log

I opened the notebook from inside of a package.

julia> notebook("spinglass"; dev=true)

Opening http://localhost:1236/open?secret=sp0CNe4z&path=%2Fhome%2Fleo%2F.julia%2Fdev%2FTropicalTensors%2Fnotebooks%2Fspinglass.jl in your default browser... ~ have fun!

Press Ctrl+C in this terminal to stop Pluto

Opening in existing browser session.
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
      From worker 3:    Compose.SVG(140.0mm, 140.0mm, IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=40595, maxsize=Inf, ptr=40596, mark=-1), nothing, "img-b7395985", 0, Compose.SVGPropertyFrame[], Dict{Type,Union{Nothing, Compose.Property}}(Compose.Property{Compose.StrokePrimitive} => nothing,Compose.Property{Compose.FillPrimitive} => nothing,Compose.Property{Compose.LineWidthPrimitive} => nothing), OrderedCollections.OrderedDict{Compose.ClipPrimitive,String}(), Tuple{Compose.FormPrimitive,String}[], Set{AbstractString}(), true, false, nothing, true, "img-b7395985-2", false, 2, Set{AbstractString}(), Set(Tuple{AbstractString,AbstractString}[("Snap.svg", "Snap")]), AbstractString[], false, :none, ())Compose.SVG(140.0mm, 140.0mm, IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=41706, maxsize=Inf, ptr=41707, mark=-1), nothing, "img-d351327d", 0, Compose.SVGPropertyFrame[], Dict{Type,Union{Nothing, Compose.Property}}(Compose.Property{Compose.FontSizePrimitive} => nothing,Compose.Property{Compose.StrokePrimitive} => nothing,Compose.Property{Compose.FillPrimitive} => nothing,Compose.Property{Compose.LineWidthPrimitive} => nothing), OrderedCollections.OrderedDict{Compose.ClipPrimitive,String}(), Tuple{Compose.FormPrimitive,String}[], Set{AbstractString}(), true, false, nothing, true, "img-d351327d-4", false, 4, Set{AbstractString}(), Set(Tuple{AbstractString,AbstractString}[("Snap.svg", "Snap")]), AbstractString[], false, :none, ())Layer 1/10
      From worker 3:    Layer 2/10
      From worker 3:    Layer 3/10
      From worker 3:    Layer 4/10
      From worker 3:    Layer 5/10
      From worker 3:    Layer 6/10
      From worker 3:    Layer 7/10
      From worker 3:    Layer 8/10
      From worker 3:    Layer 9/10
      From worker 3:    Layer 10/10
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.Tropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.Tropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
      From worker 3:    Layer 1/10, stack size: 0 & 0
      From worker 3:    Layer 2/10, stack size: 0 & 0
      From worker 3:    Layer 3/10, stack size: 0 & 1
      From worker 3:    Layer 4/10, stack size: 0 & 2
      From worker 3:    Layer 5/10, stack size: 0 & 3
      From worker 3:    Layer 6/10, stack size: 0 & 4
      From worker 3:    Layer 7/10, stack size: 0 & 5
      From worker 3:    Layer 8/10, stack size: 0 & 6
      From worker 3:    Layer 9/10, stack size: 0 & 7
      From worker 3:    Layer 10/10, stack size: 0 & 8
      From worker 3:    Layer 10/10, stack size: 0 & 8
      From worker 3:    Layer 9/10, stack size: 0 & 7
      From worker 3:    Layer 8/10, stack size: 0 & 6
      From worker 3:    Layer 7/10, stack size: 0 & 5
      From worker 3:    Layer 6/10, stack size: 0 & 4
      From worker 3:    Layer 5/10, stack size: 0 & 3
      From worker 3:    Layer 4/10, stack size: 0 & 2
      From worker 3:    Layer 3/10, stack size: 0 & 1
      From worker 3:    Layer 2/10, stack size: 0 & 0
      From worker 3:    Layer 1/10, stack size: 0 & 0
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
      From worker 3:    Compose.SVG(140.0mm, 140.0mm, IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=28489, maxsize=Inf, ptr=28490, mark=-1), nothing, "img-3f809010", 0, Compose.SVGPropertyFrame[], Dict{Type,Union{Nothing, Compose.Property}}(Compose.Property{Compose.StrokePrimitive} => nothing,Compose.Property{Compose.FillPrimitive} => nothing,Compose.Property{Compose.LineWidthPrimitive} => nothing), OrderedCollections.OrderedDict{Compose.ClipPrimitive,String}(), Tuple{Compose.FormPrimitive,String}[], Set{AbstractString}(), true, false, nothing, true, "img-3f809010-4", false, 4, Set{AbstractString}(), Set(Tuple{AbstractString,AbstractString}[("Snap.svg", "Snap")]), AbstractString[], false, :none, ())Layer 1/7
      From worker 3:    Layer 2/7
      From worker 3:    Layer 3/7
      From worker 3:    Layer 4/7
      From worker 3:    Layer 5/7
      From worker 3:    Layer 6/7
      From worker 3:    Layer 7/7
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.Tropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.Tropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
      From worker 3:    Layer 1/7, stack size: 0 & 0
      From worker 3:    Layer 2/7, stack size: 0 & 0
      From worker 3:    Layer 3/7, stack size: 0 & 1
      From worker 3:    Layer 4/7, stack size: 0 & 2
      From worker 3:    Layer 5/7, stack size: 0 & 3
      From worker 3:    Layer 6/7, stack size: 0 & 4
      From worker 3:    Layer 7/7, stack size: 0 & 5
      From worker 3:    Layer 7/7, stack size: 0 & 5
      From worker 3:    Layer 6/7, stack size: 0 & 4
      From worker 3:    Layer 5/7, stack size: 0 & 3
      From worker 3:    Layer 4/7, stack size: 0 & 2
      From worker 3:    Layer 3/7, stack size: 0 & 1
      From worker 3:    Layer 2/7, stack size: 0 & 0
      From worker 3:    Layer 1/7, stack size: 0 & 0
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
โ”Œ Warning: Input type of `ArrayReg` is not Complex, got TropicalNumbers.CountingTropical{Float64}
โ”” @ YaoArrayRegister ~/.julia/packages/YaoArrayRegister/MXjQI/src/register.jl:54
      From worker 3:    Compose.SVG(140.0mm, 140.0mm, IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=28223, maxsize=Inf, ptr=28224, mark=-1), nothing, "img-4701f371", 0, Compose.SVGPropertyFrame[], Dict{Type,Union{Nothing, Compose.Property}}(Compose.Property{Compose.StrokePrimitive} => nothing,Compose.Property{Compose.FillPrimitive} => nothing,Compose.Property{Compose.LineWidthPrimitive} => nothing), OrderedCollections.OrderedDict{Compose.ClipPrimitive,String}(), Tuple{Compose.FormPrimitive,String}[], Set{AbstractString}(), true, false, nothing, true, "img-4701f371-2", false, 2, Set{AbstractString}(), Set(Tuple{AbstractString,AbstractString}[("Snap.svg", "Snap")]), AbstractString[], false, :none, ())Compose.SVG(140.0mm, 140.0mm, IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=29034, maxsize=Inf, ptr=29035, mark=-1), nothing, "img-d763c521", 0, Compose.SVGPropertyFrame[], Dict{Type,Union{Nothing, Compose.Property}}(Compose.Property{Compose.FontSizePrimitive} => nothing,Compose.Property{Compose.StrokePrimitive} => nothing,Compose.Property{Compose.FillPrimitive} => nothing,Compose.Property{Compose.LineWidthPrimitive} => nothing), OrderedCollections.OrderedDict{Compose.ClipPrimitive,String}(), Tuple{Compose.FormPrimitive,String}[], Set{AbstractString}(), true, false, nothing, true, "img-d763c521-4", false, 4, Set{AbstractString}(), Set(Tuple{AbstractString,AbstractString}[("Snap.svg", "Snap")]), AbstractString[], false, :none, ())Compose.SVG(140.0mm, 140.0mm, IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=19814, maxsize=Inf, ptr=19815, mark=-1), nothing, "img-0a56250f", 0, Compose.SVGPropertyFrame[], Dict{Type,Union{Nothing, Compose.Property}}(Compose.Property{Compose.StrokePrimitive} => nothing,Compose.Property{Compose.FillPrimitive} => nothing,Compose.Property{Compose.LineWidthPrimitive} => nothing), OrderedCollections.OrderedDict{Compose.ClipPrimitive,String}(), Tuple{Compose.FormPrimitive,String}[], Set{AbstractString}(), true, false, nothing, true, "img-0a56250f-4", false, 4, Set{AbstractString}(), Set(Tuple{AbstractString,AbstractString}[("Snap.svg", "Snap")]), AbstractString[], false, :none, ())Layer 1/7
      From worker 3:    Layer 2/7
      From worker 3:    Layer 3/7
      From worker 3:    Layer 4/7
      From worker 3:    Layer 5/7
      From worker 3:    Layer 6/7
      From worker 3:    Layer 7/7

The script to open this notebook

using Pluto

export notebook

project_relative_path(xs...) = normpath(joinpath(dirname(dirname(pathof(@__MODULE__))), xs...))

"""
    notebook(which; dev=false, kwargs...)

Open a notebook, the first argument can be
* "spinglass": solving spinglass model with Yao.
* "randomgraph": solving randomgraph model with tensor network contraction.
"""
function notebook(which; dev=false, kwargs...)
    src = project_relative_path("notebooks", "$which.jl")
    if dev
        dest = src
    else
        dest = tempname()
        cp(src, dest)
        chmod(dest, 0o664)
    end
    Pluto.run(; notebook=dest, project=project_relative_path(), kwargs...)
end

I had Pluto froze in 0.12.10 while trying to install a package, and it never pases the "loading..." screen even in a new session. I think this is related to this issue.

Did you see any warnings in your REPL? In my case, it does not freeze anymore after I removed the warning statements.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

fonsp picture fonsp  ยท  5Comments

fonsp picture fonsp  ยท  5Comments

MikaelSlevinsky picture MikaelSlevinsky  ยท  5Comments

dpsanders picture dpsanders  ยท  6Comments

enuit picture enuit  ยท  3Comments