[New-bugs-announce] [issue4792] PythonCmd in Modules/_tkinter.c should use the given "interp" parameter

Guilherme Polo report at bugs.python.org
Wed Dec 31 16:29:58 CET 2008

New submission from Guilherme Polo <ggpolo at gmail.com>:

Right now PythonCmd is using the Tcl interpreter stored in self->interp,
but this is unsafe and since it is a Tcl_CmdProc it already receives the
Tcl interpreter as a parameter. Using the interpreter in self->interp is
unsafe because Python might deallocate this TkappObject and then
PythonCmd could be invoked later, and using the interpreter given to the
Tcl_CmdProc is guaranteed to be safe by Tcl.

To reproduce this I needed a debug build and also needed to run the
example below in the interpreter:

>>> import tkFileDialog
>>> tkFileDialog.askdirectory() # here I both windows, then:
>>> Segmentation fault

There are other ways to reproduce this but I can't remember them
offhand, I know there are other ways because I've hit this same problem
in another python <-> tcl bridge by doing something else.

The patch could be expanded to remove the use of "self" in
PythonCmd_Clientdata, but given another wish I have -- to move to
Tcl_CreateObjCommand -- self would be needed again.

components: Tkinter
files: use_given_interp.diff
keywords: patch
messages: 78613
nosy: gpolo
severity: normal
status: open
title: PythonCmd in Modules/_tkinter.c should use the given "interp" parameter
versions: Python 2.6, Python 2.7, Python 3.0, Python 3.1
Added file: http://bugs.python.org/file12505/use_given_interp.diff

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list