Thread: Re: pgadmin go down when I want to start debug pl pgsql function

Re: pgadmin go down when I want to start debug pl pgsql function

From
"Dave Page"
Date:

> ------- Original Message -------
> From: Pavel Stěhule <pstehule@ilikethis.cz>
> To: pgAdmin Support <pgadmin-support@postgresql.org>
> Sent: 13/08/07, 19:36:26
> Subject: [pgadmin-support] pgadmin go down when I want to start debug plpgsql function
> 
> Hello
> 
> this functionality works now?
> 

Yes.

For anything more useful I'm afraid I need more clues than 'pgadmin go down' - eg, server version? global or direct
debugging?function definition? what happens exactly and when in the debugging process?
 

Regards, Dave


Re: pgadmin go down when I want to start debug pl pgsql function

From
Pavel Stěhule
Date:
Dave Page píše v Po 13. 08. 2007 v 20:39 +0100:
>
> > ------- Original Message -------
> > From: Pavel Stěhule <pstehule@ilikethis.cz>
> > To: pgAdmin Support <pgadmin-support@postgresql.org>
> > Sent: 13/08/07, 19:36:26
> > Subject: [pgadmin-support] pgadmin go down when I want to start debug plpgsql function
> >
> > Hello
> >
> > this functionality works now?
> >
>
> Yes.
>
> For anything more useful I'm afraid I need more clues than 'pgadmin go down' - eg, server version? global or direct
debugging?function definition? what happens exactly and when in the debugging process? 
>
> Regards, Dave

I am sorry Dave. It was fast query, if has any sense test it.

pgadmin3-src-20070814.tar.gz
pgadmin3-1.8.0-beta3

PostgreSQL directory:                   /usr/local/pgsql
PostgreSQL pg_config binary:            /usr/local/pgsql/bin/pg_config
PostgreSQL version:                     PostgreSQL 8.3devel
PostgreSQL SSL support:                 Missing

wxWidgets directory:                    /usr/local
wxWidgets wx-config binary:             /usr/local/bin/wx-config
wxWidgets version:                      wxWidgets 2.8.4

libxml2 directory:                      /usr
libxml2 xml2-config binary:             /usr/bin/xml2-config
libxml2 version:                        libxml2 2.6.29

libxslt directory:                      /usr
libxslt xslt-config binary:             /usr/bin/xslt-config
libxslt version:                        libxslt 1.1.21

Building a debug version of pgAdmin:    Yes
Statically linking pgAdmin:             No
Building a Mac OS X appbundle:          No

platform fc7

===========================================================================
on right click over function item
./src/gtk/menu.cpp(984): assert "IsCheckable()" failed in IsChecked():
can't get state of uncheckable item!
ASSERT INFO:
./src/gtk/menu.cpp(984): assert "IsCheckable()" failed in IsChecked():
can't get state of uncheckable item!

BACKTRACE:
[1] wxMenuItem::IsChecked() cons)
[2] menuFactoryList::AppendEnabledMenus(wxMenuBar*,
wxMenu*) /home/pavel/src/pgadmin3-1.8.0-beta3/pgadmin/./utils/factory.cpp:320
[3] frmMain::doPopup(wxWindow*, wxPoint,
pgObject*) /home/pavel/src/pgadmin3-1.8.0-beta3/pgadmin/./frm/events.cpp:423
[4]
frmMain::OnSelRightClick(wxTreeEvent&) /home/pavel/src/pgadmin3-1.8.0-beta3/pgadmin/./frm/events.cpp:506
[5] wxAppConsole::HandleEvent(wxEvtHandler*, void
(wxEvtHandler::*)(wxEvent&), wxEvent&) cons)
[6] wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&,
wxEvtHandler*, wxEvent&)
[7] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)
[8] wxEvtHandler::ProcessEvent(wxEvent&)
[9] wxEvtHandler::ProcessEvent(wxEvent&)
[10] wxWindowBase::TryParent(wxEvent&)
[11] wxEvtHandler::ProcessEvent(wxEvent&)
[12] wxEvtHandler::ProcessEvent(wxEvent&)
[13] wxScrollHelperEvtHandler::ProcessEvent(wxEvent&)
[14] wxGenericTreeCtrl::OnMouse(wxMouseEvent&)
[15] wxAppConsole::HandleEvent(wxEvtHandler*, void
(wxEvtHandler::*)(wxEvent&), wxEvent&) cons)
[16] wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&,
wxEvtHandler*, wxEvent&)
[17] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)
[18] wxEvtHandler::ProcessEvent(wxEvent&)
[19] wxEvtHandler::ProcessEvent(wxEvent&)
[20] wxScrollHelperEvtHandler::ProcessEvent(wxEvent&)
[21] wxWindow::GTKProcessEvent(wxEvent&) cons)
[22] g_closure_invoke()
[23] g_signal_emit_valist()
[24] g_signal_emit()
[25] gtk_propagate_event()
[26] gtk_main_do_event()
[27] g_main_context_dispatch()
[28] g_main_loop_run()
[29] gtk_main()
[30] wxEventLoop::Run()
[31] wxAppBase::MainLoop()



After recompilation pgAdmin and wxWidget I can debug simple functions
without problems (with one assert). With two parameters function pgadmin
hangs before showing window with procedure params.


(gdb) backtrace
#0  0x0012d402 in __kernel_vsyscall ()
#1  0x00f4d206 in pthread_cond_wait@@GLIBC_2.3.2 ()
from /lib/libpthread.so.0
#2  0x00ab5c0f in wxConditionInternal::Wait (this=0xa6ad7c0)   at ./src/unix/threadpsx.cpp:379
#3  0x00ab5cd7 in wxCondition::Wait (this=0xa6ad78c)   at ./include/wx/thrimpl.cpp:248
#4  0x00ab6c3c in wxSemaphoreInternal::Wait (this=0xa6ad788)   at ./src/unix/threadpsx.cpp:511
#5  0x00ab6d3b in wxSemaphore::Wait (this=0xa6ad65c)   at ./include/wx/thrimpl.cpp:304
#6  0x080d914b in dbgPgThread::Entry (this=0xa6ad648)   at ./debugger/dbgPgThread.cpp:106
#7  0x00ab7dce in wxThreadInternal::PthreadStart (thread=0xa6ad648)   at ./src/unix/threadpsx.cpp:766
#8  0x00ab7f39 in wxPthreadStart (ptr=0xa6ad648)   at ./src/unix/threadpsx.cpp:718
#9  0x00f4944b in start_thread () from /lib/libpthread.so.0
#10 0x0102c80e in clone () from /lib/libc.so.6

CREATE OR REPLACE FUNCTION f3(character varying, boolean) RETURNS boolean AS
' begin return false; end ' LANGUAGE 'plpgsql' VOLATILE COST 100;
ALTER FUNCTION f3(character varying, boolean) OWNER TO postgres;

Regards
Pavel Stehule



Re: pgadmin go down when I want to start debug pl pgsql function

From
Dave Page
Date:

Pavel Stěhule wrote:
> Dave Page píše v Po 13. 08. 2007 v 20:39 +0100:
>>> ------- Original Message -------
>>> From: Pavel Stěhule <pstehule@ilikethis.cz>
>>> To: pgAdmin Support <pgadmin-support@postgresql.org>
>>> Sent: 13/08/07, 19:36:26
>>> Subject: [pgadmin-support] pgadmin go down when I want to start debug plpgsql function
>>>
> platform fc7
>
> ===========================================================================
> on right click over function item
> ./src/gtk/menu.cpp(984): assert "IsCheckable()" failed in IsChecked():
> can't get state of uncheckable item!
> ASSERT INFO:
> ./src/gtk/menu.cpp(984): assert "IsCheckable()" failed in IsChecked():
> can't get state of uncheckable item!
>

I can't reproduce this on FC6 - I'm downloading F7 now, but it'll
probably be Monday before I get it installed and running.

The fix seems obvious though, assuming the problem is simply a new
assert in GTK - perhaps you could try the attached patch please?

Regards, Dave
Index: pgadmin/utils/factory.cpp
===================================================================
--- pgadmin/utils/factory.cpp    (revision 6569)
+++ pgadmin/utils/factory.cpp    (working copy)
@@ -317,7 +317,7 @@
                     if (!menuItem->IsSubMenu())
                     {
                         lastItem = treeContextMenu->Append(id, menuItem->GetLabel(), menuItem->GetHelp(),
menuItem->IsCheckable()? wxITEM_CHECK : wxITEM_NORMAL); 
-                        if (menuItem->IsChecked())
+                        if (menuItem->IsCheckable() && menuItem->IsChecked())
                             treeContextMenu->FindItem(id)->Check();
                     }
                     else

Re: pgadmin go down when I want to start debug pl pgsql function

From
Dave Page
Date:
Pavel Stěhule wrote:
> Hello, I had to little bit modify your patch, but no assert now.
> 

Thanks Pavel, patch applied.

Marc, are you able to test SVN trunk please?

Thanks, Dave