<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 2/23/2013 4:50 AM, Stefan
      Champailler wrote:<br>
    </div>
    <blockquote cite="mid:512890CA.6080202@skynet.be" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      Hello,<br>
      <br>
      <br>
      I have never seen that kind of issue but what I've learned the
      hard<br>
      way is that memory leaks can cause very erratic behaviours.<br>
      So, as a first step, if you didn't already do so, you should make<br>
      sure there are no ownership issues in your code. If you have a
      large<br>
      code base, I found it was easier to simply remove the code part<br>
      by part until the problem disappear (and so had I a better idea of<br>
      the location of the issue).<br>
      <br>
      I also found very instructing to reduce the code to a small piece<br>
      to reproduce the bug. Doing so help to learn quite a bit about
      PySide<br>
      (because when you reduce code to a minimum you get to know how to<br>
      express some ideas in a much better way).<br>
      <br>
      Either way, I bet you have some work ahead...<br>
      <br>
      stefan<br>
      <br>
      <br>
      <div class="moz-cite-prefix">On 02/21/2013 10:22 PM, Joel B.
        Mohler wrote:<br>
      </div>
      <blockquote cite="mid:51269022.3090607@gamry.com" type="cite">On
        2/21/2013 12:52 PM, Zak wrote: <br>
        <blockquote type="cite">The following idea helped me with a
          different glitch that was probably unrelated to yours, but who
          knows, it might help you. Try each of the following: <br>
          <br>
          # Signals and slots example <br>
          # From qt_webview_play.py <br>
          <br>
          @Slot(bool)  # bool is PySide.QtCore.bool <br>
          def my_slot(input_bool): <br>
              pass <br>
          <br>
          # The following three lines should be equivalent, but they <br>
          # are not always equivalent in practice: <br>
          <br>
          q_widget.connect(q_widget, SIGNAL("toggled(bool)"), my_slot) <br>
          q_widget.toggled.connect(my_slot) <br>
          q_widget.toggled[bool].connect(my_slot) <br>
          <br>
          I don't know why they are different, but sometimes they are.
          My bug arose when I tried to manually disconnect and reconnect
          signals, specifically the loadFinished(bool) signal on a
          QWebView widget. <br>
          <br>
          In my own experience, it is best to always use the first
          method, with SIGNAL("toggled(bool)"). I notice that the
          StackOverflow question you linked uses the third method. Try
          switching it up and see if anything helps. <br>
        </blockquote>
        <br>
        Thanks for your comments.  I think they were helpful, but the
        bug reproduction process here got pretty weird as I fiddle with
        this some more.  I commonly use method 2 to connect signals and
        slots (I wasn't aware of method 3, but I think I see it's
        necessity at times).  I changed the one connection to use method
        1 and sure enough I think I don't get that failure any more. <br>
        <br>
        (and now just a personal tale of woe this has led me down ...)
        However, I now see that regardless of signal/slot issues, that
        if I sit here and open,close,reopen and repeat continuously I'm
        sure to get signal/slot failures and missing attributes and even
        segfault crashes sometime in the first 30 open/close iterations.
        Unfortunately, this widget that I'm closing and reopening has
        nested sub-widgets probably 4 layers deep and many many
        nuances.  It will take a while to decode this, but it certainly
        looks like memory corruption.  I'm not going to hazard a guess
        about where to point a finger at this point aside to say that
        pure python pyside shouldn't segfault. <br>
      </blockquote>
    </blockquote>
    <br>
    For the public record in this thread and to indeed confirm Stefan's
    very accurate statements, I report that the signal/slot issues
    entirely resolved on their own once I understood the bug which I
    described at <a class="moz-txt-link-freetext" href="https://bugreports.qt-project.org/browse/PYSIDE-144">https://bugreports.qt-project.org/browse/PYSIDE-144</a> .  
    The workaround there was to explicitly create my own QMdiSubWindow
    explicitly and set my widget with QMdiSubWindow.setWidget.  I find
    this to be an entirely acceptable state of the code for my usage. 
    The moral of the story is that incorrect ownership (somewhere) can
    indeed cause seemingly arbitrary faults later in the PySide-based
    application.<br>
    <br>
    Stefan's approach of eliminating code piece by piece is virtually
    the only way that I've been able to come to grips with this and
    prior PySide experiences of this nature.  This is grotesque, but
    quick python debug cycles and revision control to know all your
    slicing & dicing changes make it quite doable.<br>
    <br>
    Joel<br>
    <br>
  </body>
</html>