[omniORB] Questions about the CRT heap and omniORB 2.8.0.
Mike Bendickson
Mike.Bendickson@spanlink.com
Fri, 8 Sep 2000 09:41:45 -0500
Please disregard this message. I had an STL string that was being created
in the EXE and potentially reallocated in the DLL.
Apologies if I wasted anyones time.
Thanks,
-Mike
----- Original Message -----
From: "Mike Bendickson" <Mike.Bendickson@spanlink.com>
To: <omniorb-list@uk.research.att.com>
Sent: Wednesday, September 06, 2000 12:35 PM
Subject: [omniORB] Questions about the CRT heap and omniORB 2.8.0.
> I'm struggling a bit with the CRT code generation options in VC++.
>
> I have a DLL that is both a CORBA server and client. The DLL **hides**
all
> of the CORBA specific code from the application.
>
> I believe that omniORB is built to use the DLL CRT (/MD for release and
/MDd
> for debug). As I understand it, by using the DLL CRT in your app and
DLLs,
> you can do new/delete, malloc/free across DLL/application boundaries as
> those calls will be going against the same heap. As opposed to statically
> linking the CRT where the new/delete, malloc/free use the local heap.
>
> I'm guessing that omniORB needs to be built that way as user code and/or
> stub code makes allocations that can be freed in the omniORB DLLs or vise
> versa. Is this correct?
>
> Here's the situation that I'm having. The application statically links
the
> CRT. The DLL, that contains all CORBA specific code, uses the DLL CRT.
> Should this work? I'm getting a Debug Assertion Failure on
> _crtIsValidHeapPointer. I believe that this error occurs when you try to
> delete/free a pointer that was allocated on a different heap.
>
> Looking at the Context in the debugger the assertion is happening in:
>
> void
> GIOP_S::HandleRequest(CORBA::Boolean byteorder)
>
>
> on the dispatch call:
> .
> .
> .
> if (obj) {
> if (!obj->dispatch(*this,
> (const char *)pd_operation,
> pd_response_expected)) {
> .
> .
> .
>
> I believe I've isolated all omniORB calls to the DLL. The DLL is built
with
> a "Use run-time library" option of "Debug Multithreaded DLL". The
> application is built with a "Use run-time library" option of "Debug
> Multithreaded". Based on my understanding it seems like this should work.
>
> If the application is built to use the DLL CRT, everything works fine.
It's
> fine if I need to build it that way, I'm just concerned that I'm covering
up
> some other problem as it seems like this should work.
>
> Thanks,
> -Mike
>
>
>