Message78613
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. |
|
Date |
User |
Action |
Args |
2008-12-31 15:29:58 | gpolo | set | recipients:
+ gpolo |
2008-12-31 15:29:58 | gpolo | set | messageid: <1230737398.34.0.470687906349.issue4792@psf.upfronthosting.co.za> |
2008-12-31 15:29:57 | gpolo | link | issue4792 messages |
2008-12-31 15:29:56 | gpolo | create | |
|