-
Bug
-
Resolution: Incomplete
-
P2
-
None
-
7u40
-
linux
FULL PRODUCT VERSION :
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux tomziWorkSchleppi 3.8.0-30-generic #44-Ubuntu SMP Thu Aug 22 20:52:24 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
A DESCRIPTION OF THE PROBLEM :
Sending a newly created HashMap over a Remote EJB call in Glassfish and adding an entry to the HashMap in the EJB Method throws an ArrayIndexOutOfBoundsException. It seems that the Map thinks it was already initialized because the check if (table == EMPTY_TABLE) in the put method seems to be false (even if it should the true) -> Hash Seed value was not initialized (=0) when the exception occured.
This is reproducable on Glassfish but not in a normal Unit Test where we tried to serialize/deseriaize the Hashmap before adding a object via put(...)
REGRESSION. Last worked in version 7u25
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
- create a new HashMap
- do EJB call with HashMap
- in the called Method add entry via put
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Entry is added to the HashMap
ACTUAL -
ArrayIndexOutOfBoundsException
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1761085646
at java.util.HashMap.put(HashMap.java:498) ~[na:1.7.0_40]
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
Add and remove an entry before sending the HashMap in the EJB call.
SUPPORT :
YES
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux tomziWorkSchleppi 3.8.0-30-generic #44-Ubuntu SMP Thu Aug 22 20:52:24 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
A DESCRIPTION OF THE PROBLEM :
Sending a newly created HashMap over a Remote EJB call in Glassfish and adding an entry to the HashMap in the EJB Method throws an ArrayIndexOutOfBoundsException. It seems that the Map thinks it was already initialized because the check if (table == EMPTY_TABLE) in the put method seems to be false (even if it should the true) -> Hash Seed value was not initialized (=0) when the exception occured.
This is reproducable on Glassfish but not in a normal Unit Test where we tried to serialize/deseriaize the Hashmap before adding a object via put(...)
REGRESSION. Last worked in version 7u25
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
- create a new HashMap
- do EJB call with HashMap
- in the called Method add entry via put
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Entry is added to the HashMap
ACTUAL -
ArrayIndexOutOfBoundsException
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1761085646
at java.util.HashMap.put(HashMap.java:498) ~[na:1.7.0_40]
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
Add and remove an entry before sending the HashMap in the EJB call.
SUPPORT :
YES