Обсуждение: latest pgadmin generates core on Solaris
I tried pgadmin version from trunk (Solaris nevada/gcc 3.4.3) and it
generates core during init phase. I'm not sure if I setup everything
correctly, but it looks like other problem with wx2.7.1. See backtrace:
08046908
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+5(8046990,
85cd8d8, 0, 0, feffcbf0, 8046948)
08046a38
libwx_gtk2u_aui-2.7.so.1.0.0`wxDefaultDockArt::wxDefaultDockArt+0x819(8904318,
fed80678, fe6f6075, fecd7dab, 0, fed80678)
08046a88
libwx_gtk2u_aui-2.7.so.1.0.0`wxFrameManager::wxFrameManager+0x191(89740e4,
0, 59, fe5bdea0, fefe4171, fe0a8978)
08046d88 frmMain::frmMain+0x42(8973ec8, 8046e30, 0, ffffffff, fe663110,
8046e38)
08047158 pgAdmin3::OnInit+0x2278(85797e8, 85797e8, 0, fe5bdea0, 8047224,
8047330)
08047178 wxAppConsole::CallOnInit+0xf(85797e8, 85624c8, fe53e93c, 1)
080471c8 libwx_baseu-2.7.so.1.0.0`wxEntry+0x3c(8047224, 85624c8,
80471e8, fe53ea66)
080471e8 libwx_baseu-2.7.so.1.0.0`wxEntry+0x2d(8047224, 8047240, 0,
847f488, 8047210, 82e6d35)
0804721c main+0x18(1, 8047240, 8047248)
08047234 _start+0x80(1, 8047398, 0, 80473a3, 80473d7, 80473ec)
> $r
%cs = 0x003b %eax = 0x00000000
%ds = 0x0043 %ebx = 0x08046990
%ss = 0x0043 %ecx = 0x00000000
%es = 0x0043 %edx = 0x085cd8d8
%fs = 0x0000 %esi = 0x08904318
%gs = 0x01c3 %edi = 0x08046990
%eip = 0xfe8295c5
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+5
%ebp = 0x08046908
%kesp = 0x00000000
%eflags = 0x00010216
id=0 vip=0 vif=0 ac=0 vm=0 rf=1 nt=0 iopl=0x0
status=<of,df,IF,tf,sf,zf,AF,PF,cf>
%esp = 0x080468e8
%trapno = 0xe
%err = 0x4
> 0xfe8295c5::dis
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams:
pushl %esi
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+1:
movl 0x10(%esp),%eax
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+5:
movl 0xb4(%eax),%edx
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0xb:
testb $0x1,%dh
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0xe:
movl 0x8(%esp),%ecx
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0x12:movl
$0x7,%esi
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0x17:
jne +0xd
<libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0x26>
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0x19:testb
$0x10,%dl
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0x1c:setne
%al
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0x1f:cmpb
$0x1,%al
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0x21:sbbl
%esi,%esi
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0x23:andl
$0x3,%esi
libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterParams+0x26:andb
$0x2,%dh
> -----Original Message----- > From: pgadmin-hackers-owner@postgresql.org > [mailto:pgadmin-hackers-owner@postgresql.org] On Behalf Of > Zdenek Kotala > Sent: 26 October 2006 11:53 > To: pgadmin-hackers@postgresql.org > Subject: [pgadmin-hackers] latest pgadmin generates core on Solaris > > I tried pgadmin version from trunk (Solaris nevada/gcc 3.4.3) and it > generates core during init phase. I'm not sure if I setup everything > correctly, but it looks like other problem with wx2.7.1. See > backtrace: > > > 08046908 > libwx_gtk2u_core-2.7.so.1.0.0`wxRendererGeneric::GetSplitterPa > rams+5(8046990, > 85cd8d8, 0, 0, feffcbf0, 8046948) > 08046a38 > libwx_gtk2u_aui-2.7.so.1.0.0`wxDefaultDockArt::wxDefaultDockAr > t+0x819(8904318, > fed80678, fe6f6075, fecd7dab, 0, fed80678) > 08046a88 > libwx_gtk2u_aui-2.7.so.1.0.0`wxFrameManager::wxFrameManager+0x > 191(89740e4, > 0, 59, fe5bdea0, fefe4171, fe0a8978) > 08046d88 frmMain::frmMain+0x42(8973ec8, 8046e30, 0, ffffffff, > fe663110, > 8046e38) > 08047158 pgAdmin3::OnInit+0x2278(85797e8, 85797e8, 0, > fe5bdea0, 8047224, > 8047330) Yeah, that's basically what I saw on GTK/Linux with 2.7.1. Does the AUI sample work OK? Regards, Dave.
Dave Page napsal(a):
>
>
> Yeah, that's basically what I saw on GTK/Linux with 2.7.1. Does the AUI
> sample work OK?
Yes, auidemo works fine.
I look on source coud and problem is probably there (src/aui/dockart.cpp):
// default metric values
#if defined(__WXMAC__)
SInt32 height;
GetThemeMetric( kThemeMetricSmallPaneSplitterHeight , &height );
m_sash_size = height;
#elif defined(__WXGTK__)
m_sash_size =
wxRendererNative::Get().GetSplitterParams(NULL).widthSash;
#else
m_sash_size = 4;
#endif
The GetSplitterParams in this case call
wxRendererGeneric::GetSplitterParams instead
wxRendererGTK::GetSplitterParams. It should be some problem with correct
virtual method lookup or wrong renderer setup?
Zdenek
> -----Original Message----- > From: Zdenek.Kotala@Sun.COM [mailto:Zdenek.Kotala@Sun.COM] > Sent: 26 October 2006 12:33 > To: Dave Page > Cc: pgadmin-hackers@postgresql.org > Subject: Re: [pgadmin-hackers] latest pgadmin generates core > on Solaris > > The GetSplitterParams in this case call > wxRendererGeneric::GetSplitterParams instead > wxRendererGTK::GetSplitterParams. It should be some problem > with correct > virtual method lookup or wrong renderer setup? Hi Zdenek I've committed a fix for this. Our custom tree renderer needed a constructor to make sure the native GTK renderer got used. Thanks for the analysis work. Regards, Dave