www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.dwt - strange debug menu crash

reply "Simen Haugen" <simen norstat.no> writes:
I've only seen this in debug mode, and it happens quite rare. I get the 
context menu 99 of 100 times, but sometimes it crashes... I can't find any 
logical reason for this.


Tango backtrace hack intiated
Unhandled win32 exception!
Error: Access Violation (object.Exception)
backtrace:
 7c9012f1 ???
 7e428c20 ???
 0046a256 void dwt.widgets.Menu.Menu.createItem(class 
dwt.widgets.MenuItem.MenuI
tem, int, void*) (+f6) c:\d\dmd\import\dwt-win\dwt\widgets\Menu.d:516
 0054a0d9 class dwt.widgets.MenuItem.MenuItem 
dwt.widgets.MenuItem.MenuItem._cto
r(class dwt.widgets.Menu.Menu, int, void*) (+41) 
c:\d\dmd\import\dwt-win\dwt\wid
gets\MenuItem.d:130
 00408f02 void mui.main.Application.createDataSetCommandsMenuItems(class 
dwt.wid
gets.Menu.Menu, int, int, void*) (+362) src\mui\main.d:1474
 004095a6 class dwt.widgets.Menu.Menu 
mui.main.Application.createTreeContextMenu
(void*) (+2ca) src\mui\main.d:1661
 004092c8 void mui.main.Application.createCommandTree(void*) . void 
__anonclass1
49.menuDetected(class dwt.events.MenuDetectEvent.MenuDetectEvent, void*)¶ 
(+3c)
src\mui\main.d:1580
 0052b61c void dwt.widgets.TypedListener.TypedListener.handleEvent(class 
dwt.wid
gets.Event.Event, void*)³ (+5ec) 
c:\d\dmd\import\dwt-win\dwt\widgets\TypedListen
er.d:216
 0058822e void dwt.widgets.EventTable.EventTable.sendEvent(class 
dwt.widgets.Eve
nt.Event, void*) (+fa) c:\d\dmd\import\dwt-win\dwt\widgets\EventTable.d:91
 004efffc void dwt.widgets.Widget.Widget.sendEvent(class 
dwt.widgets.Event.Event
, void*)I (+40) c:\d\dmd\import\dwt-win\dwt\widgets\Widget.d:1038
 004f00df void dwt.widgets.Widget.Widget.sendEvent(int, class 
dwt.widgets.Event.
Event, bool, void*) (+8b) c:\d\dmd\import\dwt-win\dwt\widgets\Widget.d:1060
 004f004e void dwt.widgets.Widget.Widget.sendEvent(int, class 
dwt.widgets.Event.
Event, void*) (+22) c:\d\dmd\import\dwt-win\dwt\widgets\Widget.d:1046
 004f0a7c bool dwt.widgets.Widget.Widget.showMenu(int, int, void*) (+38) 
c:\d\dm
d\import\dwt-win\dwt\widgets\Widget.d:1347
 004f0cbd class dwt.internal.win32.OS.LDWTRESULT 
dwt.widgets.Widget.Widget.wmCon
textMenu(void*, int, int, void*) (+b5) 
c:\d\dmd\import\dwt-win\dwt\widgets\Widge
t.d:1440
 0050586d class dwt.internal.win32.OS.LDWTRESULT 
dwt.widgets.Control.Control.WM_
CONTEXTMENU(int, int, void*) (+25) 
c:\d\dmd\import\dwt-win\dwt\widgets\Control.d
:3975
 00504f27 int dwt.widgets.Control.Control.windowProc(void*, int, int, int, 
void*
) (+f3) c:\d\dmd\import\dwt-win\dwt\widgets\Control.d:3837
 00575d0d int dwt.widgets.Tree.Tree.windowProc(void*, int, int, int, void*) 
(+4e
9) c:\d\dmd\import\dwt-win\dwt\widgets\Tree.d:5762
 004fd73a int dwt.widgets.Display.Display.windowProc(void*, uint, uint, int, 
voi
d*) (+18e) c:\d\dmd\import\dwt-win\dwt\widgets\Display.d:4613
 004fd590 _D3dwt7widgets7Display7Display14windowProcFuncWPvkkiZi (+20) 
c:\d\dmd\
import\dwt-win\dwt\widgets\Display.d:4563
 7e418734 ???
 7e418816 ???
 7e41d17f ???
 7e41b3f9 ???
        Hit [m] for more or any other key to stop 
Jun 05 2008
parent reply Frank Benoit <keinfarbton googlemail.com> writes:
Simen, thanks for reporting this

What is the best way for me to reproduce it?

Did you build/use the dwt as a static lib? Build with what options? Or 
did you build with dwt just added to the include path?

dsss build test.d -debug -full

Can I use an existing example? can it be reproduces programatically?
Jun 05 2008
parent "Simen Haugen" <simen norstat.no> writes:
"Frank Benoit" <keinfarbton googlemail.com> wrote in message 
news:g2947u$1hoa$1 digitalmars.com...
 Simen, thanks for reporting this

 What is the best way for me to reproduce it?

 Did you build/use the dwt as a static lib? Build with what options? Or did 
 you build with dwt just added to the include path?

 dsss build test.d -debug -full

 Can I use an existing example? can it be reproduces programatically?
No static lib. Built with -full -g -debug. I'll now try to use it as a static lib instead to see if that helps. I catch MenuDetect in a tree, and call a function that removes the old menu and constructs a new one. Quite simple stuff. I haven't found a way to reproduce it unfortunaly. It works at least 99% of the time, and I cant see any logic in the crashes. It could be a very rare combination of some sort, but I'll add more debugging info in the upcoming weeks, and perhaps then I can find out how it happens. Sorry I cant be of much help. I have only just begun looking at dwt.
Jun 06 2008