Skip site navigation (1) Skip section navigation (2)

Debugger hung on dummy function

From: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
To: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Debugger hung on dummy function
Date: 2009-04-03 15:43:00
Message-ID: 49D62E84.60608@enterprisedb.com (view raw or flat)
Thread:
Lists: pgadmin-hackers
CREATE FUNCTION onelinefunc() RETURNS void AS $$ begin null; end; $$ 
LANGUAGE plpgsql;

When I choose Debugging->debug on that function, pgAdmin hangs, 
consuming 100% of CPU. This is on latest svn version of pgAdmin, running 
on Debian linux with wxwidgets 2.8.10.

The same doesn't happen if the function takes an argument:

CREATE FUNCTION onelinefunc(i integer) RETURNS void AS $$ begin null; 
end; $$ LANGUAGE plpgsql;

The same thing happens even if the function has more interesting 
contents, when I step to the end of the function.

Attaching with gdb to the hung pgadmin process, I got a backtrace like this:

#0  0xb698ae3d in IA__g_type_check_instance_cast 
(type_instance=0x8b12418, iface_type=145581776)
     at 
/build/buildd-glib2.0_2.20.0-2-i386-rcJiVy/glib2.0-2.20.0/gobject/gtype.c:372
#1  0xb775284c in wxWindow::DoSetSize (this=0x91d97d0, x=0, y=0, 
width=25, height=18, sizeFlags=<value optimized out>)
     at ../src/gtk/window.cpp:2754
#2  0xb7a06cdd in wxGrid::CalcWindowSizes (this=0x91d5ff0) at 
../include/wx/window.h:225
#3  0xb7a12c1e in wxGrid::CalcDimensions (this=0x91d5ff0) at 
../src/generic/grid.cpp:4653
#4  0xb7a12fc5 in wxGrid::OnSize (this=0x3) at ../src/generic/grid.cpp:6912
#5  0xb7475371 in wxAppConsole::HandleEvent (this=0x8a6d7f8, 
handler=0x91d5ff0, func=&virtual table offset 918020,
     event=(at)0xbfb54660) at ../src/common/appbase.cpp:320
#6  0xb7530dca in wxEvtHandler::ProcessEventIfMatches 
(entry=(at)0xb7a758d8, handler=0x91d5ff0, event=(at)0xbfb54660)
     at ../src/common/event.cpp:1225
#7  0xb75324c4 in wxEventHashTable::HandleEvent (this=0xb7a758a8, 
event=(at)0xbfb54660, self=0x91d5ff0)
     at ../src/common/event.cpp:898
#8  0xb7532616 in wxEvtHandler::ProcessEvent (this=0x91d5ff0, 
event=(at)0xbfb54660) at ../src/common/event.cpp:1287
#9  0xb753259c in wxEvtHandler::ProcessEvent (this=0x91d6338, 
event=(at)0xbfb54660) at ../src/common/event.cpp:1294
#10 0xb78a6b03 in wxScrollHelperEvtHandler::ProcessEvent 
(this=0x91d6338, event=(at)0xbfb54660)
     at ../src/generic/scrlwing.cpp:211
#11 0xb774a2fb in wxWindow::GTKProcessEvent (this=0x91d5ff0, 
event=(at)0xbfb54660) at ../src/gtk/window.cpp:1399
#12 0xb77507f7 in gtk_window_size_callback (alloc=0xbfb54a0c, 
win=0x91d5ff0) at ../src/gtk/window.cpp:2149
#13 0xb69798dc in IA__g_cclosure_marshal_VOID__BOXED (closure=0x91d72a8, 
return_value=0x0, n_param_values=2,
     param_values=0x91a2850, invocation_hint=0xbfb5484c, 
marshal_data=0xb77506d0)
     at 
/build/buildd-glib2.0_2.20.0-2-i386-rcJiVy/glib2.0-2.20.0/gobject/gmarshal.c:566
#14 0xb696cb6b in IA__g_closure_invoke (closure=0x91d72a8, 
return_value=0x0, n_param_values=2, param_values=0x91a2850,
     invocation_hint=0xbfb5484c) at 
/build/buildd-glib2.0_2.20.0-2-i386-rcJiVy/glib2.0-2.20.0/gobject/gclosure.c:767
#15 0xb6980ccf in signal_emit_unlocked_R (node=0x8a8e5c0, detail=0, 
instance=0x908e008, emission_return=0x0,
     instance_and_params=0x91a2850) at 
/build/buildd-glib2.0_2.20.0-2-i386-rcJiVy/glib2.0-2.20.0/gobject/gsignal.c:3244
#16 0xb6982159 in IA__g_signal_emit_valist (instance=0x908e008, 
signal_id=16, detail=0, var_args=0xbfb549f0 "\200�\b\t\001")
     at 
/build/buildd-glib2.0_2.20.0-2-i386-rcJiVy/glib2.0-2.20.0/gobject/gsignal.c:2977
#17 0xb69825b6 in IA__g_signal_emit (instance=0x908e008, signal_id=16, 
detail=0)
...

I don't understand all the things that are going on, but this looks like 
some kind of a infinite resizing loop. Dunno what useful functionality 
this disables as a side-effect, but this patch fixes it for me:

--- debugger/dlgDirectDbg.cpp   (revision 7789)
+++ debugger/dlgDirectDbg.cpp   (working copy)
@@ -295,7 +295,7 @@
          font.SetStyle( wxFONTSTYLE_ITALIC );
          grdParams->SetCellFont( 0, COL_NAME, font );

-        grdParams->AutoSizeColumns();
+        //grdParams->AutoSizeColumns();
          activateDebugger();
      }
      else

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

Responses

pgadmin-hackers by date

Next:From: Guillaume LelargeDate: 2009-04-04 11:53:34
Subject: Re: i18n doc patch
Previous:From: svnDate: 2009-04-02 09:31:23
Subject: SVN Commit by dpage: r7790 - trunk/pgadmin3/pgadmin/utils

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group