This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: IDLE processes don't close
Type: behavior Stage: resolved
Components: IDLE, Windows Versions: Python 3.1
process
Status: closed Resolution: duplicate
Dependencies: Superseder: "Restart Shell" command leaves pythonw.exe processes running
View: 12540
Assigned To: Nosy List: Simon, brian.curtin, mensanator, roger.serwy, skrah, terry.reedy
Priority: normal Keywords:

Created on 2010-03-08 23:21 by mensanator, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Messages (5)
msg100679 - (view) Author: paul stadfeld (mensanator) Date: 2010-03-08 23:21
So I started 3.1.2...

Python 3.1.2rc1 (r312rc1:78742, Mar  7 2010, 07:49:40) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 

And monitored Windows Task Manager (XP):

Image Name    User Name       CPU   Mem Usage
---------------------------------------------
pythonw.exe   paul_stadfeld   00    11,120 K
pythonw.exe   paul_stadfeld   00    16,816 K

I assume this is normal.

I deliberately do something stupid:

>>> a = 222222222222222222222222222
>>> b = 5555555555555555555555555555 
>>> a**b

Ok, that will run for a while, long enough for me to watch the Task Manager:

Image Name    User Name       CPU   Mem Usage
---------------------------------------------
pythonw.exe   paul_stadfeld  ~55   ~30,548 K (constantly changing)
pythonw.exe   paul_stadfeld   00    16,828 K

So I do [Restart Shell] from IDLE's [Shell] menu:

>>> ================================ RESTART ================================

And try it again.

>>> a = 222222222222222222222222222
>>> b = 5555555555555555555555555555 
>>> a**b

But now it's different:

Image Name    User Name       CPU   Mem Usage
---------------------------------------------
pythonw.exe   paul_stadfeld   00    13,716
pythonw.exe   paul_stadfeld  ~50   ~30,548 K (constantly changing)
pythonw.exe   paul_stadfeld  ~48   ~45,548 K (constantly changing)
pythonw.exe   paul_stadfeld   00    16,892 K

Looks like the previous process was never stopped.

Trying to Restart Shell again and running same creates a 5th instance
of pythonw.exe.

>>> ================================ RESTART ================================
>>> a = 222222222222222222222222222
>>> b = 5555555555555555555555555555 
>>> a**b


Image Name    User Name       CPU   Mem Usage
---------------------------------------------
pythonw.exe   paul_stadfeld   00    13,716
pythonw.exe   paul_stadfeld  ~50   ~54,548 K (constantly changing)
pythonw.exe   paul_stadfeld  ~25   ~42,548 K (constantly changing)
pythonw.exe   paul_stadfeld  ~25   ~54,548 K (constantly changing)
pythonw.exe   paul_stadfeld   00    16,892 K


Only this time I got an error trying to re-start.

    IDLE's subprocess didn't make connection. Either IDLE can't start a 
    subprocess or personal firewall software is blocking the connection

Now I'm stuck, so I close the "Python Shell" window.

But closing the window only stopped one of the pythonw.exe instances.
The three active processes are still running full tilt (the one quiescent
process remains quiescent.)

This appears to be a process leak in addition to it being a memory leak.

Also, had one of the processes that won't stop opened a script from a USB
port, then Windows would refuse to eject the USB drive as it correctly 
thinks some process is still using it. Of course, since the application 
is closed, there's not suppoed to be any such process, so it's
not obvious where the problem is unless you look at the process table
in Windows Task Manager and manually halt all the renegade pythonw.exe
processes that are still running. At which point Windows will allow the 
USB to be ejected.
msg100735 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2010-03-09 17:47
I reproduced this with 3.1.1 on xp. It took a while to get the shell menu to restart as the calculation process is hogging the cpu 99%.
KeyboardInterrupt (^C) would not stop the runaway process. There may have been other issues about this.

Two processes is normal - one for the shell and one for calculations. The 'normal' behavior of Restart Shell (^F6) is to start a third process. Watching in task manager, the abandoned calculation process dies in 3-4 seconds. A stuck process does not end on its own though. Bad bug.
msg102818 - (view) Author: Stefan Krah (skrah) * (Python committer) Date: 2010-04-11 09:16
For the record:

In 2.7-alpha you do not even get to press [Restart Shell], since IDLE is
not responding during the calculation.
msg138814 - (view) Author: Simon Buchan (Simon) Date: 2011-06-22 05:09
Not sure if this is related, but for me none of the F5 processes (command line "pythonw.exe -c __import__('idlelib.run').run.main(True) <num>") ever exit on either 2.7.2 or 3.2.1rc1.
msg150044 - (view) Author: Roger Serwy (roger.serwy) * (Python committer) Date: 2011-12-21 21:10
This issue should be closed since issue12540 fixes it.

I verified that the bug exists with 3.1.4 on Vista. It does not exist with 3.2.2 on Vista.
History
Date User Action Args
2022-04-11 14:56:58adminsetgithub: 52340
2011-12-22 06:18:22ned.deilysetstatus: open -> closed
resolution: duplicate
superseder: "Restart Shell" command leaves pythonw.exe processes running
stage: needs patch -> resolved
2011-12-21 21:10:27roger.serwysetnosy: + roger.serwy
messages: + msg150044
2011-06-22 05:09:11Simonsetnosy: + Simon
messages: + msg138814
2010-04-11 09:16:37skrahsetnosy: + skrah
messages: + msg102818
2010-03-09 17:47:24terry.reedysetnosy: + terry.reedy
messages: + msg100735
2010-03-08 23:53:30brian.curtinsetnosy: + brian.curtin
priority: normal
components: + Windows
type: behavior
stage: needs patch
2010-03-08 23:21:30mensanatorcreate