2017-10-01 5 views
1

Essayer de comprendre l'erreur suivante dans une exécution pmap de certaines tâches parallèles embarrassantes. En cours d'exécution sur le serveur Linux. peut se produire lors de l'écriture en HDF (une partie de l'appel parallèle), mais je ne pense pas que stacktrace ne pointe pas à ligne dans la fonction utilisateur en cours d'exécution, et la référence à TCP suggère qu'il fait partie des appels parallèles. Est arrivé dans plusieurs séries séquentielles, donc pas un seul coup de chance.Signification de l'erreur Julia: ERREUR (échec de la tâche non gérée): EOFError: lecture de la fin du fichier?

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 info:

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: Plus d'infos] En outre, si elle est utile, cela semble se passer bien dans la course - sortie du premier jeu de pistes parallèles ressemble il est sauvegardé sur le disque, donc ce n'est pas un crash immédiat, mais quelque chose qui se passe à la fin d'une exécution ou au début du second jeu d'exécutions.

+0

Peut-être une fuite de mémoire? Il est difficile de dire quoi que ce soit de plus sans un exemple de code qui reproduit l'erreur. –

Répondre

2

OK, donc j'ai finalement à comprendre à un niveau élevé ce que cela signifie:

Ceci est l'erreur que vous obtenez lorsque l'un des travailleurs parallélisés frappe une erreur. La langue d'erreur spécifique (EOFError: read end of file) ne signifie vraiment rien. Et les références à read et io dans le stackoverflow se rapportent juste à la messagerie entre la tâche d'aperçu et les travailleurs.

Dans mon cas, l'erreur était un débordement de mémoire menant au gestionnaire de tâches mettant fin au travail.