Issue 1982: GIOP fragment alignment issue for CORBA 2.3 (interop) Source: (, ) Nature: Uncategorized Issue Severity: Summary: Summary: The following issue should be fixed prior to publishing CORBA 2.3. Section 15.4.8 Fragment Message, page 15-40, of ptc/98-08-03, says: > A primitive data type of 8 bytes or smaller should never be broken across two > fragments. This text has been in the specification since GIOP 1.1. Section 15.4.1 GIOP Message Header, page 15-29, of ptc/98-08-03, contains new text under the "message size" bullet: > For GIOP version 1.2, if the second least significant bit of flags is 1, the > message_size value must be evenly divisible by 8. Resolution: resolved Revised Text: In section 15.4.1 (pg 15-29), change the last paragraph to be " For Giop version 1.2, if the second least significant bit of Flags is 1, the sum of the message size value and 12 must be evenly divisible by 8. " In section 15.4.8 on the fragment message, in page 15-40, Change " For GIOP version 1.2, fragments other than the final fragment ... " to " For GIOP version 1.2, the total length (including the message header) of a fragment other than the final fragment ... " Actions taken: September 20, 1998: received issue September 30, 1998: moved from core to interop March 8, 1999: closed issue Discussion: End of Annotations:===== Return-Path: Date: Sun, 20 Sep 1998 17:25:34 -0400 From: Bob Kukura Organization: IONA Technologies To: issues@omg.org, interop@omg.org, orb_revision@omg.org CC: cryan@iona.com Subject: GIOP fragment alignment issue for CORBA 2.3 The following issue should be fixed prior to publishing CORBA 2.3. Section 15.4.8 Fragment Message, page 15-40, of ptc/98-08-03, says: > A primitive data type of 8 bytes or smaller should never be broken across two > fragments. This text has been in the specification since GIOP 1.1. Section 15.4.1 GIOP Message Header, page 15-29, of ptc/98-08-03, contains new text under the "message size" bullet: > For GIOP version 1.2, if the second least significant bit of flags is 1, the > message_size value must be evenly divisible by 8. The problem is that these two quoted statements are contradictory, and I believe the second must be modified. The message_size field does not include the 12 byte GIOP MessageHeader, but this header does effect alignment. The byte following the MessageHeader has an alignment of 4. If message_size is divisible by 8, the message will also end with a 4 byte alignment, forcing an 8 byte primitive to be broken across two fragments. This can be fixed by changing the new 15.4.1 text quoted above to read: > For GIOP version 1.2, if the second least significant bit of flags is 1, the > remainder after dividing the message_size value by 8 must be 4. Note that the first 4 bytes following the MessageHeader of a fragment message are occupied by the 4 byte FragmentHeader_1_2, so the actual fragment payload data thus begins and ends on 8 byte boundaries, as was the intent of the RTF. -Bob