fonsp / Pluto.jl

🎈 Simple reactive notebooks for Julia
https://plutojl.org/
MIT License
4.91k stars 284 forks source link

Pluto disconnects the running process due to ECONNRESET error #2796

Open eladfisher opened 5 months ago

eladfisher commented 5 months ago

Hi, my notebook crashes when running heavy computation, after several hours, it happened several times already, but it isn't consistent, and i could not reliably reproduce the error.

the stack trace is (with the warnings that printed with the crash itself): ┌ Warning: Response function to message of type :reshow_cell failed └ @ Pluto ~/.julia/packages/Pluto/KkVLI/src/webserver/WebServer.jl:410 ┌ Warning: Processing message failed for unknown reason: │ parentbody = │ Dict{Any, Any} with 5 entries: │ "client_id" => "1r2oekw" │ "body" => Dict{Any, Any}("cell_id"=>"adsf", "dim"=>1, "objectid"=>"1ccd8a135dce7d5a") │ "request_id" => "15rxj4m" │ "notebook_id" => "fe129314-bdad-11ee-0302-b164498ec3b1" │ "type" => "reshow_cell" │ exception = │ ArgumentError: Malformed UUID string: "adsf" │ Stacktrace: │ [1] (::Base.var"#throw_malformed_uuid#934")(s::String) │ @ Base ./uuid.jl:80 │ [2] parse │ @ ./uuid.jl:83 [inlined] │ [3] Base.UUID(s::String) │ @ Base ./uuid.jl:87 │ [4] response_reshow_cell(🙋::Pluto.ClientRequest) │ @ Pluto ~/.julia/packages/Pluto/KkVLI/src/webserver/Dynamic.jl:513 │ [5] process_ws_message(session::Pluto.ServerSession, parentbody::Dict{Any, Any}, clientstream::HTTP.WebSockets.WebSocket) │ @ Pluto ~/.julia/packages/Pluto/KkVLI/src/webserver/WebServer.jl:408 │ [6] (::Pluto.var"#431#441"{Pluto.ServerSession})(clientstream::HTTP.WebSockets.WebSocket) │ @ Pluto ~/.julia/packages/Pluto/KkVLI/src/webserver/WebServer.jl:215 │ [7] upgrade(f::Pluto.var"#431#441"{Pluto.ServerSession}, http::HTTP.Streams.Stream{HTTP.Messages.Request, HTTP.Connections.Connection{Sockets.TCPSocket}}; suppress_close_error::Bool, maxframesize::Int64, maxfragmentation::Int64, kw::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) │ @ HTTP.WebSockets ~/.julia/packages/HTTP/bDoga/src/WebSockets.jl:440 │ [8] upgrade │ @ ~/.julia/packages/HTTP/bDoga/src/WebSockets.jl:420 [inlined] │ [9] (::Pluto.var"#430#440"{Pluto.ServerSession, Pluto.var"#327#329"{Pluto.var"#330#332"{HTTP.Handlers.Router{typeof(Pluto.default_404), typeof(HTTP.Handlers.default405), Nothing}}, Pluto.ServerSession}})(http::HTTP.Streams.Stream{HTTP.Messages.Request, HTTP.Connections.Connection{Sockets.TCPSocket}}) │ @ Pluto ~/.julia/packages/Pluto/KkVLI/src/webserver/WebServer.jl:196 │ [10] #invokelatest#2 │ @ ./essentials.jl:819 [inlined] │ [11] invokelatest │ @ ./essentials.jl:816 [inlined] │ [12] handle_connection(f::Function, c::HTTP.Connections.Connection{Sockets.TCPSocket}, listener::HTTP.Servers.Listener{Nothing, Sockets.TCPServer}, readtimeout::Int64, access_log::Nothing) │ @ HTTP.Servers ~/.julia/packages/HTTP/bDoga/src/Servers.jl:450 │ [13] macro expansion │ @ ~/.julia/packages/HTTP/bDoga/src/Servers.jl:386 [inlined] │ [14] (::HTTP.Servers.var"#16#17"{Pluto.var"#430#440"{Pluto.ServerSession, Pluto.var"#327#329"{Pluto.var"#330#332"{HTTP.Handlers.Router{typeof(Pluto.default_404), typeof(HTTP.Handlers.default405), Nothing}}, Pluto.ServerSession}}, HTTP.Servers.Listener{Nothing, Sockets.TCPServer}, Set{HTTP.Connections.Connection}, Int64, Nothing, Base.Semaphore, HTTP.Connections.Connection{Sockets.TCPSocket}})() │ @ HTTP.Servers ./task.jl:514 └ @ Pluto ~/.julia/packages/Pluto/KkVLI/src/webserver/WebServer.jl:222 Worker 4 terminated. Unhandled Task ERROR: IOError: read: connection reset by peer (ECONNRESET) Stacktrace: [1] wait_readnb(x::Sockets.TCPSocket, nb::Int64) @ Base ./stream.jl:410 [2] (::Base.var"#wait_locked#715")(s::Sockets.TCPSocket, buf::IOBuffer, nb::Int64) @ Base ./stream.jl:949 [3] unsafe_read(s::Sockets.TCPSocket, p::Ptr{UInt8}, nb::UInt64) @ Base ./stream.jl:955 [4] unsafe_read @ ./io.jl:761 [inlined] [5] unsafe_read(s::Sockets.TCPSocket, p::Base.RefValue{NTuple{4, Int64}}, n::Int64) @ Base ./io.jl:760 [6] read! @ ./io.jl:762 [inlined] [7] deserialize_hdr_raw @ ~/julia-1.9.4/share/julia/stdlib/v1.9/Distributed/src/messages.jl:167 [inlined] [8] message_handler_loop(r_stream::Sockets.TCPSocket, w_stream::Sockets.TCPSocket, incoming::Bool) @ Distributed ~/julia-1.9.4/share/julia/stdlib/v1.9/Distributed/src/process_messages.jl:172 [9] process_tcp_streams(r_stream::Sockets.TCPSocket, w_stream::Sockets.TCPSocket, incoming::Bool) @ Distributed ~/julia-1.9.4/share/julia/stdlib/v1.9/Distributed/src/process_messages.jl:133 [10] (::Distributed.var"#103#104"{Sockets.TCPSocket, Sockets.TCPSocket, Bool})() @ Distributed ./task.jl:514

unfortunately, i can't reproduce or give a minimal working example, so i don't have much to add to the stack trace, i tried to update Pluto to v0.19.36 from # v0.19.32, but it didn't fix the problem, also the same notebook worked before, so i don't think it something that i did.

fonsp commented 5 months ago

The first two warnings are unrelated.

The final error message just says that the notebook process crashed. This could be because it ran out of memory. Did you also run the same computation outside of Pluto? You could try to run include("my_notebook_file.jl") in a REPL?