Thread: GQB bug - Segfault in 'Join' tab

GQB bug - Segfault in 'Join' tab

From
"Dickson S. Guedes"
Date:
Hi all,

I'm testing GBQ a lot here and i'm get an error when I follow this steps:

1) Open pgadmin3
2) Select a database that contais a schema with ~ 450 objects
3) Open the Query window
4) Switch to the GQB Tab
5) Wait for ~8s until all my objects appears
6) Drag and drop 3 tables (one parent and yours 2 childs)
7) Using the mouse, I make the relationships between them
8) Right click and anybody of 2 childs and choose "Delete table"
9) Drag and drop back it again and repeat 7-8
10) Bring it again and click in "Join" tab and bum! Segfaul...

The gdb's debug output  is attached... I hope it helps...

[]s

--
Dickson S. Guedes
Administrador de Banco de Dados
Confesol - Projeto Colmeia
Florianopolis, SC, Brasil
(48) 3322-1185, ramal: 26


dba@analise3:~$ uname -a
Linux analise3 2.6.25.15-bd-mod #1 SMP PREEMPT Thu Nov 27 10:05:44 BRST 2008 i686 GNU/Linux
dba@analise3:~$ cd guedes/src/pgadmin3
dba@analise3:~/guedes/src/pgadmin3$ make maintainer-clean
dba@analise3:~/guedes/src/pgadmin3$ cvs update
dba@analise3:~/guedes/src/pgadmin3$ ./configure --enable-debug
dba@analise3:~/guedes/src/pgadmin3$ make
dba@analise3:~/guedes/src/pgadmin3$ cat ./pgadmin/include/svnversion.h
#define VERSION_SVN "7559"
dba@analise3:~/guedes/src/pgadmin3$ gdb ./pgadmin/pgadmin3
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(gdb) run
Starting program: /home/dba/guedes/src/pgadmin3/pgadmin/pgadmin3
[Thread debugging using libthread_db enabled]
[New Thread 0xb631e990 (LWP 23003)]

-----QUOTE-----
Here I do the steps documented in e-mail
---END QUOTE---

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb631e990 (LWP 23003)]
0x0808c0e2 in wxStringBase::GetStringData (this=0x36) at /usr/include/wx-2.8/wx/string.h:265
265      wxStringData* GetStringData() const { return (wxStringData*)m_pchData - 1; }
(gdb) bt
#0  0x0808c0e2 in wxStringBase::GetStringData (this=0x36) at /usr/include/wx-2.8/wx/string.h:265
#1  0x0808d2e3 in wxStringBase (this=0xbfc2a140, stringSrc=@0x36) at /usr/include/wx-2.8/wx/string.h:351
#2  0x0808d372 in wxString (this=0xbfc2a140, stringSrc=@0x36) at /usr/include/wx-2.8/wx/string.h:690
#3  0x08377700 in gqbQueryObject::getAlias (this=0xa) at ../pgadmin/include/gqb/gqbQueryObjs.h:82
#4  0x08380d40 in gqbGridJoinTable::GetValue (this=0xa5c4d60, row=0, col=2) at ./gqb/gqbGridJoinTable.cpp:96
#5  0x080b81ed in wxGrid::GetCellValue (this=0xa5c5698, row=0, col=2) at /usr/include/wx-2.8/wx/generic/grid.h:1489
#6  0x0837daad in wxGridCellButtonRenderer::Draw (this=0xa371318, grid=@0xa5c5698, attr=@0xa836628, dc=@0xbfc2a3dc,
rectCell=@0xbfc2a32c,row=0, col=2,  
    isSelected=true) at ./gqb/gqbGridRestTable.cpp:295
#7  0xb79b612c in wxGrid::DrawCell (this=0xa5c5698, dc=@0xbfc2a3dc, coords=@0xa690708) at ../src/generic/grid.cpp:7595
#8  0xb79b6580 in wxGrid::DrawGridCellArea (this=0xa5c5698, dc=@0xbfc2a3dc, cells=@0xbfc2a4e8) at
../src/generic/grid.cpp:7515
#9  0xb79bc667 in wxGridWindow::OnPaint (this=0xa5cbe70) at ../src/generic/grid.cpp:4012
#10 0xb73e4691 in wxAppConsole::HandleEvent (this=0x980bd98, handler=0xa5cbe70, func=0xb79bc5b0
<wxGridWindow::OnPaint(wxPaintEvent&)>,event=@0xbfc2a748)  at ../src/common/appbase.cpp:320 
#11 0xb74aa0c8 in wxEvtHandler::ProcessEventIfMatches (entry=@0xb7a26a00, handler=0xa5cbe70, event=@0xbfc2a748) at
../src/common/event.cpp:1225
#12 0xb74aa95f in wxEventHashTable::HandleEvent (this=0xb7a269e0, event=@0xbfc2a748, self=0xa5cbe70) at
../src/common/event.cpp:898
#13 0xb74aaadc in wxEvtHandler::ProcessEvent (this=0xa5cbe70, event=@0xbfc2a748) at ../src/common/event.cpp:1287
#14 0xb76c7ed9 in wxWindow::GtkSendPaintEvents (this=0xa5cbe70) at ../src/gtk/window.cpp:3827
#15 0xb76c847e in gtk_window_expose_callback (widget=0xa381b28, gdk_event=0xbfc2ae34, win=0xa5cbe70) at
../src/gtk/window.cpp:517
#16 0xb6d188d4 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#17 0xb6aa6749 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#18 0xb6abaf7b in ?? () from /usr/lib/libgobject-2.0.so.0
#19 0xb6abc937 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#20 0xb6abcf59 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#21 0xb6e37667 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#22 0xb6d13004 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#23 0xb6b74f33 in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#24 0xb6b755c8 in gdk_window_process_all_updates () from /usr/lib/libgdk-x11-2.0.so.0
#25 0xb6c7acff in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#26 0xb6b5b81b in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#27 0xb6a0e0d1 in ?? () from /usr/lib/libglib-2.0.so.0
#28 0xb6a0fcc6 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#29 0xb6a13083 in ?? () from /usr/lib/libglib-2.0.so.0
#30 0xb6a13467 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#31 0xb6d13264 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#32 0xb76b12ab in wxEventLoop::Run (this=0x9955938) at ../src/gtk/evtloop.cpp:76
#33 0xb775f73c in wxAppBase::MainLoop (this=0x980bd98) at ../src/common/appcmn.cpp:312
#34 0xb775ed71 in wxAppBase::OnRun (this=0xbfc2a140) at ../src/common/appcmn.cpp:367
#35 0xb742ed0a in wxEntry (argc=@0xb753614c, argv=0x97fac40) at ../src/common/init.cpp:456
#36 0xb742edb7 in wxEntry (argc=@0xbfc2b160, argv=0xbfc2b1e4) at ../src/common/init.cpp:468
#37 0x0808c01e in main (argc=1407551829, argv=0x8b64ec83) at ./pgAdmin3.cpp:109

Re: GQB bug - Segfault in 'Join' tab

From
"Dave Page"
Date:
Hi Luis,

Can you look at this please?


On Fri, Jan 16, 2009 at 3:33 PM, Dickson S. Guedes
<guedes@cresoltec.com.br> wrote:
> Hi all,
>
> I'm testing GBQ a lot here and i'm get an error when I follow this steps:
>
> 1) Open pgadmin3
> 2) Select a database that contais a schema with ~ 450 objects
> 3) Open the Query window
> 4) Switch to the GQB Tab
> 5) Wait for ~8s until all my objects appears
> 6) Drag and drop 3 tables (one parent and yours 2 childs)
> 7) Using the mouse, I make the relationships between them
> 8) Right click and anybody of 2 childs and choose "Delete table"
> 9) Drag and drop back it again and repeat 7-8
> 10) Bring it again and click in "Join" tab and bum! Segfaul...
>
> The gdb's debug output  is attached... I hope it helps...
>
> []s
>
> --
> Dickson S. Guedes
> Administrador de Banco de Dados
> Confesol - Projeto Colmeia
> Florianopolis, SC, Brasil
> (48) 3322-1185, ramal: 26
>
>
>
> dba@analise3:~$ uname -a
> Linux analise3 2.6.25.15-bd-mod #1 SMP PREEMPT Thu Nov 27 10:05:44 BRST 2008
> i686 GNU/Linux
> dba@analise3:~$ cd guedes/src/pgadmin3
> dba@analise3:~/guedes/src/pgadmin3$ make maintainer-clean
> dba@analise3:~/guedes/src/pgadmin3$ cvs update
> dba@analise3:~/guedes/src/pgadmin3$ ./configure --enable-debug
> dba@analise3:~/guedes/src/pgadmin3$ make
> dba@analise3:~/guedes/src/pgadmin3$ cat ./pgadmin/include/svnversion.h
> #define VERSION_SVN "7559"
> dba@analise3:~/guedes/src/pgadmin3$ gdb ./pgadmin/pgadmin3
> GNU gdb 6.8-debian
> Copyright (C) 2008 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i486-linux-gnu"...
> (gdb) run
> Starting program: /home/dba/guedes/src/pgadmin3/pgadmin/pgadmin3
> [Thread debugging using libthread_db enabled]
> [New Thread 0xb631e990 (LWP 23003)]
>
> -----QUOTE-----
> Here I do the steps documented in e-mail
> ---END QUOTE---
>
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0xb631e990 (LWP 23003)]
> 0x0808c0e2 in wxStringBase::GetStringData (this=0x36) at
> /usr/include/wx-2.8/wx/string.h:265
> 265       wxStringData* GetStringData() const { return
> (wxStringData*)m_pchData - 1; }
> (gdb) bt
> #0  0x0808c0e2 in wxStringBase::GetStringData (this=0x36) at
> /usr/include/wx-2.8/wx/string.h:265
> #1  0x0808d2e3 in wxStringBase (this=0xbfc2a140, stringSrc=@0x36) at
> /usr/include/wx-2.8/wx/string.h:351
> #2  0x0808d372 in wxString (this=0xbfc2a140, stringSrc=@0x36) at
> /usr/include/wx-2.8/wx/string.h:690
> #3  0x08377700 in gqbQueryObject::getAlias (this=0xa) at
> ../pgadmin/include/gqb/gqbQueryObjs.h:82
> #4  0x08380d40 in gqbGridJoinTable::GetValue (this=0xa5c4d60, row=0, col=2)
> at ./gqb/gqbGridJoinTable.cpp:96
> #5  0x080b81ed in wxGrid::GetCellValue (this=0xa5c5698, row=0, col=2) at
> /usr/include/wx-2.8/wx/generic/grid.h:1489
> #6  0x0837daad in wxGridCellButtonRenderer::Draw (this=0xa371318,
> grid=@0xa5c5698, attr=@0xa836628, dc=@0xbfc2a3dc, rectCell=@0xbfc2a32c,
> row=0, col=2,
>    isSelected=true) at ./gqb/gqbGridRestTable.cpp:295
> #7  0xb79b612c in wxGrid::DrawCell (this=0xa5c5698, dc=@0xbfc2a3dc,
> coords=@0xa690708) at ../src/generic/grid.cpp:7595
> #8  0xb79b6580 in wxGrid::DrawGridCellArea (this=0xa5c5698, dc=@0xbfc2a3dc,
> cells=@0xbfc2a4e8) at ../src/generic/grid.cpp:7515
> #9  0xb79bc667 in wxGridWindow::OnPaint (this=0xa5cbe70) at
> ../src/generic/grid.cpp:4012
> #10 0xb73e4691 in wxAppConsole::HandleEvent (this=0x980bd98,
> handler=0xa5cbe70, func=0xb79bc5b0 <wxGridWindow::OnPaint(wxPaintEvent&)>,
> event=@0xbfc2a748)  at ../src/common/appbase.cpp:320
> #11 0xb74aa0c8 in wxEvtHandler::ProcessEventIfMatches (entry=@0xb7a26a00,
> handler=0xa5cbe70, event=@0xbfc2a748) at ../src/common/event.cpp:1225
> #12 0xb74aa95f in wxEventHashTable::HandleEvent (this=0xb7a269e0,
> event=@0xbfc2a748, self=0xa5cbe70) at ../src/common/event.cpp:898
> #13 0xb74aaadc in wxEvtHandler::ProcessEvent (this=0xa5cbe70,
> event=@0xbfc2a748) at ../src/common/event.cpp:1287
> #14 0xb76c7ed9 in wxWindow::GtkSendPaintEvents (this=0xa5cbe70) at
> ../src/gtk/window.cpp:3827
> #15 0xb76c847e in gtk_window_expose_callback (widget=0xa381b28,
> gdk_event=0xbfc2ae34, win=0xa5cbe70) at ../src/gtk/window.cpp:517
> #16 0xb6d188d4 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
> #17 0xb6aa6749 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
> #18 0xb6abaf7b in ?? () from /usr/lib/libgobject-2.0.so.0
> #19 0xb6abc937 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
> #20 0xb6abcf59 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
> #21 0xb6e37667 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
> #22 0xb6d13004 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
> #23 0xb6b74f33 in ?? () from /usr/lib/libgdk-x11-2.0.so.0
> #24 0xb6b755c8 in gdk_window_process_all_updates () from
> /usr/lib/libgdk-x11-2.0.so.0
> #25 0xb6c7acff in ?? () from /usr/lib/libgtk-x11-2.0.so.0
> #26 0xb6b5b81b in ?? () from /usr/lib/libgdk-x11-2.0.so.0
> #27 0xb6a0e0d1 in ?? () from /usr/lib/libglib-2.0.so.0
> #28 0xb6a0fcc6 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
> #29 0xb6a13083 in ?? () from /usr/lib/libglib-2.0.so.0
> #30 0xb6a13467 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
> #31 0xb6d13264 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
> #32 0xb76b12ab in wxEventLoop::Run (this=0x9955938) at
> ../src/gtk/evtloop.cpp:76
> #33 0xb775f73c in wxAppBase::MainLoop (this=0x980bd98) at
> ../src/common/appcmn.cpp:312
> #34 0xb775ed71 in wxAppBase::OnRun (this=0xbfc2a140) at
> ../src/common/appcmn.cpp:367
> #35 0xb742ed0a in wxEntry (argc=@0xb753614c, argv=0x97fac40) at
> ../src/common/init.cpp:456
> #36 0xb742edb7 in wxEntry (argc=@0xbfc2b160, argv=0xbfc2b1e4) at
> ../src/common/init.cpp:468
> #37 0x0808c01e in main (argc=1407551829, argv=0x8b64ec83) at
> ./pgAdmin3.cpp:109
>
>
> --
> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgadmin-hackers
>
>



--
Dave Page
EnterpriseDB UK:   http://www.enterprisedb.com

Re: GQB bug - Segfault in 'Join' tab

From
Ashesh Vashi
Date:
Hi Luis/Dave,

In my spare time, I checked for the solution for this segfault.

Please find the attached the patch.
I don't know - how could I miss to call the gqbGridJoinTable's removeJoins function from OnMenuTableDelete function. :(
I have called the same function from OnKeyDown for keyCode is equal to WXK_DELETE.

Sorry for introducing this kind of bug. I am really feeling bad for this.

--
Regards,
Ashesh Vashi

EnterpriseDB INDIA: http://www.enterprisedb.com

Re: GQB bug - Segfault in 'Join' tab

From
"Dave Page"
Date:
On Fri, Jan 16, 2009 at 6:16 PM, Ashesh Vashi
<ashesh.vashi@enterprisedb.com> wrote:
> Hi Luis/Dave,
>
> In my spare time, I checked for the solution for this segfault.
>
> Please find the attached the patch.
> I don't know - how could I miss to call the gqbGridJoinTable's removeJoins
> function from OnMenuTableDelete function. :(
> I have called the same function from OnKeyDown for keyCode is equal to
> WXK_DELETE.
>
> Sorry for introducing this kind of bug. I am really feeling bad for this.

These things happen - the main thing is it should be fixed now!

Dickson; can you try the latest SVN code please?

Luis; please ignore my earlier email :-)

--
Dave Page
EnterpriseDB UK:   http://www.enterprisedb.com

Re: GQB bug - Segfault in 'Join' tab

From
"Dickson S. Guedes"
Date:
Dave Page escreveu:
> On Fri, Jan 16, 2009 at 6:16 PM, Ashesh Vashi
> <ashesh.vashi@enterprisedb.com> wrote:
>
>> Hi Luis/Dave,
>>
>> In my spare time, I checked for the solution for this segfault.
>>
>> Please find the attached the patch.
>> I don't know - how could I miss to call the gqbGridJoinTable's removeJoins
>> function from OnMenuTableDelete function. :(
>> I have called the same function from OnKeyDown for keyCode is equal to
>> WXK_DELETE.
>>
>> Sorry for introducing this kind of bug. I am really feeling bad for this.
>>
>
> These things happen - the main thing is it should be fixed now!
>
> Dickson; can you try the latest SVN code please?
>

Ok Dave, i'll trying it now.

Thanks. ":)

--
Dickson S. Guedes
Administrador de Banco de Dados
Confesol - Projeto Colmeia
Florianopolis, SC, Brasil
(48) 3322-1185, ramal: 26


Re: GQB bug - Segfault in 'Join' tab

From
"Dickson S. Guedes"
Date:
Dickson S. Guedes escreveu:
> Dave Page escreveu:
>>
>> Dickson; can you try the latest SVN code please?
>>
>
> Ok Dave, i'll trying it now.

Ok Dave, it works now.

Thanks to you and Ashesh.

":)

--
Dickson S. Guedes
Administrador de Banco de Dados
Confesol - Projeto Colmeia
Florianopolis, SC, Brasil
(48) 3322-1185, ramal: 26