2017-10-01 1 views
1

pmap次のエラーを理解しようとすると、いくつか困惑している並列タスクが実行されます。 Linuxサーバーで実行しています。 かもしれないがHDF(パラレルコールの一部)に書き込んでいる間に発生していますが、実行されているユーザ関数の中でstacktraceが行を指していないと思っていますし、TCPへの参照がパラレル呼び出しの一部であることを示しています。いくつかの連続した実行で起こっているので、一度もない。ジュリアエラーの意味:ERROR(未処理のタスクの失敗):EOFError:ファイルの終わりを読み取りますか?

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 

ジュリア情報:

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) 

[EDIT:詳細情報]は、それが便利ですまた、もし、これが実行にも起こっているように見える - 並列実行の最初のセットからの出力は次のようになりますディスクに保存されているので、これは即時のクラッシュではなく、実行の最後または2番目の実行の開始時に起こっていることです。

+0

多分メモリリークですか?エラーを再現するサンプルコードなしでは何も言い難いです。 –

答えて

2

OK、私は最終的にこれが何を意味するのか、高いレベルで理解しました:

これは、並列化された労働者のいずれかがエラーに当たったとき、あなたが得るエラーです。特定のエラー言語(EOFError: read end of file)は実際には何も意味しません。また、stackoverflow内のreadioへの参照は、オーバービュータスクとワーカー間のメッセージングにのみ関連しています。

私のケースでは、メモリオーバーフローが原因で、タスクマネージャがワーカーを終了させることになりました。

関連する問題