<HTML dir=ltr><HEAD><TITLE>Re: [omniORB] omniorb 4.1.3 and large messages</TITLE>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.6000.16788" name=GENERATOR></HEAD>
<BODY>
<DIV id=idOWAReplyText48489 dir=ltr><BR>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>Van:</B> Michael [mailto:omniorb@bindone.de]<BR><B>Verzonden:</B> do 22-1-2009 15:26<BR><B>Aan:</B> Will Denissen; 'omniorb-list@omniorb-support.com'<BR><B>Onderwerp:</B> Re: [omniORB] omniorb 4.1.3 and large messages<BR></FONT><BR></DIV>
<DIV>
<P><FONT size=2>You can change giopMaxMsgSize in omniORB.cfg to a higher value. You<BR></P>
<DIV dir=ltr><FONT face=Arial color=#000000 size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face=Arial color=#0000ff size=2>The giopMaxMsgSize is the limit for which omniorb will throw a CORBA::MARSHAL exception.</FONT></DIV>
<DIV dir=ltr><FONT face=Arial color=#0000ff>So raising the value would only make the DIM range of unkown behaviour larger.</FONT></DIV>
<P>shouldn't use arrays, because they are allocated on the stack (therefore</P>
<P></FONT><FONT color=#0000ff><FONT face=Arial size=2>Is there an possibility/option to let the server allocate on the heap? </FONT><FONT face=Arial size=2>It would probably solve these kinds of problems.</FONT></FONT></P></DIV><FONT face=Arial size=2></FONT><FONT size=2>
<P><BR>I would assume the different exceptions), use a sequence instead<BR>(typedef sequence&lt;octet&gt; OctSeq)</P>
<P><FONT face=Arial color=#0000ff>I am not in the position to modify types.<BR></FONT><BR>Will Denissen wrote:<BR>&gt; Dear Duncan,<BR>&gt;&nbsp;<BR>&gt; I have modified the standard echo example into<BR>&gt; one simple function st_fi with one inout parameter of a big fixed size<BR>&gt; structure type.<BR>&gt;&nbsp;<BR>&gt; Depending on the size of the dimension DIM, the client and server react<BR>&gt; differently (see echo.idl)<BR>&gt;&nbsp;<BR>&gt; --- echo.idl<BR>&gt; ------------------------------------------------------------------------<BR>&gt; ------<BR>&gt; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Client:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Server:<BR>&gt;&nbsp;<BR>&gt; //const long DIM = 2097152; //&nbsp; 2MB&nbsp;&nbsp; CORBA::MARSHAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK<BR>&gt; //const long DIM = 2097100; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::MARSHAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK<BR>&gt; //const long DIM = 2097000; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::COMM_FAILURE<BR>&gt; Segmentation Fault after a while<BR>&gt; //const long DIM = 1100000; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::COMM_FAILURE<BR>&gt; Segmentation Fault after a while<BR>&gt; //const long DIM = 1048576; //&nbsp; 1MB&nbsp;&nbsp; sys exc TRANSIENT<BR>&gt; Segmentation Fault after a while<BR>&gt; //const long DIM = 1000000; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK<BR>&gt;&nbsp;<BR>&gt; const long&nbsp;&nbsp; DIM = 1048576;<BR>&gt;&nbsp;<BR>&gt; struct st_fi_t {<BR>&gt;&nbsp;&nbsp; octet x[DIM];<BR>&gt; };<BR>&gt;&nbsp;<BR>&gt; interface Echo {<BR>&gt;&nbsp;&nbsp; void st_fi(inout st_fi_t p1);<BR>&gt; };<BR>&gt;<BR>&gt; --- end of echo.idl<BR>&gt; ------------------------------------------------------------------------<BR>&gt;&nbsp;<BR>&gt;&nbsp;<BR>&gt; Have you any idea why omniorb is reacting like this?<BR>&gt; How do I know what the exact bounderies are that will give a robust<BR>&gt; correctly working omniorb?<BR>&gt; Is it possible to build in extra checks into omniorb to prevent/detect<BR>&gt; this kind of unwanted behaviour?<BR>&gt;&nbsp;<BR>&gt; PS:<BR>&gt; If you need to reproduce the results.<BR>&gt; The server implementation of st_fi is just empty (see serv.cc).<BR>&gt; The client just calls st_fi once with it parameter allocated on the heap<BR>&gt; (see clnt.cc)<BR>&gt; The executables are build and started with (makefile, start_client,<BR>&gt; start_server).<BR>&gt; The used options file is sample.cfg.<BR>&gt; I am using omniorb 4.1.3 on Solaris 5.8 and gcc 4.1.2<BR>&gt;&nbsp;<BR>&gt; Will.<BR>&gt;&nbsp;<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt; ------------------------------------------------------------------------<BR>&gt;<BR>&gt; _______________________________________________<BR>&gt; omniORB-list mailing list<BR>&gt; omniORB-list@omniorb-support.com<BR>&gt; <A href="http://www.omniorb-support.com/mailman/listinfo/omniorb-list">http://www.omniorb-support.com/mailman/listinfo/omniorb-list</A><BR><BR></P></FONT><br clear=all> -- 
The information contained in this communication and any attachments is confidential and may be privileged, and is for the sole use of the intended recipient(s). Any unauthorized review, use, disclosure or distribution is prohibited.  Unless explicitly stated otherwise in the body of this communication or the attachment thereto (if any), the information is provided on an AS-IS basis without any express or implied warranties or liabilities.  To the extent you are relying on this information, you are doing so at your own risk.   If you are not the intended recipient, please notify the sender immediately by replying to this message and destroy all copies of this message and any attachments. ASML is neither liable for the proper and complete transmission of the information contained in this communication, nor for any delay in its receipt. 
</BODY></HTML>