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.

Author gpolo
Recipients gpolo
Date 2008-12-31.15:29:55
SpamBayes Score 1.1057066e-09
Marked as misclassified No
Message-id <1230737398.34.0.470687906349.issue4792@psf.upfronthosting.co.za>
In-reply-to
Content
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.
History
Date User Action Args
2008-12-31 15:29:58gpolosetrecipients: + gpolo
2008-12-31 15:29:58gpolosetmessageid: <1230737398.34.0.470687906349.issue4792@psf.upfronthosting.co.za>
2008-12-31 15:29:57gpololinkissue4792 messages
2008-12-31 15:29:56gpolocreate