Weird JFace Preferences bug

Gian Perrone gperrone at gmx.de
Wed Jan 21 07:11:40 PST 2009


I think I found a really weird bug in JFace. I use DWT 3.4-1, Tango
0.99.7 and DMD 1.028.
A minimal example really is minimal:

---

module bug;

import jive.stacktrace; //Optional
import dwtx.jface.preference.PreferenceManager;

void main(char[][] args) {
}

---

If libicu is not installed, it crashes at runtime. Should better be a
compile time error. If it is installed:

---

tango.core.Exception.IllegalElementException: Attempt to include invalid
key _in Collection
----------------
0x0827d4b5 [bug] object.traceContext
0x0827d428 [bug] object.Exception._ctor
0x08277ca9 [bug] tango.core.Exception.IllegalElementException._ctor
0x0809c3b5 [bug]
tango.util.collection.impl.MapCollection.MapCollection!(dwt.widgets.Display,
dwtx.jface.resource.ResourceManager).MapCollection.checkKey
0x0809af6b [bug]
tango.util.collection.HashMap.HashMap!(dwt.widgets.Display,
dwtx.jface.resource.ResourceManager).HashMap.add
0x08099fc9 [bug]
dwtx.jface.resource.JFaceResources.JFaceResources.getResources
0x08099f67 [bug]
dwtx.jface.resource.JFaceResources.JFaceResources.getResources
0x0809a156 [bug]
dwtx.jface.resource.JFaceResources.JFaceResources.getImageRegistry
0x0815bfb0 [bug]
dwtx.jface.viewers.DialogCellEditor.DialogCellEditor._staticCtor18
0x0815c63b [bug] dwtx.jface.viewers.DialogCellEditor.__modctor
0x0827d6c1 [bug] object._moduleCtor2
0x0827d704 [bug] object._moduleCtor2
0x0827d5a3 [bug] _moduleCtor
0x0827e036 [bug] dmain2.main.runAll
0x0827dde8 [bug] dmain2.main.tryExec
0x0827dd91 [bug] main
0xf75ae44f [libc-2.7.so]
0x08054400 [bug] _start

---

I spent a lot of time finding what caused this. The minimal *working*
example is:

---

module bug;

import dwtx.jface.preference.PreferenceManager;
import dwt.widgets.Display;
import dwt.layout.RowLayout;

void main(char[][] args) {
}

---

You have to import Display and RowLayout or else a static this() fails.
I didn't find any clue what actually causes this behaviour.



More information about the Digitalmars-d-dwt mailing list