I have the wxGTK 2.8.4 distribution built on IRIX 6.5 with the MIPS
7.4 compiler. I have GTK+ 2.4 installed on my system.
I run the auidemo sample program and then repeatedly dock and undock
the toolbars. After a while (always when a docking is finished), I get
a core dump.
This is my repeatable scenario: Once the auidemo application comes up,
I float the "Sample Bookmark Toolbar" and then grab it by the "gripper"
(not the frame title bar). I then try to redock the toolbar and once it
"starts" to redock I release the mouse button (before it completes the
drawing of the newly docked toolbar). This seems to give me a core
dump every time.
Note that I am running over the network so the drawing of the
"docking" takes a visually noticable amount of time. Also note that it
doesn't seem to happen (at least not often enough) when I grab the
floating window by the title bar... the gripper seems to be the
consistant method for producing the core dump. Also note that if I
wait for the docking to be completely done before releasing the mouse,
it does not core dump.
When I get a core dump, this is my stack trace:
__________
> 0 wxWindowBase::GetPosition(void) const(this = (nil)) ["/people/mdefreitas/wx/wxGTK/wxGTK-2.8.4/include/wx/window.h":286, 0x1011d678]
1 wxAuiManager::OnFloatingPaneMoved(wxWindow*,wxDirection)(this =
0x10a65760, wnd = 0x10b1fbb0, dir = wxUP=64) ["/people/mdefreitas/wx/
wxGTK/wxGTK-2.8.4/src/aui/framemanager.cpp":3468, 0x1012fd28]
2 wxAuiFloatingFrame::OnMoveFinished(void)(this = 0x10c45e20) ["/
people/mdefreitas/wx/wxGTK/wxGTK-2.8.4/src/aui/floatpane.cpp":287,
0x1015c6b8]
3 wxAuiFloatingFrame::OnIdle(wxIdleEvent&)(this = 0x10c45e20, event
= 0x7fff29d0) ["/people/mdefreitas/wx/wxGTK/wxGTK-2.8.4/src/aui/
floatpane.cpp":262, 0x1015ce5c]
4 wxAppConsole::HandleEvent(wxEvtHandler*,void (wxEvtHandler::*)
(wxEvent&),wxEvent&) const(this = 0x10a4b610, handler = 0x10c45e20,
func = 0, event = 0x7fff29d0) ["/people/mdefreitas/wx/wxGTK/
wxGTK-2.8.4/src/common/appbase.cpp":320, 0x106d4214]
5 wxEvtHandler::ProcessEventIfMatches(const
wxEventTableEntryBase&,wxEvtHandler*,wxEvent&)(entry = 0x10a2fa50,
handler = 0x10c45e20, event = 0x7fff29d0) ["/people/mdefreitas/wx/
wxGTK/wxGTK-2.8.4/src/common/event.cpp":1204, 0x106d97c0]
6 wxEventHashTable::HandleEvent(wxEvent&,wxEvtHandler*)(this =
0x10a2faa8, event = 0x7fff29d0, self = 0x10c45e20) ["/people/
mdefreitas/wx/wxGTK/wxGTK-2.8.4/src/common/event.cpp":877, 0x106d7ae4]
7 wxEvtHandler::ProcessEvent(wxEvent&)(this = 0x10c45e20, event =
0x7fff29d0) ["/people/mdefreitas/wx/wxGTK/wxGTK-2.8.4/src/common/
event.cpp":1266, 0x106d89dc]
8 wxEvtHandler::ProcessEvent(wxEvent&)(this = 0x10c46060, event =
0x7fff29d0) ["/people/mdefreitas/wx/wxGTK/wxGTK-2.8.4/src/common/
event.cpp":1273, 0x106d8a54]
9 wxAppBase::SendIdleEvents(wxWindow*,wxIdleEvent&)(this =
0x10a4b610, win = 0x10c45e20, event = 0x7fff29d0) ["/people/mdefreitas/
wx/wxGTK/wxGTK-2.8.4/src/common/appcmn.cpp":461, 0x1044a94c]
10 wxAppBase::SendIdleEvents(wxWindow*,wxIdleEvent&)(this =
0x10a4b610, win = 0x10a65588, event = 0x7fff29d0) ["/people/mdefreitas/
wx/wxGTK/wxGTK-2.8.4/src/common/appcmn.cpp":470, 0x1044aa2c]
11 wxAppBase::ProcessIdle(void)(this = 0x10a4b610) ["/people/
mdefreitas/wx/wxGTK/wxGTK-2.8.4/src/common/appcmn.cpp":436,
0x1044a744]
12 ::wxapp_idle_callback(void*)(<no name> = (nil)) ["/people/
mdefreitas/wx/wxGTK/wxGTK-2.8.4/src/gtk/app.cpp":207, 0x10442924]
13 g_idle_dispatch(0x0, 0x0, 0x2df, 0x0, 0x187e, 0x0, 0x10a65900,
0x10a65ad0) ["/xlv1/freeware/2003.Nov/glib2/2.4.0/glib-2.4.0.diffbuild/
glib/gmain.c":3750, 0x1dcc308]
14 g_main_dispatch(0x10a4b8f0, 0x0, 0x2df, 0x0, 0x187e, 0x0,
0x10a65900, 0x10a65ad0) ["/xlv1/freeware/2003.Nov/glib2/2.4.0/
glib-2.4.0.diffbuild/glib/gmain.c":1895, 0x1dc83ec]
15 g_main_context_dispatch(0x10a4b8f0, 0x0, 0x2df, 0x0, 0x187e,
0x0, 0x10a65900, 0x10a65ad0) ["/xlv1/freeware/2003.Nov/glib2/2.4.0/
glib-2.4.0.diffbuild/glib/gmain.c":2441, 0x1dc9960]
16 g_main_context_iterate(0x10a4b8f0, 0x1, 0x0, 0x0, 0x187e, 0x0,
0x10a65900, 0x10a65ad0) ["/xlv1/freeware/2003.Nov/glib2/2.4.0/
glib-2.4.0.diffbuild/glib/gmain.c":2522, 0x1dc9c30]
17 g_main_loop_run(0x10bc99e0, 0x0, 0x2df, 0x0, 0x187e, 0x0,
0x10a65900, 0x10a65ad0) ["/xlv1/freeware/2003.Nov/glib2/2.4.0/
glib-2.4.0.diffbuild/glib/gmain.c":2726, 0x1dca4e0]
18 gtk_main(0x0, 0x0, 0x2df, 0x0, 0x187e, 0x0, 0x10a65900,
0x10a65ad0) ["/xlv1/freeware/2003.Nov/gtk2+/2.4.0/gtk+-2.4.0.diffbuild/
gtk/gtkmain.c":1172, 0xbd3cfe8]
19 wxEventLoop::Run(void)(this = 0x10c2d2d8) ["/people/mdefreitas/
wx/wxGTK/wxGTK-2.8.4/src/gtk/evtloop.cpp":76, 0x10468ccc]
20 wxAppBase::MainLoop(void)(this = 0x10a4b610) ["/people/
mdefreitas/wx/wxGTK/wxGTK-2.8.4/src/common/appcmn.cpp":308,
0x1044a3bc]
21 wxAppBase::OnRun(void)(this = 0x10a4b610) ["/people/mdefreitas/
wx/wxGTK/wxGTK-2.8.4/src/common/appcmn.cpp":363, 0x1044a0ac]
22 ::wxEntry(int&,char**)(argc = 0x7fff2d24, argv = 0x7fff2d44) ["/
people/mdefreitas/wx/wxGTK/wxGTK-2.8.4/src/common/init.cpp":449,
0x107d18cc]
23 ::main(argc = 1, argv = 0x7fff2d44) ["/people/mdefreitas/wx/
wxGTK/wxGTK-2.8.4/samples/aui/auidemo.cpp":50, 0x100f434c]
24 __start() ["/xlv55/kudzu-apr12/work/irix/lib/libc/libc_n32_M4/
csu/crt1text.s":177, 0x100f3d38]
__________
The "this" pointer looks good until the very end. It seems that
OnFloatingPaneMoved() tries to get the wxAuiPaneInfo*, given the
wxWindow* that is passed in. Then it tries to get the wxFrame* from
the wxAuiPaneInfo*. The wxFrame* is nil.
Here is the state of the wxWindow passed into OnFloatingPaneMoved()
via the wnd argument:
class wxWindow {
m_refData = (nil)
m_nextHandler = (nil)
m_previousHandler = (nil)
m_dynamicEvents = (nil)
m_pendingEvents = (nil)
m_eventsLocker = 0x10b4ad18
m_enabled = true (1)
union {
m_clientObject = (nil)
m_clientData = (nil)
}
m_clientDataType = wxClientData_None=0
m_windowId = -206
m_parent = 0x10a65588
m_children = class wxWindowList {
m_refData = (nil)
m_count = 0
m_destroy = false (0)
m_nodeFirst = (nil)
m_nodeLast = (nil)
m_keyType = wxKEY_NONE=0
}
m_minWidth = 288
m_minHeight = 31
m_maxWidth = -1
m_maxHeight = -1
m_eventHandler = 0x10b1fbb0
m_windowValidator = (nil)
m_dropTarget = (nil)
m_cursor = class wxCursor {
m_refData = 0x10a645d8
}
m_font = class wxFont {
m_refData = (nil)
}
m_backgroundColour = class wxColour {
m_refData = (nil)
}
m_foregroundColour = class wxColour {
m_refData = (nil)
}
m_caret = (nil)
m_updateRegion = class wxRegion {
m_refData = (nil)
}
m_acceleratorTable = class wxAcceleratorTable {
m_refData = (nil)
}
m_tooltip = (nil)
m_constraints = (nil)
m_constraintsInvolvedIn = (nil)
m_windowSizer = (nil)
m_containingSizer = 0x10b27150
m_autoLayout = 0
m_isShown = 1
m_isEnabled = 1
m_isBeingDeleted = 0
m_hasBgCol = 0
m_hasFgCol = 0
m_hasFont = 0
m_inheritBgCol = 0
m_inheritFgCol = 0
m_inheritFont = 0
m_windowStyle = 548
m_exStyle = 0
m_windowName = class wxString {
m_pchData = 0x10b4c1b4 = "toolbar"
}
m_themeEnabled = false (0)
m_backgroundStyle = wxBG_STYLE_SYSTEM=0
m_palette = class wxPalette {
m_refData = (nil)
}
m_hasCustomPalette = false (0)
m_virtualSize = class wxSize {
x = -1
y = -1
}
m_scrollHelper = (nil)
m_minVirtualWidth = -1
m_minVirtualHeight = -1
m_maxVirtualWidth = -1
m_maxVirtualHeight = -1
m_windowVariant = wxWINDOW_VARIANT_NORMAL=0
m_bestSizeCache = class wxSize {
x = 288
y = 30
}
m_x = 740
m_y = 1
m_width = 288
m_height = 31
m_oldClientWidth = 0
m_oldClientHeight = 0
m_widget = 0x10b1ff70
m_wxwindow = (nil)
m_focusWidget = 0x10b1ff70
m_imData = (nil)
m_scrollBar = {
[0] (nil)
[1] (nil)
}
m_scrollPos = {
[0] 0.0
[1] 0.0
}
m_blockValueChanged = {
[0] false (0)
[1] false (0)
}
m_needParent = 1
m_noExpose = 0
m_nativeSizeEvent = 0
m_hasScrolling = 0
m_hasVMT = 1
m_sizeSet = 0
m_resizing = 0
m_acceptsFocus = 0
m_hasFocus = 0
m_isScrolling = 0
m_clipPaintRegion = 0
m_nativeUpdateRegion = class wxRegion {
m_refData = (nil)
}
m_dirtyTabOrder = 0
m_needsStyleChange = 0
m_mouseButtonDown = 0
m_blockScrollEvent = 0
m_showOnIdle = 1
m_insertCallback = 0x1047c6b0
}
And here is the wxAuiPaneInfo that GetPane(wnd) returned into the pane
variable:
class wxAuiPaneInfo {
name = class wxString {
m_pchData = 0x10c1ca04 = "tb2"
}
caption = class wxString {
m_pchData = 0x10c1caf4 = "Toolbar 2"
}
window = 0x10b1fbb0
frame = (nil)
state = 2108144
dock_direction = 1
dock_layer = 10
dock_row = 0
dock_pos = 730
best_size = class wxSize {
x = 288
y = 31
}
min_size = class wxSize {
x = -1
y = -1
}
max_size = class wxSize {
x = -1
y = -1
}
floating_pos = class wxPoint {
x = 880
y = 286
}
floating_size = class wxSize {
x = 305
y = 55
}
dock_proportion = 100000
buttons = class wxAuiPaneButtonArray {
m_nSize = 16
m_nCount = 1
m_pItems = 0x10c25c90
}
rect = class wxRect {
x = 740
y = 1
width = 288
height = 31
}
}
Note that the frame member is nil.
To get around this problem for now, I just check to see if the frame pointer is null, if so, I just return. Is this a known problem, and if so, will the fix be in a new release of wxWidgets? I thought I saw a similar problem posted on the old forums.
For reference, I posted about this on comp.soft-sys.wxwindows:
http://groups.google.com/group/comp.sof ... 89c5ac8e61
Any help would be appreciated.
TIA,
Marco
Kirix Support Forums
The auidemo sample program core dumps (wxGTK-2.8.4)
2 posts
• Page 1 of 1
- mdefreitas
- Registered User
- Posts: 12
- Joined: Tue Jul 10, 2007 3:14 pm
Re: The auidemo sample program core dumps (wxGTK-2.8.4)
Hi,
Thanks for the through crash report. I'll have to investigate it further (and duplicate the problem).
All the best,
Ben
Thanks for the through crash report. I'll have to investigate it further (and duplicate the problem).
All the best,
Ben
Ben Williams
Kirix Support Team
Kirix Support Team
-
Ben - Kirix Support Team
- Posts: 525
- Joined: Mon Dec 19, 2005 6:29 am
2 posts
· Page 1 of 1
Return to wxAUI Questions, Thoughts & Feedback