On Tue, 2008-05-27 at 15:06 +0200, Mauro Manfrin wrote: > Hello, hello mauro
sorry for the late reply (i know it's no excuse but i've been exceptionally busy) > I'm contacting you to notify a Deep Bug I found on ECS project. > > First of all, I want to tell you that my company and I, use ECS1.4.1 and > then 1.4.2 as a kernel library for HTML page construction. > We use Ecs as a sort of base toolkit for our framework that's the base for > our CRM solutions. > Nowaday, I think that more than 10000 telephone operators use our ecs based > solution, 8 hours a day, in contact center applications. That's a real test > environment. > > Well. In the last installation, we used ecs on an AIX RISC JDK 1.5 platform > and we found a strange bug. > I think that that bug affects all releases of ECS, because of a base mistake > in ConcreteElement.java class. > > Let's go to the real problem: > The class ConcreteElement exposes a method > addElement(Element element) > that calls > addElementToRegistry(Integer.toString(element.hashCode()),element); > so it gives a key valued element.hashCode() to that element. > That's the point: element.hashCode() can't be a unique key because sometimes > we can have two elements with the same hasocode. > We experienced it only on IBM JDK, but the sun documentation (javadoc) > states: > > "It is not required that if two objects are unequal according to the > equals(java.lang.Object) method, then calling the hashCode method on each of > the two objects must produce distinct integer results. However, the > programmer should be aware that producing distinct integer results for > unequal objects may improve the performance of hashtables." > > So sometimes, two different objects can have the same hashCode! > So, sometimes two calls to addElement(element) can result in only the second > object stored in the ConcreteElement. > So sometimes, on out instalaltion some table rows misses, or some row cells > misses or... > > I think that's happening when IBM garbage collector compacts the heap, so > that a new object can get same address (i.e. hashcode) of an old shifted > object. interesting http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6321873 (for example) suggests that this problem would not be limited just to AIX > I've done some fixes to resolve. > I've done a version of ConcreteElement that sotores object in the Map only > if you give explicitly a key-name, otherwise it stores only in the Vector. > That seems to work good, with a good retro-compatibility. that sounds like it would work > I know that ECS is not in a work-inprogress state, but why don't give to the > posterity a bugless software? would you consider donating your patch to Apache? - robert --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
