Thread overview
strange debug menu crash
Jun 05, 2008
Simen Haugen
Jun 05, 2008
Frank Benoit
Jun 06, 2008
Simen Haugen
June 05, 2008
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


June 05, 2008
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?
June 06, 2008
"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.