New submission from Guilherme Polo <ggp...@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 <rep...@bugs.python.org> <http://bugs.python.org/issue4792> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com