mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-03-25 22:37:55 +05:00
SIGSEGV at load time of _SMeshHelper.so
This commit is contained in:
parent
8a20cf2905
commit
f3b3cfd765
@ -330,7 +330,8 @@ SMESH_Gen_i::SMESH_Gen_i( CORBA::ORB_ptr orb,
|
|||||||
PortableServer::POA_ptr poa,
|
PortableServer::POA_ptr poa,
|
||||||
PortableServer::ObjectId* contId,
|
PortableServer::ObjectId* contId,
|
||||||
const char* instanceName,
|
const char* instanceName,
|
||||||
const char* interfaceName )
|
const char* interfaceName,
|
||||||
|
bool checkNS)
|
||||||
: Engines_Component_i( orb, poa, contId, instanceName, interfaceName )
|
: Engines_Component_i( orb, poa, contId, instanceName, interfaceName )
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -356,21 +357,24 @@ SMESH_Gen_i::SMESH_Gen_i( CORBA::ORB_ptr orb,
|
|||||||
// find out mode (embedded or standalone) here else
|
// find out mode (embedded or standalone) here else
|
||||||
// meshes created before calling SMESH_Client::GetSMESHGen(), which calls
|
// meshes created before calling SMESH_Client::GetSMESHGen(), which calls
|
||||||
// SMESH_Gen_i::SetEmbeddedMode(), have wrong IsEmbeddedMode flag
|
// SMESH_Gen_i::SetEmbeddedMode(), have wrong IsEmbeddedMode flag
|
||||||
if ( SALOME_NamingService* ns = GetNS() )
|
if(checkNS)
|
||||||
{
|
{
|
||||||
CORBA::Object_var obj = ns->Resolve( "/Kernel/Session" );
|
if ( SALOME_NamingService* ns = GetNS() )
|
||||||
SALOME::Session_var session = SALOME::Session::_narrow( obj ) ;
|
|
||||||
if ( !session->_is_nil() )
|
|
||||||
{
|
{
|
||||||
CORBA::String_var str_host = session->getHostname();
|
CORBA::Object_var obj = ns->Resolve( "/Kernel/Session" );
|
||||||
CORBA::Long s_pid = session->getPID();
|
SALOME::Session_var session = SALOME::Session::_narrow( obj ) ;
|
||||||
string my_host = Kernel_Utils::GetHostname();
|
if ( !session->_is_nil() )
|
||||||
|
{
|
||||||
|
CORBA::String_var str_host = session->getHostname();
|
||||||
|
CORBA::Long s_pid = session->getPID();
|
||||||
|
string my_host = Kernel_Utils::GetHostname();
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
long my_pid = (long)_getpid();
|
long my_pid = (long)_getpid();
|
||||||
#else
|
#else
|
||||||
long my_pid = (long) getpid();
|
long my_pid = (long) getpid();
|
||||||
#endif
|
#endif
|
||||||
SetEmbeddedMode( s_pid == my_pid && my_host == str_host.in() );
|
SetEmbeddedMode( s_pid == my_pid && my_host == str_host.in() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -133,7 +133,8 @@ public:
|
|||||||
PortableServer::POA_ptr poa,
|
PortableServer::POA_ptr poa,
|
||||||
PortableServer::ObjectId* contId,
|
PortableServer::ObjectId* contId,
|
||||||
const char* instanceName,
|
const char* instanceName,
|
||||||
const char* interfaceName );
|
const char* interfaceName,
|
||||||
|
bool checkNS = true);
|
||||||
// Destructor
|
// Destructor
|
||||||
virtual ~SMESH_Gen_i();
|
virtual ~SMESH_Gen_i();
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ include_directories(
|
|||||||
${PROJECT_SOURCE_DIR}/src/SMDS
|
${PROJECT_SOURCE_DIR}/src/SMDS
|
||||||
${PROJECT_SOURCE_DIR}/src/SMESH
|
${PROJECT_SOURCE_DIR}/src/SMESH
|
||||||
${PROJECT_SOURCE_DIR}/src/SMESH_I
|
${PROJECT_SOURCE_DIR}/src/SMESH_I
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${PROJECT_BINARY_DIR}/idl
|
${PROJECT_BINARY_DIR}/idl
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
|
||||||
std::string BuildSMESHInstance()
|
std::string BuildSMESHInstanceInternal(bool checkNS)
|
||||||
{
|
{
|
||||||
CORBA::ORB_var orb;
|
CORBA::ORB_var orb;
|
||||||
{ int argc(0); orb = CORBA::ORB_init(argc,nullptr); }
|
{ int argc(0); orb = CORBA::ORB_init(argc,nullptr); }
|
||||||
@ -42,7 +42,7 @@ std::string BuildSMESHInstance()
|
|||||||
//
|
//
|
||||||
pman->activate();
|
pman->activate();
|
||||||
//
|
//
|
||||||
SMESH_Gen_i *servant = new SMESH_Gen_i(orb,poa,const_cast<PortableServer::ObjectId*>(&conId.in()),"SMESH_inst_2","SMESH");
|
SMESH_Gen_i *servant = new SMESH_Gen_i(orb,poa,const_cast<PortableServer::ObjectId*>(&conId.in()),"SMESH_inst_2","SMESH",checkNS);
|
||||||
PortableServer::ObjectId *zeId = servant->getId();
|
PortableServer::ObjectId *zeId = servant->getId();
|
||||||
CORBA::Object_var zeRef = poa->id_to_reference(*zeId);
|
CORBA::Object_var zeRef = poa->id_to_reference(*zeId);
|
||||||
CORBA::String_var ior = orb->object_to_string(zeRef);
|
CORBA::String_var ior = orb->object_to_string(zeRef);
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
std::string BuildSMESHInstance();
|
std::string BuildSMESHInstanceInternal(bool checkNS);
|
||||||
|
@ -21,7 +21,14 @@
|
|||||||
|
|
||||||
%include "std_string.i"
|
%include "std_string.i"
|
||||||
|
|
||||||
|
%{
|
||||||
|
#include "SMeshHelper.h"
|
||||||
|
%}
|
||||||
|
|
||||||
%inline
|
%inline
|
||||||
{
|
{
|
||||||
std::string BuildSMESHInstance();
|
std::string BuildSMESHInstance()
|
||||||
|
{
|
||||||
|
return BuildSMESHInstanceInternal(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -384,7 +384,8 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ):
|
|||||||
#print("==== smeshInst = lcc.FindOrLoadComponent ", engine, smeshInst, doLcc)
|
#print("==== smeshInst = lcc.FindOrLoadComponent ", engine, smeshInst, doLcc)
|
||||||
#salome.lcc.FindOrLoadComponent( "FactoryServer", "SMESH" )
|
#salome.lcc.FindOrLoadComponent( "FactoryServer", "SMESH" )
|
||||||
import SMeshHelper
|
import SMeshHelper
|
||||||
smesh_ior = SMeshHelper.BuildSMESHInstance()
|
checkNS = False
|
||||||
|
smesh_ior = SMeshHelper.BuildSMESHInstance(checkNS)
|
||||||
import SMESH
|
import SMESH
|
||||||
import CORBA
|
import CORBA
|
||||||
orb=CORBA.ORB_init([''])
|
orb=CORBA.ORB_init([''])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user