On Tue, Feb 16, 2016 at 12:42 AM, Sergey Busel <sbu...@gmail.com> wrote:
> After trying it couple times, I was able to reproduce the crash. I think > it was due to the way tabs were being closed. A dirty tab would prompt the > user to save the changes and close the tab right away before moving on to > the next tab. I think it crashed because the user was closing the window > via a menu item and wx wanted to put the focus back into the last control > that had it, which was already closed and cleaned up by the AuiNotebook. I > could not reproduce this issue when closing the window via the X button. > > Anyway, I changed the way tabs are closed. First, all tabs are checked for > being dirty and each dirty tab prompts the user to save the changes. Then, > all tabs are closed, one at a time. I tried the same steps 10 times and > could not reproduce the crash. > > Please let me know if you are still able to reproduce the crash. > Was that the correct patch? I still see what appears to be the same crash :-( Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x9ae66332 __kill + 10 1 libsystem_kernel.dylib 0x9ae65932 kill$UNIX2003 + 32 2 libsystem_c.dylib 0x955cf75e raise + 26 3 libwx_base_carbonud-2.8.0.dylib 0x02477a92 wxTrap() + 18 4 libwx_macud_core-2.8.0.dylib 0x01db2ceb wxGUIAppTraitsBase::ShowAssertDialog(wxString const&) + 251 5 libwx_base_carbonud-2.8.0.dylib 0x02477d41 _ZL16ShowAssertDialogPKwiS0_S0_S0_P11wxAppTraits + 545 6 libwx_base_carbonud-2.8.0.dylib 0x024780bd wxAppConsole::OnAssertFailure(wchar_t const*, int, wchar_t const*, wchar_t const*, wchar_t const*) + 99 7 libwx_base_carbonud-2.8.0.dylib 0x02477f05 wxOnAssert(wchar_t const*, int, char const*, wchar_t const*, wchar_t const*) + 309 8 libwx_macud_core-2.8.0.dylib 0x01dd1c4d wxControlContainer::SetLastFocus(wxWindow*) + 147 9 libwx_macud_core-2.8.0.dylib 0x01eda8c0 wxPanel::OnChildFocus(wxChildFocusEvent&) + 50 10 libwx_base_carbonud-2.8.0.dylib 0x02477984 wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) const + 102 11 libwx_base_carbonud-2.8.0.dylib 0x02560023 wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) + 391 12 libwx_base_carbonud-2.8.0.dylib 0x025624ef wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) + 221 13 libwx_base_carbonud-2.8.0.dylib 0x02561716 wxEvtHandler::ProcessEvent(wxEvent&) + 388 14 libwx_base_carbonud-2.8.0.dylib 0x02560bc8 wxEvtHandler::ProcessPendingEvents() + 302 15 libwx_base_carbonud-2.8.0.dylib 0x024786d8 wxAppConsole::ProcessPendingEvents() + 232 16 libwx_base_carbonud-2.8.0.dylib 0x02555ea3 wxMacProcessNotifierAndPendingEvents + 35 17 libwx_macud_core-2.8.0.dylib 0x01c9a2c1 wxApp::MacHandleOneEvent(void*) + 97 18 libwx_macud_core-2.8.0.dylib 0x01c9a3ce wxApp::MacDoOneEvent() + 246 19 libwx_macud_core-2.8.0.dylib 0x01ccb7fd wxEventLoop::Dispatch() + 57 20 libwx_macud_core-2.8.0.dylib 0x01dff6c1 wxEventLoopManual::Run() + 421 21 libwx_macud_core-2.8.0.dylib 0x01db35b4 wxAppBase::MainLoop() + 98 22 libwx_macud_core-2.8.0.dylib 0x01db2a6a wxAppBase::OnRun() + 52 23 libwx_base_carbonud-2.8.0.dylib 0x024d8782 wxEntry(int&, wchar_t**) + 258 24 libwx_base_carbonud-2.8.0.dylib 0x024d896d wxEntry(int&, char**) + 77 25 org.postgresql.pgadmin3 0x00058264 main + 36 (pgAdmin3.cpp:126) 26 org.postgresql.pgadmin3 0x00036615 start + 53 > > Thanks. > > On Sun, Feb 14, 2016 at 11:55 PM, Neel Patel <neel.pa...@enterprisedb.com> > wrote: > >> 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 <dp...@pgadmin.org> wrote: >> >>> >>> >>> On Thu, Feb 11, 2016 at 2:22 PM, Sergey Busel <sbu...@gmail.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 <dp...@pgadmin.org> wrote: >>>> >>>>> Hi >>>>> >>>>> On Wed, Feb 10, 2016 at 12:14 AM, Sergey Busel <sbu...@gmail.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 <dp...@pgadmin.org> wrote: >>>>>> >>>>>>> On Wed, Feb 3, 2016 at 3:07 AM, Sergey Busel <sbu...@gmail.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 >>> >> >> > -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company