Hi, my name is Smolenic Andrei and I am a Phd student at the Stefan cel
Mare University of Suceava, Romania. I've reached a point in my research
where I need to compare some CORBA implementations. I've chosen TAO and
MICO. First I've created a TAO based client-server distributed application
and all went well. At the moment I've come to a halt with the MICO
approach. Let me try to explain the problem.

Setup: Windows 7 64 bit / Visual Studio 2010 Ultimate.
I downloaded the MICO sources and built them using the VS compiler (nmake
/f Makefile.win32). All went well so far. Next i've created a console app
to test the connectivity with the naming service.
I've applied the following config to my project:
- added D:\mico\win32-bin and D:\mico\include to C/C++ ->Additional
Include Directories
- added D:\mico\win32-bin\lib to Linker->Additional Library Directories
- added mico2313.lib and micocoss2313.lib to Linker->Input
- i've compiled the classic account idl file and added the resulting
account.h /.cc to the project
- i've implemented the required servant

And the relevant piece of code:

#include "account.h"
#include "coss\CosNaming.h"
...
int main()
{
  int argc = 4;
  char*        argv[4];
  argv[0] = "server";
  argv[1] = "-ORBNoResolve";
  argv[2] = "-ORBInitRef";
  argv[3] = "NameService=corbaloc::127.0.0.1:45678/NameService";

  CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);

  CORBA::Object_var poaobj = orb->resolve_initial_references ("RootPOA");
  PortableServer::POA_var poa = PortableServer::POA::_narrow (poaobj);
  PortableServer::POAManager_var mgr = poa->the_POAManager();

  PortableServer::Servant account_servant = new Account_impl;
  CORBA::Object_var the_account = account_servant->_this();

  CORBA::Object_var nsobj = orb->resolve_initial_references("NameService");
  CosNaming::NamingContext_var nc=CosNaming::NamingContext::_narrow (nsobj);

  CosNaming::Name name;
  name.length (1);
  name[0].id = CORBA::string_dup ("testname");
  name[0].kind = CORBA::string_dup ("");

  nc->rebind (name, the_account);

  return 0;
}

The problem is that when the narrowing of nsobj to
CosNaming::NamingContext occurs an CORBA::INV_POLICY is raised (but just
in the VS output) and the execution moves on. Then when the rebinding
takes place i get "Access violation reading location 0xfdfdfdfd". It is my
belief that this access violation occurs because the naming service wasn't
properly resolved/narrowed in the first place, not being able to
bind/rebind to a 'fake' naming context.

I have searched around the web for a solution, i've documented myself
about the policies, about the exception itself but i have yet to find an
answer about what's going on.

I start the naming service daemon with the following command:
nsd -ORBNoResolve -ORBDebug All -ORBIIOPAddr inet:127.0.0.1:45678

Maybe if someone has the time to give me a hint I would greatly appreciate
it. Thanks,

Smolenic Andrei

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
Mico-devel mailing list
Mico-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mico-devel

Reply via email to