[Ace-users] Notification Service Issue: Marshalling exception for nested struct in 5.5.10, but not for 5.5.9

Rob Ratcliff rrr6399 at futuretek.com
Fri Aug 10 10:29:31 CDT 2007


    ACE VERSION: 5.5.10

    HOST MACHINE and OPERATING SYSTEM:

    Windows XP

    TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
    COMPILER NAME AND VERSION (AND PATCHLEVEL):

    Windows XP, MS Visual C++ 8 (no service pack applied)

    THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
    specific file, simply state which one]:

    config-win32.h

    THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
    use a link to a platform-specific file, simply state which one
    (unless this isn't used in this case, e.g., with Microsoft Visual
    C++)]:

    AREA/CLASS/EXAMPLE AFFECTED:

    Notification Service

    DOES THE PROBLEM AFFECT: EXECUTION

    SYNOPSIS:
      Marshaling exception in TAO 5.5.10 for a sequence of complex nested
      structs sent from the latest version of JacORB.
      TAO 5.5.9 transfers it without the exception.

    DESCRIPTION:
      When I send a sequence of nested structs from JacORB to the 5.5.10
Notification service, I get the
      marshalling exception in the attached log. It is possible that I
have a bug in creating the Notification message
      that was triggered the error in 5.5.10 and not 5.5.9, but I
haven't found it yet.

Here is the debug log of the case with 5.5.10 and 5.5.9:


JacORB stack trace:
org.omg.CosNotification.StructuredEvent at 1ab8f3f
loading class = class org.omg.CORBA.MARSHAL
constructor = public
org.omg.CORBA.MARSHAL(java.lang.String,int,org.omg.CORBA.CompletionStatus)
org.omg.CORBA.MARSHAL: Server-side Exception: null  vmcid: 0x0  minor
code: 0  completed: No
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
Source)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at
org.jacorb.orb.SystemExceptionHelper.read(SystemExceptionHelper.java:225)
        at org.jacorb.orb.ReplyReceiver.getReply(ReplyReceiver.java:321)
        at org.jacorb.orb.Delegate.invoke_internal(Delegate.java:1074)
        at org.jacorb.orb.Delegate.invoke(Delegate.java:939)
        at org.omg.CORBA.portable.ObjectImpl._invoke(Unknown Source)
        at
org.omg.CosNotifyChannelAdmin._StructuredProxyPushConsumerStub.push_structured_event(_StructuredProxyPushConsumerStub.jav
a:230)
        at
com.notification.EventPublisher.sendEvent(EventPublisher.java:188)
        at java.lang.Thread.run(Unknown Source)


TAO 5.5.10 Offending part of dump:

00 00 00 00 00 00 00 00  00                        .........      
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - Connection_Handler[1528]::handle_input, handle = 1528/1528
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - Transport[1528]::handle_input
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - Transport[1528]::process_queue_head, 0 enqueued
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - Transport[1528]::handle_input_parse_data, enter
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - Transport[1528]::handle_input_parse_data, read 1032 bytes
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - GIOP_Message_State::parse_message_header_i
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - GIOP_Message_State::get_version_info
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - GIOP_Message_State::get_byte_order_info
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - Connection_Handler[1528]::handle_input, handle =
1528/1528, retval = 0
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - ORB_Core::run, handle_events() returns 1
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - ORB_Core::run, calling handle_events()
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - ORB_Core::run, handle_events() returns 0
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - ORB_Core::run, calling handle_events()
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4564) - Connection_Handler[1528]::handle_input, handle = 1528/1528
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4564) - Transport[1528]::handle_input
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4564) - Transport[1528]::process_queue_head, 0 enqueued
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4564) - Transport[1528]::handle_input_missing_data_message, enter
(missing data == 22672)
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4564) - Transport[1528]::handle_input_missing_data_message, read
bytes 22672
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4564) - Transport[1528]::process_parsed_messages, entering
(missing data == 0)
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - ORB_Core::run, handle_events() returns 0
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - ORB_Core::run, calling handle_events()
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4564) - GIOP_Message_Base::dump_msg, recv GIOP v1.2 msg, 23692
data bytes, other endian, Type Request[20]
...
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4564) - GIOP_Message_Base::dump_msg, send GIOP v1.2 msg, 56 data
bytes, my endian, Type Reply[20]
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|GIOP
message - HEXDUMP 68 bytes
47 49 4f 50 01 02 01 01  38 00 00 00 14 00 00 00   GIOP....8.......
02 00 00 00 00 00 00 00  1e 00 00 00 49 44 4c 3a   ............IDL:
6f 6d 67 2e 6f 72 67 2f  43 4f 52 42 41 2f 4d 41   omg.org/CORBA/MA
52 53 48 41 4c 3a 31 2e  30 00 8b 01 00 00 00 00   RSHAL:1.0.......
01 00 00 00                                        ....           
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4640) - Transport[1528]::cleanup_queue, byte_count = 25
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4640) - Transport[1528]::cleanup_queue, after transfer, bc = 0,
all_sent = 1, ml = 0
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4640) - Transport[1528]::drain_queue_helper, byte_count = 25,
head_is_empty = 1
Aug 09 22:19:47.843
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|4640) - Transport[1528]::drain_queue_i, helper retval = 1
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - Connection_Handler[1528]::handle_input, handle = 1528/1528
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - Transport[1528]::handle_input
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - Transport[1528]::process_queue_head, 0 enqueued
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - Transport[1528]::handle_input_parse_data, enter
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - Transport[1528]::handle_input_parse_data, read 88 bytes
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - GIOP_Message_State::parse_message_header_i
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - GIOP_Message_State::get_version_info
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - GIOP_Message_State::get_byte_order_info
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - Transport[1528]::process_parsed_messages, entering
(missing data == 0)
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - ORB_Core::run, handle_events() returns 0
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5528) - ORB_Core::run, calling handle_events()
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - GIOP_Message_Base::dump_msg, recv GIOP v1.2 msg, 76 data
bytes, other endian, Type Request[22]
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|GIOP
message - HEXDUMP 88 bytes
47 49 4f 50 01 02 00 00  00 00 00 4c 00 00 00 16   GIOP.......L....
03 00 00 00 00 00 00 00  00 00 00 23 14 01 0f 00   ...........#....
4e 55 54 8e d8 bb 46 24  f4 00 00 01 00 00 00 01   NUT...F$........
00 00 00 04 00 00 00 01  00 00 00 05 00 00 00 00   ................
00 00 00 0e 5f 6e 6f 6e  5f 65 78 69 73 74 65 6e   ...._non_existen
74 00 00 00 00 00 00 00                            t.......       
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|TAO
(1124|5264) - GIOP_Message_Base::dump_msg, send GIOP v1.2 msg, 13 data
bytes, my endian, Type Reply[22]
Aug 09 22:19:47.859
2007@<local_host>@1124 at LM_DEBUG@C:\corba\tao-5.5.10\bin\Notify_Service.exe|GIOP
message - HEXDUMP 25 bytes
47 49 4f 50 01 02 01 01  0d 00 00 00 16 00 00 00   GIOP............
00 00 00 00 00 00 00 00  00                        .........      

TAO 5.5.9 dump showing successful completion:

Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::cleanup_queue, byte_count = 25
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::cleanup_queue, after transfer, bc = 0,
all_sent = 1, ml = 0
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::drain_queue_helper, byte_count = 25,
head_is_empty = 1
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::drain_queue_i, helper retval = 1
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Connection_Handler[1588]::handle_input, handle = 1588/1588,
retval = 0
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - ORB_Core::run, handle_events() returns 1
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - ORB_Core::run, calling handle_events()
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Connection_Handler[1588]::handle_input, handle = 1588/1588
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::handle_input
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::process_queue_head, 0 enqueued
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::handle_input_parse_data, enter
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::handle_input_parse_data, read 1032 bytes
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - GIOP_Message_State::parse_message_header_i
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - GIOP_Message_State::get_version_info
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - GIOP_Message_State::get_byte_order_info
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Connection_Handler[1588]::handle_input, handle = 1588/1588,
retval = 0
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - ORB_Core::run, handle_events() returns 1
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - ORB_Core::run, calling handle_events()
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Connection_Handler[1588]::handle_input, handle = 1588/1588
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::handle_input
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::process_queue_head, 0 enqueued
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::handle_input_missing_data_message, enter
(missing data == 22208)
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::handle_input_missing_data_message, read
bytes 22208
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::process_parsed_messages, entering (missing
data == 0)
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - GIOP_Message_Base::dump_msg, recv GIOP v1.2 msg, 23228 data
bytes, other endian, Type Request[20]
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|GIOP
message - HEXDUMP 23240 bytes (showing first 912 bytes)
...
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|object:fbd0c0
incr refcount = 4
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|Proxyconsumer
11bf120 filter eval result = 1Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|object:fbd0c0
decr refcount = 3
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - GIOP_Message_Base::dump_msg, send GIOP v1.2 msg, 12 data
bytes, my endian, Type Reply[20]
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|GIOP
message - HEXDUMP 24 bytes
47 49 4f 50 01 02 01 01  0c 00 00 00 14 00 00 00   GIOP............
00 00 00 00 00 00 00 00                            ........       
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::cleanup_queue, byte_count = 24
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::cleanup_queue, after transfer, bc = 0,
all_sent = 1, ml = 0
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::drain_queue_helper, byte_count = 24,
head_is_empty = 1
Aug 10 09:53:59.328
2007@<local_host>@380 at LM_DEBUG@C:\corba\tao-5.5.9\bin\Notify_Service.exe|TAO
(380|332) - Transport[1588]::drain_queue_i, helper retval = 1



More information about the Ace-users mailing list