Re: pgAdmin III: Muliple SQL tabs

From: Neel Patel <neel(dot)patel(at)enterprisedb(dot)com>
To: Dave Page <dpage(at)pgadmin(dot)org>
Cc: Sergey Busel <sbusel(at)gmail(dot)com>, pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>, Ashesh Vashi <ashesh(dot)vashi(at)enterprisedb(dot)com>, Sanket Mehta <sanket(dot)mehta(at)enterprisedb(dot)com>, Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
Subject: Re: pgAdmin III: Muliple SQL tabs
Date: 2016-02-15 05:55:31
Message-ID: CACCA4P32pe2OBgAZS0bVREm6q-Z-mm38KGNK27LB=BD-026hTQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi ,

I just applied the patch in Linux environment and found the crash. Below
are the steps to reproduce.
We may need to perform below steps multiple time to reproduce the crash.

- Open the "Query Window".
- Go to "File" and click on "New SQL tab". Open the 3-4 SQL tabs and
execute any query in one SQL tab.
- Go to "File" menu and click on "Exit".
- After clicking on "Exit" button only Query window should close but
pgAdmin3 is getting crashed.

Below are the traces for reference.

#0 0x00007ffff6c4fbf3 in wxControlContainer::SetLastFocus(wxWindow*) ()
from /usr/local/lib/libwx_gtk2u_core-2.8.so.0
#1 0x00007ffff6ccb684 in wxPanel::OnChildFocus(wxChildFocusEvent&) () from
/usr/local/lib/libwx_gtk2u_core-2.8.so.0
#2 0x00007ffff633d9d6 in
wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&,
wxEvtHandler*, wxEvent&) ()
from /usr/local/lib/libwx_baseu-2.8.so.0
#3 0x00007ffff633da7b in wxEventHashTable::HandleEvent(wxEvent&,
wxEvtHandler*) () from /usr/local/lib/libwx_baseu-2.8.so.0
#4 0x00007ffff633dde7 in wxEvtHandler::ProcessEvent(wxEvent&) () from
/usr/local/lib/libwx_baseu-2.8.so.0
#5 0x00007ffff633d938 in wxEvtHandler::ProcessPendingEvents() () from
/usr/local/lib/libwx_baseu-2.8.so.0
#6 0x00007ffff62bb281 in wxAppConsole::ProcessPendingEvents() () from
/usr/local/lib/libwx_baseu-2.8.so.0
#7 0x00007ffff6c4504e in wxAppBase::ProcessIdle() () from
/usr/local/lib/libwx_gtk2u_core-2.8.so.0
#8 0x00007ffff6bbfe31 in wxapp_idle_callback () from
/usr/local/lib/libwx_gtk2u_core-2.8.so.0
#9 0x00007ffff366ace5 in g_main_context_dispatch () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007ffff366b048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007ffff366b30a in g_main_loop_run () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x00007ffff4106eb2 in gtk_dialog_run () from
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#13 0x00007ffff6c31aea in wxMessageDialog::ShowModal() () from
/usr/local/lib/libwx_gtk2u_core-2.8.so.0
#14 0x00000000006b79bf in frmQuery::CheckChanged(bool) ()
#15 0x00000000006a967e in frmQuery::SqlBookClose(bool) ()
#16 0x00000000006b7d1e in frmQuery::OnClose(wxCloseEvent&) ()
#17 0x00007ffff633d9d6 in
wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&,
wxEvtHandler*, wxEvent&) ()
from /usr/local/lib/libwx_baseu-2.8.so.0
#18 0x00007ffff633da7b in wxEventHashTable::HandleEvent(wxEvent&,
wxEvtHandler*) () from /usr/local/lib/libwx_baseu-2.8.so.0
#19 0x00007ffff633dde7 in wxEvtHandler::ProcessEvent(wxEvent&) () from
/usr/local/lib/libwx_baseu-2.8.so.0
#20 0x00007ffff633dd70 in wxEvtHandler::ProcessEvent(wxEvent&) () from
/usr/local/lib/libwx_baseu-2.8.so.0
#21 0x00007ffff6cac39c in wxWindowBase::Close(bool) () from
/usr/local/lib/libwx_gtk2u_core-2.8.so.0
#22 0x00007ffff633d9d6 in
wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&,
wxEvtHandler*, wxEvent&) ()
from /usr/local/lib/libwx_baseu-2.8.so.0
#23 0x00007ffff633da7b in wxEventHashTable::HandleEvent(wxEvent&,
wxEvtHandler*) () from /usr/local/lib/libwx_baseu-2.8.so.0
#24 0x00007ffff633dde7 in wxEvtHandler::ProcessEvent(wxEvent&) () from
/usr/local/lib/libwx_baseu-2.8.so.0
#25 0x00007ffff633dd70 in wxEvtHandler::ProcessEvent(wxEvent&) () from
/usr/local/lib/libwx_baseu-2.8.so.0
#26 0x00007ffff6c2f7b5 in gtk_menu_clicked_callback () from
/usr/local/lib/libwx_gtk2u_core-2.8.so.0
#27 0x00007ffff3b5b3b8 in g_closure_invoke () from
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0

We will check for Mac OS X environment and keep you updated.

Thanks,
Neel Patel

On Fri, Feb 12, 2016 at 8:51 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:

>
>
> On Thu, Feb 11, 2016 at 2:22 PM, Sergey Busel <sbusel(at)gmail(dot)com> wrote:
>
>> Added the query name to history entries. Please note that history entries
>> are not modified if user saves [Query 1] to file [foo.sql]. I don't think
>> that would be practical.
>>
>
> Thanks. So I was just about to commit this, when it crashed on me. It
> seems to happen only if there are at least 2 non-dirty tabs open (easy to
> reproduce - open the query tool, add a second tab, then close the window).
> I've fiddled around for a couple of hours, but not been able to get to the
> bottom of it despite trying a few tricks that sometimes help avoid weird
> issues with wxWidgets. There's a stack trace below.
>
> Ashesh, Neel, Sanket, Akshay - can any of you take a quick look on an OSX
> system? I've attached a slightly cleaned up patch, removing some commented
> code and making it a git-diff against master.
>
> Thanks.
>
> Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
> 0 org.postgresql.pgadmin3 0x0036ce4f wxWindowBase::GetParent()
> const + 15 (window.h:590)
> 1 libwx_macud_core-2.8.0.dylib 0x01ea6c0b
> wxControlContainer::SetLastFocus(wxWindow*) + 81
> 2 libwx_macud_core-2.8.0.dylib 0x01faf8c0
> wxPanel::OnChildFocus(wxChildFocusEvent&) + 50
> 3 libwx_base_carbonud-2.8.0.dylib 0x0254b984
> wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&),
> wxEvent&) const + 102
> 4 libwx_base_carbonud-2.8.0.dylib 0x02634023
> wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&,
> wxEvtHandler*, wxEvent&) + 391
> 5 libwx_base_carbonud-2.8.0.dylib 0x026364ef
> wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) + 221
> 6 libwx_base_carbonud-2.8.0.dylib 0x02635716
> wxEvtHandler::ProcessEvent(wxEvent&) + 388
> 7 libwx_base_carbonud-2.8.0.dylib 0x02634bc8
> wxEvtHandler::ProcessPendingEvents() + 302
> 8 libwx_base_carbonud-2.8.0.dylib 0x0254c6d8
> wxAppConsole::ProcessPendingEvents() + 232
> 9 libwx_base_carbonud-2.8.0.dylib 0x02629ea3
> wxMacProcessNotifierAndPendingEvents + 35
> 10 libwx_macud_core-2.8.0.dylib 0x01d6f2c1
> wxApp::MacHandleOneEvent(void*) + 97
> 11 libwx_macud_core-2.8.0.dylib 0x01d6f3ce wxApp::MacDoOneEvent() + 246
> 12 libwx_macud_core-2.8.0.dylib 0x01da07fd wxEventLoop::Dispatch() + 57
> 13 libwx_macud_core-2.8.0.dylib 0x01ed46c1 wxEventLoopManual::Run() +
> 421
> 14 libwx_macud_core-2.8.0.dylib 0x01e885b4 wxAppBase::MainLoop() + 98
> 15 libwx_macud_core-2.8.0.dylib 0x01e87a6a wxAppBase::OnRun() + 52
> 16 libwx_base_carbonud-2.8.0.dylib 0x025ac782 wxEntry(int&, wchar_t**) +
> 258
> 17 libwx_base_carbonud-2.8.0.dylib 0x025ac96d wxEntry(int&, char**) + 77
> 18 org.postgresql.pgadmin3 0x00128354 main + 36 (pgAdmin3.cpp:126)
> 19 org.postgresql.pgadmin3 0x00106705 start + 53
>
>
>>
>>
>> On Wed, Feb 10, 2016 at 8:28 AM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>
>>> Hi
>>>
>>> On Wed, Feb 10, 2016 at 12:14 AM, Sergey Busel <sbusel(at)gmail(dot)com> wrote:
>>>
>>>> Dave,
>>>>
>>>> Here is a patch that does display the query tab name in the title bar
>>>> of the output pane. It seems to work with loading and saving the
>>>> perspective, too. The trick is to restore the original text on the output
>>>> pane before loading and saving the perspective, and put the query name back
>>>> in there right after.
>>>>
>>>> Attached is the full patch, not the diff from the previous patch I
>>>> sent. Let me know if you have other suggestions.
>>>>
>>>
>>> That seems to solve the problem nicely :-) - Thanks!
>>>
>>> It does lead to one other issue that I can see - the History tab on the
>>> results pane now shows the history for all query tabs, which seems a little
>>> odd given that the other 3 tabs on the results panel are query tab
>>> specific. Unless there are better ideas, I think the best way to fix this
>>> is to include the current tab name in the history, e.g.
>>>
>>> -- Executing query [Query 1]:
>>> SELECT version();
>>> Total query runtime: 16 msec
>>> 1 row retrieved.
>>>
>>> -- Executing query [Query 2]:
>>> SELECT * FROM pg_class
>>> Total query runtime: 53 msec
>>> 311 rows retrieved.
>>>
>>> -- Executing query [foo.sql]:
>>> SELECT * from pg_attribute
>>> Total query runtime: 245 msec
>>> 2399 rows retrieved.
>>>
>>> What do you think?
>>>
>>>
>>>> Regards.
>>>>
>>>> On Fri, Feb 5, 2016 at 7:46 AM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>>>
>>>>> On Wed, Feb 3, 2016 at 3:07 AM, Sergey Busel <sbusel(at)gmail(dot)com> wrote:
>>>>> > - Removed unused/commented code.
>>>>> > - Tab names now reflect the file name, if such is associated with a
>>>>> tab.
>>>>> > - Removed the "Close Tab" menu item. Added X button to the active
>>>>> tab.
>>>>> > - To tell the user which tab results are related to and to avoid
>>>>> messing
>>>>> > with perspective, the name of the related tab is now displayed as
>>>>> "Data
>>>>> > Output [Query 1]" in the output pane. If the tab is named after a
>>>>> file, file
>>>>> > name will display in the square brackets. If the file name is longer
>>>>> then 15
>>>>> > chars, it will be truncated to 15 chars.
>>>>> >
>>>>> > Let me know any other suggestions you may have.
>>>>>
>>>>> Thanks - this seems to be working nicely for me. It would be good if
>>>>> the query name could be displayed in the title bar of the output pane
>>>>> rather than on the results tab (because it really does apply to all
>>>>> tabs), but I don't see any sensible way to do that given the weird way
>>>>> that wxAUI stores it's perspectives.
>>>>>
>>>>> Ashesh, any ideas?
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Neel Patel 2016-02-15 06:35:17 Re: [pgAdmin4] [Patch]: Resource Group Module
Previous Message Dave Page 2016-02-12 16:47:20 pgAdmin 4 commit: Don't ask before connecting to servers or databases,