[omniORB] Freeing mismatched memory.

Henrik Schulz henrik.schulz@anite-systems.lu
Wed, 03 Feb 1999 19:56:03 +0100


Hi ,
perhaps someone who knows much better the ORB libs than me, might have
an idea about the following.
Assumed the interface

CORBA::UShort A::member(const char *name,char* &firstname)
  {
 char *xyz;
  ....

  if(!(firstname = new char[strlen(xyz)+1]))
    Warning ....
  strcpy(firstname,xyz);

 return 0;
 }

After having processed the member-function, the reference arg
"firstname" is processed within the omniORB libs for transmission,
somewhere within this processing Rational's Purify creates the following
message during RT, which looks frightening:

[E] FMM: Freeing mismatched memory in CORBA::string_free(char *) {1
occurrence}
    Address 0x03cb0030 points into a HeapAlloc'd block in heap
0x03230000
    Location of free attempt
        CORBA::string_free(char *)+0xa
[E:\apps\omniORB\bin\x86win32\omniORB260_rt.dll ip=0x10007e4a]

It seems the memory of the arg "firstname" is freed by one of the CORBA
objects own functions, but I don't know , what happens in between. we
are using omniORB 2.6.1

Any help are welcome, thanx in advance.


Henrik.


--
Henrik Schulz
Anite-Systems
mailto:Henrik.Schulz@Anite-Systems.lu