Re: comm_failure for large sequences using giop between two machines



Michael Meeks wrote:

>	Ah - a somewhat flakey version I suspect. Can you try to update to
>ORBit-2.7.2 (just released), and see if that fixes the problem.
>
I have checked out a fresh copy from CVS. The problem is still there, 
unfortunately.

>
>	If not - we need a regression test in test/everything that demonstrates
>the problem (ideally)
>
I have attached a patch which extends test/everything to reproduce this 
problem. For me test/everything then fails with an exception for 
--ORBIIOPIPv4=1 --ORBIIOPUSock=0. Can you reproduce the problem?

> - otherwise if you enable the #undef'd debug stmt
>in ORBit2/linc2/src/linc-private.h and then build (from clean -
>autotools deps suck badly in ORBit2 currently) - then we can get far
>more connection-level debug out of it.
>
>	Hopefully we can nail it easily enough then,
>
Thanks. I will try and follow the trace output when I have some more 
time spare.


-- 
Bowie Owens

CSIRO Mathematical & Information Sciences
phone  : +61 3 9545 8055
fax    : +61 3 9545 8080
mobile : 0425 729 875
email  : Bowie.Owens@csiro.au


--- orig/ORBit2/test/everything/client.c	2003-06-12 01:07:37.000000000 +1000
+++ ORBit2/test/everything/client.c	2003-06-18 14:06:38.000000000 +1000
@@ -540,6 +540,7 @@
 {
   test_SequenceServer objref;
   test_StrSeq *outArg = NULL, inArg, inoutArg, *retn;
+  test_LongSeq *long_retn;
   guint i;
   d_print ("Testing unbounded sequences...\n");
   objref = test_TestFactory_getSequenceServer (factory, ev);
@@ -576,6 +577,10 @@
   for (i=0;i<retn->_length;i++)
 	g_assert (strcmp (retn->_buffer[i], constants_SEQ_STRING_RETN[i]) == 0);
 
+  long_retn = test_SequenceServer_opMassiveSeq(objref, ev);
+  g_assert (ev->_major == CORBA_NO_EXCEPTION);
+
+  CORBA_free (long_retn);
   CORBA_free (inArg._buffer);
   CORBA_free (inoutArg._buffer);
   CORBA_free (outArg);
--- orig/ORBit2/test/everything/everything.idl	2003-03-29 03:16:14.000000000 +1100
+++ ORBit2/test/everything/everything.idl	2003-06-18 13:52:16.000000000 +1000
@@ -117,6 +117,7 @@
 		BoundedStructSeq opBoundedStructSeq(in BoundedStructSeq inArg,
 						    inout BoundedStructSeq inoutArg,
 						    out BoundedStructSeq outArg);
+		LongSeq opMassiveSeq();
 	};
   
 	typedef enum AnEnum { 
--- orig/ORBit2/test/everything/sequenceServer.c	2003-05-09 11:10:52.000000000 +1000
+++ ORBit2/test/everything/sequenceServer.c	2003-06-18 13:57:20.000000000 +1000
@@ -115,10 +115,30 @@
   return retn;
 }
 
+static  
+test_LongSeq *
+SequenceServer_opMassiveSeq(PortableServer_Servant _servant,
+						CORBA_Environment * ev) {
+  test_LongSeq *retn;
+  CORBA_long i;
+  CORBA_long n = 400000;
+
+  retn = test_LongSeq__alloc();
+  retn->_buffer = test_LongSeq_allocbuf(n);
+  retn->_length = n;
+  CORBA_sequence_set_release(retn, CORBA_TRUE);
+
+  for (i=0;i<retn->_length;i++)
+	retn->_buffer[i] = i;
+
+  return retn;
+}
+
 POA_test_SequenceServer__epv SequenceServer_epv = {
 	NULL,
 	SequenceServer_opStrSeq,
 	SequenceServer_opBoundedStructSeq,
+	SequenceServer_opMassiveSeq,
 };
 
 PortableServer_ServantBase__epv SequenceServer_base_epv = {NULL, simple_finalize, NULL};


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]