Re: comm_failure for large sequences using giop between two machines
- From: Bowie Owens <bowie owens csiro au>
- To: Michael Meeks <michael ximian com>
- Cc: orbit-list gnome org
- Subject: Re: comm_failure for large sequences using giop between two machines
- Date: Wed, 18 Jun 2003 14:32:22 +1000
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]