Re: [pgadmin-hackers] 1.14 beta 3 crashes in Query Browser - Mailing list pgadmin-support

From Guillaume Lelarge
Subject Re: [pgadmin-hackers] 1.14 beta 3 crashes in Query Browser
Date
Msg-id 1314131004.2108.5.camel@localhost.localdomain
Whole thread Raw
In response to Re: [pgadmin-hackers] 1.14 beta 3 crashes in Query Browser  (Dave Page <dpage@pgadmin.org>)
List pgadmin-support
On Tue, 2011-08-23 at 16:06 +0100, Dave Page wrote:
> On Tue, Aug 23, 2011 at 3:16 PM, Guillaume Lelarge
> <guillaume@lelarge.info> wrote:
> > On Tue, 2011-08-23 at 15:08 +0100, Dave Page wrote:
> >> On Tue, Aug 23, 2011 at 2:56 PM, Guillaume Lelarge
> >> <guillaume@lelarge.info> wrote:
> >> > On Mon, 2011-08-22 at 21:59 +0200, Guillaume Lelarge wrote:
> >> >> On Sat, 2011-08-20 at 22:51 +0200, Guillaume Lelarge wrote:
> >> >> > On Sat, 2011-08-20 at 17:45 +0200, Guillaume Lelarge wrote:
> >> >> > > On Sat, 2011-08-20 at 11:07 -0400, Colin Beckingham wrote:
> >> >> > > > Opensuse 11.4, kernel 3.0.
> >> >> > > >
> >> >> > > > I note that if I begin query construction in the graphical query
> >> >> > > > designer and click into the text panel to make adjustments, adding for
> >> >> > > > example a "distinct" clause and then attempting to go back to the
> >> >> > > > graphical panel causes a crash.
> >> >> > > >
> >> >> > > > Of course trying to use distinct in this context is not reasonable,
> >> >> > > > however the programme does not recover gracefully or prevent the user
> >> >> > > > from making certain edits.
> >> >> > > >
> >> >> > > > The crash is quite severe. I have no access to the screen at all and the
> >> >> > > > only way out is to CTRL+ALT+DEL, and wait for the timer to expire and
> >> >> > > > log me out, and then log back in.
> >> >> > >
> >> >> > > I was able to reproduce your issue. I have no idea what's going on, but
> >> >> > > I'm investigating this.
> >> >> > >
> >> >> > > Thank you for reporting it.
> >> >> > >
> >> >> >
> >> >> > So, bug doesn't happen on Windows. I didn't check on Mac OS X, but it's
> >> >> > present on Linux. The culprit commit is the one that changed the
> >> >> > wxNotebook into a wxAUINotebook. Not sure yet how we'll fix this.
> >> >> >
> >> >>
> >> >> Seems we have a real issue here. Bug is you can't fire wxMessageBox or
> >> >> alike when you're in the function fired by a
> >> >> EVT_AUINOTEBOOK_PAGE_CHANGED. Only on Linux. Why? I have no idea. But
> >> >> even the wxWidgets auidemo sample has the issue (I have the patch for
> >> >> those who want to try).
> >> >>
> >> >> So, my next idea was to remove the wxMessageBox from the function that
> >> >> calls it, but I don't find a way to do that.
> >> >>
> >> >> I'm afraid we'll have to replace the wxAuiNotebook with a wxNotebook.
> >> >>
> >> >> Any objection? Dave especially, since it was your patch?
> >> >> (http://git.postgresql.org/gitweb/?p=pgadmin3.git;a=commit;h=41545a4aa159a7a579b7c97ba73a605db34453b7)
> >> >>
> >> >
> >> > Seems I have a better fix (not mine, see
> >> > http://forums.wxwidgets.org/viewtopic.php?f=23&t=31090 for details):
> >> >
> >> > diff --git a/pgadmin/frm/frmQuery.cpp b/pgadmin/frm/frmQuery.cpp
> >> > index 40b01dd..f195307 100644
> >> > --- a/pgadmin/frm/frmQuery.cpp
> >> > +++ b/pgadmin/frm/frmQuery.cpp
> >> > @@ -2101,6 +2101,10 @@ bool frmQuery::updateFromGqb(bool executing)
> >> >                else
> >> >                        fn = _("The generated SQL query has changed.\nDo
> >> > you want to update it?");
> >> >
> >> > +        wxWindow* win = wxWindow::GetCapture();
> >> > +        if (win)
> >> > +            win->ReleaseMouse();
> >> > +
> >> >                wxMessageDialog msg(this, fn, _("Query"), wxYES_NO |
> >> > wxICON_EXCLAMATION);
> >> >                if(msg.ShowModal() == wxID_YES && changed)
> >> >                {
> >> >
> >> > Works on Linux. Will try on Windows tonight, before applying.
> >>
> >> OK, cool. Believe it or not, I was just running a clean build to start
> >> testing this myself when your email arrived :-)
> >>
> >
> > :)
> >
> > If you understand the fix, and can explain it to me, that would be
> > great. Right now, I don't get it (and don't have much time to get into
> > this).
>
> Not entirely sure, but I think the tab control is capturing the mouse
> focus for the duration of the event. What the fix does is to get
> whatever wxWindow currently has capture, and tells it to release the
> mouse, thus allowing the message box to receive the input.
>

Yeah, that's also the explanation of one of the moderator of the
wxWidgets forum.

I tried the patch on Windows and it worked flawlessly.

So, I applied it. Quite glad it's fixed :)


--
Guillaume
  http://blog.guillaume.lelarge.info
  http://www.dalibo.com


pgadmin-support by date:

Previous
From: Dave Page
Date:
Subject: Re: [pgadmin-hackers] 1.14 beta 3 crashes in Query Browser
Next
From: Guillaume Lelarge
Date:
Subject: Re: 1.14 beta 3 crashes in Query Browser