classification
Title: python -m pdb error.py: stuck in unexitable infinite prompt loop
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 3.6, Python 3.4, Python 3.5, Python 2.7
process
Status: closed Resolution: duplicate
Dependencies: Superseder: cannot quit pdb when there is a syntax error in the debuggee (must kill it)
View: 16180
Assigned To: Nosy List: georg.brandl, shlomif, terry.reedy
Priority: normal Keywords:

Created on 2015-08-29 15:44 by shlomif, last changed 2015-09-04 17:50 by terry.reedy. This issue is now closed.

Files
File name Uploaded Description Edit
euler-234-v1.py shlomif, 2015-08-29 15:44
Messages (3)
msg249319 - (view) Author: Shlomi Fish (shlomif) * Date: 2015-08-29 15:44
I tried Ctrl+C, Ctrl+D, "quit" and "exit", and "q" - nothing exits from the infinite prompt loop.

shlomif@telaviv1:~/Docs/homepage/homepage/trunk$ cd /home/shlomif/progs/riddles/project-euler/hg/project-euler/234
shlomif@telaviv1:~/progs/riddles/project-euler/hg/project-euler/234$ ls
brute-force.pl   euler-234-description.txt   euler-234-v1.py
brute-force.pl~  euler-234-description.txt~  euler-234-v1.py~
shlomif@telaviv1:~/progs/riddles/project-euler/hg/project-euler/234$ python3 euler-234-v1.py 
  File "euler-234-v1.py", line 21
    print "Found[] = ", n
                     ^
SyntaxError: Missing parentheses in call to 'print'
shlomif@telaviv1:~/progs/riddles/project-euler/hg/project-euler/234$ python3 -mpdb euler-234-v1.py 1000
Traceback (most recent call last):
  File "/usr/lib64/python3.4/pdb.py", line 1661, in main
    pdb._runscript(mainpyfile)
  File "/usr/lib64/python3.4/pdb.py", line 1542, in _runscript
    self.run(statement)
  File "/usr/lib64/python3.4/bdb.py", line 431, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "/home/shlomif/progs/riddles/project-euler/hg/project-euler/234/euler-234-v1.py", line 21
    print "Found[] = ", n
                     ^
SyntaxError: Missing parentheses in call to 'print'
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> <string>(1)<module>()
(Pdb) 
(Pdb) exit
Post mortem debugger finished. The euler-234-v1.py will be restarted
Traceback (most recent call last):
  File "/usr/lib64/python3.4/pdb.py", line 1661, in main
    pdb._runscript(mainpyfile)
  File "/usr/lib64/python3.4/pdb.py", line 1542, in _runscript
    self.run(statement)
  File "/usr/lib64/python3.4/bdb.py", line 431, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "/home/shlomif/progs/riddles/project-euler/hg/project-euler/234/euler-234-v1.py", line 21                                                                
    print "Found[] = ", n                                                       
                     ^                                                          
SyntaxError: Missing parentheses in call to 'print'                             
Uncaught exception. Entering post mortem debugging                              
Running 'cont' or 'step' will restart the program                               
> <string>(1)<module>()                                                         
(Pdb) quit                                                                      
Post mortem debugger finished. The euler-234-v1.py will be restarted            
Traceback (most recent call last):                                              
  File "/usr/lib64/python3.4/pdb.py", line 1661, in main                        
    pdb._runscript(mainpyfile)                                                  
  File "/usr/lib64/python3.4/pdb.py", line 1542, in _runscript                  
    self.run(statement)                                                         
  File "/usr/lib64/python3.4/bdb.py", line 431, in run                          
    exec(cmd, globals, locals)                                                  
  File "<string>", line 1, in <module>                                          
  File "/home/shlomif/progs/riddles/project-euler/hg/project-euler/234/euler-234-v1.py", line 21
    print "Found[] = ", n
                     ^
SyntaxError: Missing parentheses in call to 'print'
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> <string>(1)<module>()
(Pdb) 
Post mortem debugger finished. The euler-234-v1.py will be restarted
Traceback (most recent call last):
  File "/usr/lib64/python3.4/pdb.py", line 1661, in main
    pdb._runscript(mainpyfile)
  File "/usr/lib64/python3.4/pdb.py", line 1542, in _runscript
    self.run(statement)
  File "/usr/lib64/python3.4/bdb.py", line 431, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "/home/shlomif/progs/riddles/project-euler/hg/project-euler/234/euler-234-v1.py", line 21
    print "Found[] = ", n
                     ^
SyntaxError: Missing parentheses in call to 'print'
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> <string>(1)<module>()
(Pdb) --KeyboardInterrupt--
(Pdb) --KeyboardInterrupt--
(Pdb) exit
Post mortem debugger finished. The euler-234-v1.py will be restarted
Traceback (most recent call last):
  File "/usr/lib64/python3.4/pdb.py", line 1661, in main
    pdb._runscript(mainpyfile)
  File "/usr/lib64/python3.4/pdb.py", line 1542, in _runscript
    self.run(statement)
  File "/usr/lib64/python3.4/bdb.py", line 431, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "/home/shlomif/progs/riddles/project-euler/hg/project-euler/234/euler-234-v1.py", line 21
    print "Found[] = ", n
                     ^
SyntaxError: Missing parentheses in call to 'print'
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> <string>(1)<module>()
(Pdb) quit
Post mortem debugger finished. The euler-234-v1.py will be restarted
Traceback (most recent call last):
  File "/usr/lib64/python3.4/pdb.py", line 1661, in main
    pdb._runscript(mainpyfile)
  File "/usr/lib64/python3.4/pdb.py", line 1542, in _runscript
    self.run(statement)
  File "/usr/lib64/python3.4/bdb.py", line 431, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "/home/shlomif/progs/riddles/project-euler/hg/project-euler/234/euler-234-v1.py", line 21
    print "Found[] = ", n
                     ^
SyntaxError: Missing parentheses in call to 'print'
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> <string>(1)<module>()
(Pdb) 
[1]+  Stopped                 python3 -mpdb euler-234-v1.py 1000
shlomif@telaviv1:~/progs/riddles/project-euler/hg/project-euler/234$ kill %1

[1]+  Stopped                 python3 -mpdb euler-234-v1.py 1000
shlomif@telaviv1:~/progs/riddles/project-euler/hg/project-euler/234$ 
[1]+  Terminated              python3 -mpdb euler-234-v1.py 1000
shlomif@telaviv1:~/progs/riddles/project-euler/hg/project-euler/234$ 
shlomif@telaviv1:~/progs/riddles/project-euler/hg/project-euler/234$ 
shlomif@telaviv1:~/progs/riddles/project-euler/hg/project-euler/234$ jobs
shlomif@telaviv1:~/progs/riddles/project-euler/hg/project-euler/234$
msg249320 - (view) Author: Shlomi Fish (shlomif) * Date: 2015-08-29 15:45
I should note that I am using python3-3.4.3-6.mga6 on Mageia Linux x86-64 6/Cauldron.
msg249794 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-09-04 17:29
Pdb says "Running 'cont' or 'step' will restart the program" but it seems to restart on any recognized command other than 'h' and traps everything else.  I verified behavior on Win7 with ordinary syntax error 'a = = 1' on installed 2.7.10 and 3.4.3.  Removed qualifiers from title.

Doc says
'''
python3 -m pdb myscript.py

When invoked as a script, pdb will automatically enter post-mortem debugging if the program being debugged exits abnormally. After post-mortem debugging (or after normal exit of the program), pdb will restart the program.'''

But not being able to exit could not have been the intention. Looking at the code.
History
Date User Action Args
2015-09-04 17:50:44terry.reedysetstatus: open -> closed
type: behavior
superseder: cannot quit pdb when there is a syntax error in the debuggee (must kill it)
resolution: duplicate
stage: test needed -> resolved
2015-09-04 17:29:53terry.reedysetnosy: + georg.brandl, terry.reedy
title: python3 -mpdb gets stuck in an unexitable infinite prompt loop when running some Python 2 code with syntax errors -> python -m pdb error.py: stuck in unexitable infinite prompt loop
messages: + msg249794

versions: + Python 2.7, Python 3.5, Python 3.6
stage: test needed
2015-08-29 15:45:47shlomifsetmessages: + msg249320
2015-08-29 15:44:54shlomifcreate