Problem releasing ORB.



Hi, I'm having some problems running an example with ORBit2 (2.6.0)

I have the following IDL.

interface Thermostat
{
         short setTemperature(in long temp);
         void setListener(in string ior);
};

And the following client code.

#include "Thermostat.h"
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
    Thermostat thermostat;

    CORBA_Environment ev;
    CORBA_ORB orb;

    if ( argc != 2 )
    {
       printf("Expected argument\n");
       return 1;
    }

    CORBA_exception_init(&ev);
    orb = CORBA_ORB_init(&argc, argv, "orbit-local-orb", &ev);

    thermostat = CORBA_ORB_string_to_object(orb,
                                            argv[1],
                                            &ev);

    Thermostat_setTemperature(thermostat,
                              2,
                              &ev);
    Thermostat_setTemperature(thermostat,
                              20,
                              &ev);
    Thermostat_setTemperature(thermostat,
                              200,
                              &ev);

    printf("here-1\n");
    fflush(stdout);
    CORBA_Object_release(thermostat, &ev);
    printf("here-2\n");
    fflush(stdout);
    CORBA_Object_release((CORBA_Object)orb, &ev);
    printf("here-3\n");
    fflush(stdout);
    CORBA_exception_free(&ev);
    printf("here-4\n");
    fflush(stdout);
    return 0;
}

When I run the program I get:

here-1
here-2
here-3
here-4

** ERROR **: file orbit-object.c: line 146 (do_unref): assertion 
failed: (robj->refs < ORBIT_REFCOUNT_MAX && robj->refs > 0)
aborting...
Aborted


What's going on here? I've followed the examples online almost 
exactly....

Also, all of the tests that come packaged with ORBit segfault.

I have pkconfig-0.15, linc-1.0.1, glib-2.2.1, libIDL-0.8.0 and 
ORBit2-2.6.0.
All compiled from scratch on Redhat 7.2 with gcc 2.96.

Thanks for any help,

-Craig

P.S. I've figured is out, and it seems to come from the line where I 
release the ORB. I guess
the question is why, and why do the examples release the ORB? :)

P.P.S. I guess I'm just going to send this out because it's already 
been written and this may happen to someone else someday.




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