Skip to content
This repository

Typing 'continue' makes ipython0.11 crash #858

Closed
NelleV opened this Issue October 11, 2011 · 1 comment

2 participants

Varoquaux Thomas Kluyver
Varoquaux

I accidently typed continue, while not in a pdb session, and made ipython crash. Here is the post-mortem report.

I reproduced the bug several times:

IPython 0.11 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.

In [1]: continue


IPython post-mortem report

{'commit_hash': '464280a',
'commit_source': 'installation',
'ipython_path': '/home/nelle/Projets/ENS/ROVAR/TP1/src/env/lib/python2.6/site-packages/ipython-0.11-py2.6.egg/IPython',
'ipython_version': '0.11',
'os_name': 'posix',
'platform': 'Linux-2.6.35-30-generic-i686-with-Ubuntu-10.10-maverick',
'sys_executable': '/home/nelle/Projets/ENS/ROVAR/TP1/src/env/bin/python',
'sys_platform': 'linux2',
'sys_version': '2.6.6 (r266:84292, Sep 15 2010, 15:52:39) \n[GCC 4.4.5]'}



Crash traceback:


SyntaxErrorPython 2.6.6: /home/nelle/Projets/ENS/ROVAR/TP1/src/env/bin/python
Tue Oct 11 14:47:26 2011
A problem occured executing Python code. Here is the sequence of function
calls leading up to the error, with the most recent (innermost) call last.
/home/nelle/Projets/ENS/ROVAR/TP1/src/env/bin/ipython in ()
1 #!/home/nelle/Projets/ENS/ROVAR/TP1/src/env/bin/python
2 # EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.11','console_scripts','ipython'
3 requires = 'ipython==0.11'
4 import sys
5 from pkg_resources import load_entry_point
6
7 if name == 'main':
8 sys.exit(
----> 9 load_entry_point('ipython==0.11', 'console_scripts', 'ipython')()
global load_entry_point =
10 )

/home/nelle/Projets/ENS/ROVAR/TP1/src/env/lib/python2.6/site-packages/ipython-0.11-py2.6.egg/IPython/frontend/terminal/ipapp.pyc in launch_new_instance()
355 ipython_dir = get_ipython_dir()
356 profile_dir = os.path.join(ipython_dir, 'profile_default')
357 cl = PyFileConfigLoader(default_config_file_name, profile_dir)
358 try:
359 config = cl.load_config()
360 except IOError:
361 # no config found
362 config = Config()
363 return config
364
365
366 def launch_new_instance():
367 """Create and run a full blown IPython instance"""
368 app = TerminalIPythonApp.instance()
369 app.initialize()
--> 370 app.start()
371
372
373 if name == 'main':
374 launch_new_instance()

/home/nelle/Projets/ENS/ROVAR/TP1/src/env/lib/python2.6/site-packages/ipython-0.11-py2.6.egg/IPython/frontend/terminal/ipapp.pyc in start(self=)
329 if gui or self.pylab:
330 try:
331 self.log.info("Enabling GUI event loop integration, "
332 "toolkit=%s, pylab=%s" % (gui, self.pylab) )
333 activate(gui)
334 except:
335 self.log.warn("Error in enabling GUI event loop integration:")
336 self.shell.showtraceback()
337
338 def start(self):
339 if self.subapp is not None:
340 return self.subapp.start()
341 # perform any prexec steps:
342 if self.interact:
343 self.log.debug("Starting IPython's mainloop...")
--> 344 self.shell.mainloop()
345 else:
346 self.log.debug("IPython not interactive...")
347
348
349 def load_default_config(ipython_dir=None):
350 """Load the default config file from the default ipython_dir.
351
352 This is useful for embedded shells.
353 """
354 if ipython_dir is None:
355 ipython_dir = get_ipython_dir()
356 profile_dir = os.path.join(ipython_dir, 'profile_default')
357 cl = PyFileConfigLoader(default_config_file_name, profile_dir)
358 try:
359 config = cl.load_config()

/home/nelle/Projets/ENS/ROVAR/TP1/src/env/lib/python2.6/site-packages/ipython-0.11-py2.6.egg/IPython/frontend/terminal/interactiveshell.pyc in mainloop(self=, display_banner=None)
207 #-------------------------------------------------------------------------
208 # Mainloop and code execution logic
209 #-------------------------------------------------------------------------
210
211 def mainloop(self, display_banner=None):
212 """Start the mainloop.
213
214 If an optional banner argument is given, it will override the
215 internally created default banner.
216 """
217

218 with nested(self.builtin_trap, self.display_trap):
219
220 while 1:
221 try:
--> 222 self.interact(display_banner=display_banner)
global c = undefined
global C = undefined
global s = undefined
global i = undefined
global d = undefined
global o = undefined
global S = undefined
global pN = undefined
223 #self.interact_with_readline()

224 # XXX for testing of a readline-decoupled repl loop, call
225 # interact_with_readline above
226 break
227 except KeyboardInterrupt:
228 # this should not be necessary, but KeyboardInterrupt
229 # handling seems rather unpredictable...
230 self.write("\nKeyboardInterrupt in interact()\n")
231
232 def interact(self, display_banner=None):
233 """Closely emulate the interactive Python console."""
234
235 # batch run -> do not interact

236 if self.exit_now:
237 return

/home/nelle/Projets/ENS/ROVAR/TP1/src/env/lib/python2.6/site-packages/ipython-0.11-py2.6.egg/IPython/frontend/terminal/interactiveshell.pyc in interact(self=, display_banner=False)
297 'Because of how pdb handles the stack, it is impossible\n'
298 'for IPython to properly format this particular exception.\n'
299 'IPython will resume normal operation.')
300 except:
301 # exceptions here are VERY RARE, but they can be triggered
302 # asynchronously by signal handlers, for example.
303 self.showtraceback()
304 else:
305 self.input_splitter.push(line)
306 more = self.input_splitter.push_accepts_more()
307 if (self.SyntaxTB.last_syntax_error and
308 self.autoedit_syntax):
309 self.edit_syntax_error()
310 if not more:
311 source_raw = self.input_splitter.source_raw_reset()[1]
--> 312 self.run_cell(source_raw)
313

314 # We are off again...
315 builtin.dict['__IPYTHON__active'] -= 1
316
317 # Turn off the exit flag, so the mainloop can be restarted if desired
318 self.exit_now = False
319
320 def raw_input(self, prompt=''):
321 """Write a prompt and read a line.
322
323 The returned line does not include the trailing newline.
324 When the user enters the EOF key sequence, EOFError is raised.
325
326 Optional inputs:
327

/home/nelle/Projets/ENS/ROVAR/TP1/src/env/lib/python2.6/site-packages/ipython-0.11-py2.6.egg/IPython/core/interactiveshell.pyc in run_cell(self=, raw_cell=u'continue\n', store_history=True)
2282

2283 with self.display_trap:
2284 try:
2285 code_ast = ast.parse(cell, filename=cell_name)
2286 except IndentationError:
2287 self.showindentationerror()
2288 self.execution_count += 1
2289 return None
2290 except (OverflowError, SyntaxError, ValueError, TypeError,
2291 MemoryError):
2292 self.showsyntaxerror()
2293 self.execution_count += 1
2294 return None
2295

2296 self.run_ast_nodes(code_ast.body, cell_name,
-> 2297 interactivity="last_expr")
2298

2299 # Execute any registered post-execution functions.
2300 for func, status in self._post_execute.iteritems():
2301 if not status:
2302 continue
2303 try:
2304 func()
2305 except:
2306 self.showtraceback()
2307 # Deactivate failing function
2308 self._post_execute[func] = False
2309

2310 if store_history:
2311 # Write output to the database. Does nothing unless
2312 # history output logging is enabled.

/home/nelle/Projets/ENS/ROVAR/TP1/src/env/lib/python2.6/site-packages/ipython-0.11-py2.6.egg/IPython/core/interactiveshell.pyc in run_ast_nodes(self=, nodelist=[<_ast.Continue object>], cell_name='', interactivity='none')
2342 interactivity = "none"
2343

2344 if interactivity == 'none':
2345 to_run_exec, to_run_interactive = nodelist, []
2346 elif interactivity == 'last':
2347 to_run_exec, to_run_interactive = nodelist[:-1], nodelist[-1:]
2348 elif interactivity == 'all':
2349 to_run_exec, to_run_interactive = [], nodelist
2350 else:
2351 raise ValueError("Interactivity was %r" % interactivity)
2352

2353 exec_count = self.execution_count
2354

2355 for i, node in enumerate(to_run_exec):
2356 mod = ast.Module([node])
-> 2357 code = self.compile(mod, cell_name, "exec")
2358 if self.run_code(code):
2359 return True
2360
2361 for i, node in enumerate(to_run_interactive):
2362 mod = ast.Interactive([node])
2363 code = self.compile(mod, cell_name, "single")
2364 if self.run_code(code):
2365 return True
2366
2367 return False
2368

2369 def run_code(self, code_obj):
2370 """Execute a code object.
2371
2372 When an exception occurs, self.showtraceback() is called to display a

/usr/lib/python2.6/codeop.pyc in call(self=, source=<ast.Module object>, filename='', symbol='exec')
118 - Raise SyntaxError, ValueError or OverflowError if the command is a
119 syntax error (OverflowError and ValueError can be produced by
120 malformed literals).
121 """
122 return maybe_compile(_compile, source, filename, symbol)
123
124 class Compile:
125 """Instances of this class behave much like the built-in compile
126 function, but if one is used to compile text containing a future
127 statement, it "remembers" and compiles all subsequent program texts
128 with the statement in force."""
129 def __init
(self):
130 self.flags = PyCF_DONT_IMPLY_DEDENT
131
132 def call(self, source, filename, symbol):
--> 133 codeob = compile(source, filename, symbol, self.flags, 1)
134 for feature in features:
135 if codeob.co_flags & feature.compiler_flag:
136 self.flags |= feature.compiler_flag
137 return codeob
138
139 class CommandCompiler:
140 """Instances of this class have __call_
methods identical in
141 signature to compile_command; the difference is that if the
142 instance compiles program text containing a future statement,
143 the instance 'remembers' and compiles all subsequent program texts
144 with the statement in force."""
145
146 def init(self,):
147 self.compiler = Compile()
148

SyntaxError: 'continue' not properly in loop (, line 1)


History of session input:continue
*** Last line of input (may not be in above history):
continue

Thomas Kluyver
Collaborator

Thanks for the report - I believe this is already fixed in trunk. We weren't catching exceptions in one of the key places we should have been. Another reason to aim for a 0.12 release before too long.

Thomas Kluyver takluyver closed this October 11, 2011
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.