Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6614558
Votes 18
Synopsis jmx interop JDK5 - JDK6 issue when calling getMBeanInfo
Category idl:serialization
Reported Against
Release Fixed 6u12(b02), 5.0u17-rev(b10) (Bug ID:2169778) , 5.0u19(b01) (Bug ID:2174418)
State 10-Fix Delivered, bug
Priority: 1-Very High
Related Bugs 6288100 , 6410798 , 6614506 , 6808536
Submit Date 09-OCT-2007
Description
First of all, note that this bug is very linked to bug 6614506 :
   jmx interop regression when Server is over JDK6 and Client over JDK5

Indeed, the problem concerns a remote call to getMBeanInfo using rmi/iiop.
The particularity of this test failure compared to bug 6614506 is that :
1) only model MBean is concerned
2) the test fails for all interop configuration, that is :
- server runs on JDK5 and client on JDK6
- server runs on JDK6 and client on JDK5

For these reasons, I prefer to create another bug.
Then close it as duplicated if needed.

The stack trace on client side is :
java.rmi.MarshalException: CORBA MARSHAL 1398079699 Maybe; nested exception is: 
	org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
	at com.sun.corba.se.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:197)
	at javax.rmi.CORBA.Util.mapSystemException(Util.java:67)
	at org.omg.stub.javax.management.remote.rmi._RMIConnection_Stub.getMBeanInfo(Unknown Source)
	at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.getMBeanInfo(RMIConnector.java:1031)
	at javasoft.sqe.jmx.test.functional.SupportedMBeanInfoTypesTest.run(SupportedMBeanInfoTypesTest.java:168)
	at javasoft.sqe.jmx.share.TestStarter.<init>(TestStarter.java:28)
	at javasoft.sqe.jmx.share.TestStarter.main(TestStarter.java:79)
Caused by: org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
	at com.sun.corba.se.impl.logging.ORBUtilSystemException.valuehandlerReadException(ORBUtilSystemException.java:6500)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1045)
	at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
	at com.sun.jmx.remote.internal.PInputStream.read_value(Unknown Source)
	... 5 more
Caused by: java.io.StreamCorruptedException: 
	at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2365)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectUsingFVD(IIOPInputStream.java:1560)
	at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:398)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
	... 7 more
Caused by: org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
	at com.sun.corba.se.impl.logging.ORBUtilSystemException.valuehandlerReadException(ORBUtilSystemException.java:6500)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1045)
	at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:756)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:325)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
	at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1892)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2311)
	... 12 more
Caused by: java.io.StreamCorruptedException: 
	at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2365)
	at com.sun.corba.se.impl.io.IIOPInputStream.defaultReadObjectDelegate(IIOPInputStream.java:570)
	at com.sun.corba.se.impl.io.InputStreamHook.defaultReadObject(InputStreamHook.java:183)
	at javax.management.modelmbean.ModelMBeanAttributeInfo.readObject(ModelMBeanAttributeInfo.java:514)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at com.sun.corba.se.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1694)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectUsingFVD(IIOPInputStream.java:1548)
	at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:398)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
	... 20 more
Caused by: org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
	at com.sun.corba.se.impl.logging.ORBUtilSystemException.valuehandlerReadException(ORBUtilSystemException.java:6500)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1045)
	at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1892)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2311)
	... 33 more
Caused by: java.io.StreamCorruptedException: 
	at com.sun.corba.se.impl.io.IIOPInputStream.inputRemoteMembersForReadFields(IIOPInputStream.java:2089)
	at com.sun.corba.se.impl.io.IIOPInputStream.readFields(IIOPInputStream.java:2008)
	at com.sun.corba.se.impl.io.InputStreamHook.readFields(InputStreamHook.java:216)
	at javax.management.modelmbean.DescriptorSupport.readObject(DescriptorSupport.java:1313)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at com.sun.corba.se.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1694)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1212)
	at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
	... 36 more
Caused by: org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
	at com.sun.corba.se.impl.logging.ORBUtilSystemException.valuehandlerReadException(ORBUtilSystemException.java:6500)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1045)
	at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1892)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputRemoteMembersForReadFields(IIOPInputStream.java:2070)
	... 49 more
Caused by: java.io.StreamCorruptedException: 
	at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2365)
	at com.sun.corba.se.impl.io.IIOPInputStream.defaultReadObjectDelegate(IIOPInputStream.java:570)
	at com.sun.corba.se.impl.io.InputStreamHook.defaultReadObject(InputStreamHook.java:183)
	at java.util.HashMap.readObject(HashMap.java:1053)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at com.sun.corba.se.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1694)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1212)
	at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
	... 52 more
Caused by: org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
	at com.sun.corba.se.impl.logging.ORBUtilSystemException.valuehandlerReadException(ORBUtilSystemException.java:6500)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1045)
	at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1892)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2311)
	... 65 more
Caused by: java.io.InvalidClassException: javax.management.Descriptor; UnsupportedOperationException accessing no-arg constructor
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1157)
	at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
	at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
	... 68 more
Caused by: java.lang.UnsupportedOperationException
	at com.sun.corba.se.impl.io.ObjectStreamClass.newInstance(ObjectStreamClass.java:931)
	at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1143)
	... 72 more
[SQE]  class java.rmi.MarshalException==>CORBA MARSHAL 1398079699 Maybe; nested exception is: 
	org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
Posted Date : 2007-10-09 11:49:31.0
Work Around
N/A
Evaluation
The problem may be related to the addition of readObject methods to javax.management.MBeanInfo and .MBeanFeatureInfo with the addition of Descriptors to each.  The method readObject(ObjectInputStream in) starts by doing in.defaultReadObject() and then reads a byte using in.read().  If the object being deserialized comes from JDK 5 then there was no writeObject, which means that in.read() should return -1 for EOF.  And it does do that with RMI/JRMP.  But with RMI/IIOP apparently it gets deeply confused.  You can make the problem go away by testing in.available() > 0 in these methods, and deleting the useless readObject() methods in the various ModelMBean*Info classes.  But you also have to delete ModelMBeanInfoSupport.readObject(), and that method is not useless, so this is not an acceptable fix.
Posted Date : 2007-11-13 17:32:19.0

Reassigning to the category for RMI/IIOP serialization, since this is clearly not a bug in the JMX code.
Posted Date : 2008-07-22 09:24:29.0

  xxxxx@xxxxx   wrote:
> Hi Ken,
>
> I'm Shanliang from jmx team, I'm studying the bugs and trying to find a workaround in JMX.
>
> I have a question about iiop serialization, I have the following 3 situations:
>
> 1) My class does not implement the method readObject(...)
>
> 2) My class implements the method readObject(...) as:
> private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
>     // do nothing
> }
>
> 3)  My class implements the method readObject(...) as:
> private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
>     in.defaultReadObject();
> }
>
> I found that 1) and 2) got same results, is it as expected?
I'm not sure at this point.
>
> 2) and 3) are different, in fact 3) reproduces the bugs.
Good, that should provide a much simpler test case.  Do you have writeObject
methods defined in cases 2 or 3?
>
>
> If I comment the call in.defaultReadObject() from some JMX classes, the bug disperse.
>
Thanks for the info.  I'll update the corba.evolve test to include the extra cases.

Ken.
Posted Date : 2008-09-11 07:10:12.0
Comments
  
  Include a link with my name & email   

Submitted On 09-NOV-2007
IAslanidis
Will this be fixed for both 1.5 and 1.6? When is it expected to get fixed?

Thanks for the reply.


Submitted On 23-JUL-2008
dav
If this takes eight months to get put into the correct category, one can imagine how long it might take before it gets fixed. :)



PLEASE NOTE: JDK6 is formerly known as Project Mustang