Julia 错误的含义: ERROR (未处理的任务失败): EOFError: read end of file?

nic*_*_eu 3 julia

试图理解pmap执行一些令人尴尬的并行任务时出现的以下错误。在Linux服务器上运行。写入 HDF(并行调用的一部分)时可能会发生,但我不这么认为,因为堆栈跟踪没有指向正在执行的用户函数中的行,并且对 TCP 的引用表明它是并行调用的一部分。已经发生在多次连续运行中,所以不是一次性的侥幸。

Worker 139 terminated.
ERROR (unhandled task failure): EOFError: read end of file
Stacktrace:
 [1] unsafe_read(::Base.AbstractIOBuffer{Array{UInt8,1}}, ::Ptr{UInt8}, ::UInt64) at ./iobuffer.jl:105
 [2] unsafe_read(::TCPSocket, ::Ptr{UInt8}, ::UInt64) at ./stream.jl:752
 [3] unsafe_read(::TCPSocket, ::Base.RefValue{NTuple{4,Int64}}, ::Int64) at ./io.jl:361
 [4] read at ./io.jl:363 [inlined]
 [5] deserialize_hdr_raw at ./distributed/messages.jl:170 [inlined]
 [6] message_handler_loop(::TCPSocket, ::TCPSocket, ::Bool) at ./distributed/process_messages.jl:157
 [7] process_tcp_streams(::TCPSocket, ::TCPSocket, ::Bool) at ./distributed/process_messages.jl:118
 [8] (::Base.Distributed.##99#100{TCPSocket,TCPSocket,Bool})() at ./event.jl:73
Run Code Online (Sandbox Code Playgroud)

朱莉娅信息:

julia> versioninfo()

Julia Version 0.6.0
Commit 9036443 (2017-06-19 13:05 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Nehalem)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, westmere)
Run Code Online (Sandbox Code Playgroud)

[编辑:更多信息]另外,如果有帮助的话,这似乎在运行中发生得很好——第一组并行运行的输出看起来像是被保存到磁盘上,所以这不是立即崩溃,而是发生在运行结束或第二组执行开始时。

nic*_*_eu 11

好的,所以我终于在高层次上弄清楚了这意味着什么:

这是当并行工作线程之一遇到错误时出现的错误。特定的错误语言 ( EOFError: read end of file) 并不具有任何实际意义。stackoverflow 中对 和 的引用仅与概述任务和工作人员之间的消息传递read有关。io

就我而言,错误是内存溢出,导致任务管理器终止工作线程。