The latest snapshots of eric are crashing for me when I try and use eric to debug any script. I have been looking into it today and have found what the culprit appears to be. I am going to provide a snippet of code to explain what I am seeing and see if there is anyone has any thoughts on what is going on.

To begin with I am using the following versions:

Python  2.3.3
Qt      3.2.2
PyQt    3.8.1
OS      Windows XP

the particular crash I am seeing in Eric is I can launch eric, open a python script, then from the debug menu, select Debug script. The dialog opens to prompt for working directory etc., when I select ok, my python.exe that is running eric crashes on windows and eric disappears... With some probing and debugging, I have closed it down to what appears to be a garbage/memory collection issue in python, specifically in the latest eric snapshot in the code for the getData method of the StartDialog (in the eric source base it is in Debugger\StartDialog.py

the current getData looks like:

    def getData(self):
        return (self.cmdlineCombo.currentText().replace(os.linesep, ""),
            self.workdirCombo.currentText().replace(os.linesep, ""),
            self.environmentCombo.currentText().replace(os.linesep, ""),
            self.exceptionCheckBox.isChecked())

where self is the StartDialog which is a QDialog instance.
cmdlineCombo is a QComboBox instance
workdirCombo is a QComboBox instance
environmentCombo is a QComboBox instance
exceptionsCheckBox is a QCheckButton

Anyway, when accessing any of the textdata from this returned tuple, the application crashes. In inspecting the data with the limited debug information I have, the basic problem is data seems to have been "trashed"/delete etc.

Now if I change the above code to read as follows:
    def getData(self):
        cmdLine = self.cmdlineCombo.currentText()
        cmdLine = cmdLine.replace(os.linesep, "")
        workdir = self.workdirCombo.currentText()
        workdir.replace(os.linesep, "")
        environ = self.environmentCombo.currentText()
        environ.replace(os.linesep, "")
        return (cmdLine,
                workdir,
                environ,
                self.exceptionCheckBox.isChecked())


Then eric works just fine and I have no crashes. It seems I have to make the local python reference to the QString from currentText before trying to replace and return the reference to it. Does this make sense? I know we have somewhat old versions of qt/pyqt so could this have been something changed in the latest versions of qt/pyqt?


Thanks in advance for any insight,


-- ************************************ Andrew Bushnell Lead Development Engineer Fluent Inc. 10 Cavendish Court Centerra Resource Park Lebanon, NH 03766 [EMAIL PROTECTED] Phone: 603-643-2600, ext. 757 Fax: 603-643-1721 www.fluent.com ************************************

_______________________________________________
PyKDE mailing list    PyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde

Reply via email to