|
Quick Lists
|
|
Bug ID:
|
4914585
|
|
Votes
|
0
|
|
Synopsis
|
RepositoryId Lists not handled correctly
|
|
Category
|
idl:orb
|
|
Reported Against
|
1.4.2
, tiger-beta
|
|
Release Fixed
|
1.4.1(1.4.1_07),
1.4.2(1.4.2_04) (Bug ID:2074069)
, tiger-beta2(Bug ID:2074070)
|
|
State
|
10-Fix Delivered,
bug
|
|
Priority:
|
2-High
|
|
Related Bugs
|
4939854
|
|
Submit Date
|
28-AUG-2003
|
|
Description
|
The JDK ORB has a bug when dealing with repository id lists in valuetypes. When reading these we sometimes see this exception:
Exception in thread "main" java.rmi.RemoteException: CORBA INTERNAL
1398079695 N
o; nested exception is:
org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 207 completed: No
at
com.sun.corba.se.internal.iiop.ShutdownUtilDelegate.mapSystemExceptio
n(ShutdownUtilDelegate.java:134)
at javax.rmi.CORBA.Util.mapSystemException(Util.java:65)
at test._Simple_Stub.testEJBException(Unknown Source)
at test.Client.example(Client.java:91)
at test.Client.main(Client.java:50)
Caused by: org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 207 completed: No
at
com.sun.corba.se.internal.orbutil.CacheTable.put(CacheTable.java:73)
at
com.sun.corba.se.internal.iiop.CDRInputStream_1_0.read_repositoryIds(
CDRInputStream_1_0.java:1762)
at
com.sun.corba.se.internal.iiop.CDRInputStream_1_0.read_value(CDRInput
Stream_1_0.java:1027)
at
com.sun.corba.se.internal.iiop.CDRInputStream.read_value(CDRInputStre
am.java:293)
|
|
Work Around
|
N/A
|
|
Evaluation
|
There is a problem in CDRInputStream_1_0.java:
// read first array element and store it as an indirection to the whole array
int indirection = get_offset() - 4;
String repID = read_repositoryId();
if (repositoryIdCache == null)
repositoryIdCache = new CacheTable(false);
repositoryIdCache.put(repID, indirection);
indirection is bbwi.index - 4, but after read_repositId(), if the read result is not null --- stringIndirection will not be equal to indirection above: in readStringOrIndirection:
int len = read_long(); <---- bbwi.index += 4
//
// Check for indirection
//
if (allowIndirection) {
if (len == 0xffffffff)
return null;
else
stringIndirection = get_offset() - 4; <---- is the original position, not original position - 4!
}
So, this will cause the put function is CacheTable triger that exception ---- same key for different vals. The fix might be like:
int indirection = get_offset();
xxxxx@xxxxx 2003-09-26
A new bug (4939854) filed against tiger-beta for requesting the fix addressed in tiger.
xxxxx@xxxxx 2003-10-17
|
|
Comments
|
Submitted On 28-NOV-2006
jdoe3000
This bug is NOT fixed in JDK 1.4.2_13. Please reopen and fix this bug!!!
PLEASE NOTE: JDK6 is formerly known as Project Mustang
|
|
|
 |