On Tue, 2008-05-27 at 15:06 +0200, Mauro Manfrin wrote:
sorry for the late reply (i know it's no excuse but i've been
> 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
> 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
> 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)
> "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
> 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?