[PyQt] pykde crash on debian etch / import kparts or khtml

2007-09-28 Thread jbd

Hello,

I've got a small problem with an application i'm trying to port from 
sarge to etch. Here is the minimal application which mimics the problem.
It's a simple QDialog with a QPushButton which triggers a KDirLister and 
print the result on stdout. It works well as long as i don't import 
khtml or kparts.


I'm running a clean debian etch system :
kdelibs : 4:3.5.5a.dfsg.1-8
python-kde3 : 3.15.2+20060422-3
python-qt3 : 3.16-1.2

The same code sample runs well on debian sarge but crash on debian etch 
and ubuntu feisty. It seems that's i'm doing something wrong here.


Thank you for your help !

Here is the code sample :

==
# -*- coding: utf-8 -*-

import sys

from qt import QDialog, QPushButton, SIGNAL
from kdecore import KCmdLineArgs, KApplication, KURL
from kio import KDirLister

# Remove one or both of the comment to crash the application
#from khtml import *
#from kparts import * #

class TestCrash(QDialog):
def __init__(self, parent=None):
QDialog.__init__(self, parent)
button = QPushButton(Run kdirlister, self)
self._dirLister = KDirLister()
self.connect(button, SIGNAL(clicked()), self._openHome)
self.connect(self._dirLister, SIGNAL(newItems(const 
KFileItemList)),

 self._slotNewItems)

def _openHome(self):
   self._dirLister.openURL(KURL(/))


def _slotNewItems(self, items):
print =*50
for item in items:
print item.url().prettyURL()
print =*50


def main():
try:
KCmdLineArgs.init(sys.argv, crash test, crash test,crash 
test)

app = KApplication(True, True)

widget = TestCrash()
widget.show()
app.setMainWidget(widget)
res = app.exec_loop()

print Return value, res

except Exception, what:
print Exception catched:, str(what)
sys.exit(-1)


if __name__==__main__:
main()

==


___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] pykde crash on debian etch / import kparts or khtml

2007-09-28 Thread Jim Bublitz
On Friday 28 September 2007 07:56, jbd wrote:

 I've got a small problem with an application i'm trying to port from 
 sarge to etch. Here is the minimal application which mimics the problem.
 It's a simple QDialog with a QPushButton which triggers a KDirLister and 
 print the result on stdout. It works well as long as i don't import 
 khtml or kparts.

 I'm running a clean debian etch system :
 kdelibs : 4:3.5.5a.dfsg.1-8
 python-kde3 : 3.15.2+20060422-3
 python-qt3 : 3.16-1.2

 The same code sample runs well on debian sarge but crash on debian etch 
 and ubuntu feisty. It seems that's i'm doing something wrong here.

It crashes here too (not on Debian). It appears to be related to the 
'newItems' signal - that's where the backtrace indicates the crash is 
originating. I have no idea what the cause is, but I think you can achieve 
the same thing with the two changes below, and with those changes it works 
here.

From looking at the comments in the KDE h files, it seems like there might be 
some kind of timing issues related to the signals, but I have no idea why 
importing other modules would trigger the problem.

Jim



 # -*- coding: utf-8 -*-

 import sys

 from qt import QDialog, QPushButton, SIGNAL
 from kdecore import KCmdLineArgs, KApplication, KURL
 from kio import KDirLister

 # Remove one or both of the comment to crash the application
 #from khtml import *
 #from kparts import * #

 class TestCrash(QDialog):
      def __init__(self, parent=None):
          QDialog.__init__(self, parent)
          button = QPushButton(Run kdirlister, self)
          self._dirLister = KDirLister()
          self.connect(button, SIGNAL(clicked()), self._openHome)
#          self.connect(self._dirLister, SIGNAL(newItems(const
# KFileItemList)),


self.connect(self._dirLister, SIGNAL(completed ()), 
self._slotNewItems)



                       self._slotNewItems)

      def _openHome(self):
         self._dirLister.openURL(KURL(/))


      def _slotNewItems(self, items):
          print =*50
 #         for item in items:


for item in self._dirLister.items ():


              print item.url().prettyURL()
          print =*50


 def main():
      try:
          KCmdLineArgs.init(sys.argv, crash test, crash test,crash
 test)
          app = KApplication(True, True)

          widget = TestCrash()
          widget.show()
          app.setMainWidget(widget)
          res = app.exec_loop()

          print Return value, res

      except Exception, what:
          print Exception catched:, str(what)
          sys.exit(-1)


 if __name__==__main__:
      main()

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt