[IPython-user] [0:execute]: IOError: [Errno 4] Interrupted system call

mark starnes m.starnes05@imperial.ac...
Tue Nov 25 04:19:32 CST 2008


Hi again,

I cannot replicate this behaviour from the IPython console.  I attempted it, using:


from IPython.kernel import client
mec = client.MultiEngineClient()

# Create file.
import cPickle
a = file('/tmp/temp.file', 'wb')
cPickle.dump('0' * int(1E5), a)
a.close()

# Execute repeated loads on engines.
mec.execute('import cPickle')

for j in xrange(100):
    for i in xrange(3):
        command = "a = file('/tmp/temp.file')"
        mec.execute(command, targets = [i])
        command = "b = cPickle.load(a)"
        mec.execute(command, targets = [i])
        command = "a.close()"
        mec.execute(command, targets = [i])


performing 100 reads, with no errors.

BR,

Mark.




mark starnes wrote:
> Hi everyone,
> 
> I'm performing blocking file read commands on remote engines, one at a time, but regularly get the
> error:
> 
> ********************************************************************************************************
> 
> CompositeError                            Traceback (most recent call last)
> 
> <ipython console> in <module>()
> 
> /fe2.pyc in setup(self, append)
>     365             diskpush({'a':self}, picklemode = 0)  # use mode 0 (others fail)
>     366          else:
> --> 367             diskpush({'a':self})
>     368
>     369
> 
> /reference.pyc in diskpush(a, targets, block, isanobject, picklemode)
>    3359       time.sleep(5.0); mprint('Done. ')
>    3360       #mec.execute('tmpdata = dpfile.read()', targets = [i], block = True)
> -> 3361       mec.execute('dpvar = cPickle.load(dpfile)', targets = [i], block = True)
>    3362       mec.execute('dpfile.close()', targets = [i], block = True)
>    3363       #mec.barrier(a)
> 
> /usr/local/lib64/python2.5/site-packages/IPython/kernel/multiengineclient.pyc in execute(self, lines, targets, block)
>     520         targets, block = self._findTargetsAndBlock(targets, block)
>     521         result = blockingCallFromThread(self.smultiengine.execute, lines,
> --> 522             targets=targets, block=block)
>     523         if block:
>     524             result = ResultList(result)
> 
> /usr/local/lib64/python2.5/site-packages/IPython/kernel/twistedutil.pyc in blockingCallFromThread(f, *a, **kw)
>      67         @raise: any error raised during the callback chain.
>      68         """
> ---> 69         return twisted.internet.threads.blockingCallFromThread(reactor, f, *a, **kw)
>      70
>      71 else:
> 
> /usr/local/lib64/python2.5/site-packages/Twisted-8.1.0-py2.5-linux-x86_64.egg/twisted/internet/threads.pyc in blockingCallFromThread(reactor, f, *a, **kw)
>      81     result = queue.get()
>      82     if isinstance(result, failure.Failure):
> ---> 83         result.raiseException()
>      84     return result
>      85
> 
> /usr/local/lib64/python2.5/site-packages/Twisted-8.1.0-py2.5-linux-x86_64.egg/twisted/python/failure.pyc in raiseException(self)
>     317         information if available.
>     318         """
> --> 319         raise self.type, self.value, self.tb
>     320
>     321
> 
> CompositeError: one or more exceptions from call to method: execute
> [0:execute]: IOError: [Errno 4] Interrupted system call
> 
> *******************************************************************************************************************
> 
> It doesn't always happen; sometimes it will occur after a few hours of execution (ruining overnight runs).
> The active parts of the routine falling over are:
> 
> =============================================
> for i in targets:  # Sequential engine reads.
>    mec.execute('dpfile = bz2.BZ2File(tmpfn, "rb")', targets = [i], block = True)
>    mec.execute('dpvar = cPickle.load(dpfile)', targets = [i], block = True)
>    mec.execute('dpfile.close()', targets = [i], block = True)
> 
> =============================================
> 
> with targets = mec.get_ids()
> 
> 
> 
> Following the error, subsequent requests to the engines get results like:
> 
> 
> 
> 
> /<ipython console> in <module>()
> 
> /fe2.pyc in setup(self, append)
>     365             diskpush({'a':self}, picklemode = 0)  # use mode 0 (others fail)
>     366          else:
> --> 367             diskpush({'a':self})
>     368
>     369
> 
> /reference.py in diskpush(a, targets, block, isanobject, picklemode)
>    3359       #time.sleep(5.0); mprint('Done. ')
>    3360       #mec.execute('tmpdata = dpfile.read()', targets = [i], block = True)
> -> 3361       mec.execute('dpvar = cPickle.load(dpfile)', targets = [i], block = True)
>    3362       mec.execute('dpfile.close()', targets = [i], block = True)
>    3363       #mec.barrier(a)
> 
> /usr/local/lib64/python2.5/site-packages/IPython/kernel/multiengineclient.pyc in execute(self, lines, targets, block)
>     520         targets, block = self._findTargetsAndBlock(targets, block)
>     521         result = blockingCallFromThread(self.smultiengine.execute, lines,
> --> 522             targets=targets, block=block)
>     523         if block:
>     524             result = ResultList(result)
> 
> /usr/local/lib64/python2.5/site-packages/IPython/kernel/twistedutil.pyc in blockingCallFromThread(f, *a, **kw)
>      67         @raise: any error raised during the callback chain.
>      68         """
> ---> 69         return twisted.internet.threads.blockingCallFromThread(reactor, f, *a, **kw)
>      70
>      71 else:
> 
> /usr/local/lib64/python2.5/site-packages/Twisted-8.1.0-py2.5-linux-x86_64.egg/twisted/internet/threads.pyc in blockingCallFromThread(reactor, f, *a, **kw)
>      81     result = queue.get()
>      82     if isinstance(result, failure.Failure):
> ---> 83         result.raiseException()
>      84     return result
>      85
> 
> /usr/local/lib64/python2.5/site-packages/Twisted-8.1.0-py2.5-linux-x86_64.egg/twisted/python/failure.pyc in raiseException(self)
>     317         information if available.
>     318         """
> --> 319         raise self.type, self.value, self.tb
>     320
>     321
> 
> CompositeError: one or more exceptions from call to method: execute
> [0:execute]: AttributeError: 'module' object has no attribute 'cbook'
> 
> 
> 
> and then, when I quit IPython, I get,
> 
> Closing threads... Done.
> Exception exceptions.TypeError: "'NoneType' object is not callable" in <bound method RemoteReferenceTracker._refLost of <RemoteReferenceTracker(clid=1,url=pbu://127.0.0.1:24879/uwtv36uev6e7emd45xfz77tt75krrduj)>> ignored
> 
> 
> 
> 
> The engines need a restart after this error.  Any ideas on how to fix this, would be appreciated.  It's
> hobbling my parallel processing attempts!
> 
> Thanks in advance,
> 
> Mark.
> 
> 
> 
> 
> 
> 
> matplotlib version 0.98.3
> verbose.level helpful
> interactive is False
> units is False
> platform is linux2
> Could not load matplotlib icon: 'module' object has no attribute 'window_set_default_icon_from_file'
> backend QtAgg version 0.9.1
> Activating auto-logging. Current session state plus future input saved.
> Filename       : ipython_log.py
> Mode           : rotate
> Output logging : False
> Raw input log  : False
> Timestamping   : False
> State          : active
> Python 2.5.1 (r251:54863, Jan 10 2008, 18:00:49)
> Type "copyright", "credits" or "license" for more information.
> 
> IPython 0.9.rc1 -- An enhanced Interactive Python.
> 
> 
> _______________________________________________
> IPython-user mailing list
> IPython-user@scipy.org
> http://lists.ipython.scipy.org/mailman/listinfo/ipython-user
> 


More information about the IPython-user mailing list