AT&T Laboratories |
|||||
Note that this is a partial list of the bugs fixed - more bugs have been discovered and fixed since this list was made. omniORB 2.4.0 contains fixes for all bugs in 2.2.0 discovered up to the 22nd of January 1998.
The list:
On UNIX, omniORB server exits when the number of open file descriptors reaches the soft limit, normally 64. Fixed so that the server does not exit. The limit needs to be increased with your shell, for example 'limit descriptors 1024'
Reported by: Bernhard Ruememapp
Deadlock occurs when the destructor of an object implementation class calls CORBA::_release(CORBA::Object_ptr)
Reported by: Matthew Newhook, Duncan Grisby
Calling _sk_<interface>::_dispose()
when the object's reference count == 1 corrupts the internal object table.
Reported by: Matthew Newhook, Duncan Grisby
IDL union bug:
The stub generated for the IDL below does not compile:
union U switch(long) { case 1: double d; case 2: long e; default: short s; };
New system exceptions:
TRANSACTION_REQUIRED
TRANSACTION_ROLLEDBACK
INVALID_TRANSACTION
WRONG_TRANSACTION
Reported by: Mark Little
Memory leaks
Reported by: Mathew Barrow, Matthew Newhook
CORBA::String_member
copy ctor tests _ptr before initialising it.
Reported by: Mathew Barrow, Matthew Newhook
omniNames:
In the case when BindingIterator::next_one()
returns false, the value of binding_type
in the out argument is not initialised. This causes marshalling failures on the remote end sometimes (the value is neither nobject nor ncontext).
Reported by: Matthew Newhook
User exceptions:
The stub code to unmarshal user exception allocates the wrong size buffer for the repository ID string. This causes marshalling failures when the exception has a #pragma prefix
defined.
Reported by: Matthew Newhook, Mathew Barrow and Juergen Keil
Interface Inheritance:
// IDL interface person { attribute string ID; }; interface kid: person { attribute person mom; }; interface mother: person { attribute person child; }; // C++ kid_ptr k = ...; // k is a remote object person_ptr a = k->mom(); // k actually returns an object ref // of interface mother mother_ptr m = mother::_narrow(a); assert(CORBA::is_nil(m) != 0); // Bug: assertion failed.This bug is fixed but requires both sides to have the stub of all the interfaces linked into the executable. The next release will remove this restriction.
Wrong typedef for CORBA::ORBid
Wrong signature for CORBA::ORB_init()
Reported by: Mark Little
Port to run under x86 linux, glib 2.0.4, gcc2.7.2.2
Reported by: Marcel Ruff
Sequence of array does not work
// IDL typedef float rc[3]; typedef sequence rcSeq; interface Ri { void Dummy(in rcSeq colors); };
Wrong stub for
// IDL typedef Object O;
Port to AIX 4.2
Reported by: Andrey Slepuhin
omniidl2 does not detect name clashes between identifiers that differ in case only.
// Extract from OTS IDL typedef ... Coordinator; typedef ... Terminator; struct TransIdentity { Coordinator coordinator; Terminator terminator; otid_t otid; };IDL compiler should report name clashes between Coordinator-coordinator and Terminator-terminator.
catior SEGV when supplied with a stringified IOR with a few digits missing
Reported internally.
Using 'c' as the name of an OUT/INOUT variable length argument in an operation clashes with an internal variable used by the proxy stub code.
Reported internally.
The Release The new release is currently in the final stages of testing, and will be released in the next few weeks. For details of other features contained in the new release, see the message posted on omniorb-list.
For comments, suggestions and further information please contact us.
Copyright © 2001 AT&T Laboratories Cambridge