Invalid access to memory location

Hi,

When loading a dll built with VC++ 10 (for Windows) I get the error appended below.
I am currently using ROOT v5.34/04 (installed from the binary for VC++ 10) but I get the same error with earlier versions I tried back to v5.32

Any ideas what may be causing this?

Thanks in advance

Marios


ROOT 5.34/04 (tags/v5-34-04@48259, Jan 10 2013, 17:15:27 on win32)

CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] gSystem->Load(“C:/tests/test.dll”);
C:/tests/test.dll: Invalid access to memory location.
Load Error: Failed to load Dynamic link library C:/tests/test.dll
root [1]

Hi,

Make sure you don’t mix Visual C++ versions, or Debug vs Release builds (you cannot mix runtime libraries on Windows).

Cheers, Bertrand.

Hi,

Thanks Bertrand, but this cannot be my problem: I am building simultaneously several project dll’s in the same solution, all in release mode, all with VC++ 10 and the coresponding ROOT MSI. All of my project dll’s work fine, except for one. The problem is I don’t know how to debug this and trace where the crash occurs.

Any other ideas?

Marios

Well, I don’t know, its quite difficult to debug. It depends on what is inside the failing dll… or one of its dependencies (you can see the dependencies using Dependecy Walker, for example)

Cheers, Bertrand.

In release mode the dll build without errors or warnings, it’s only when I attempt to load it that I get the error. I tried to also build it in debug mode with the Debug version of ROOT. While building in debug mode when it gets to the custom build part where it builds the CINT dictionaries it throws a Visual C++ Debug Library error window with the following:

[b]Debug Error!

Program: C\root\ROOT_BIN\bin\rootcint.exe

HEAP CORRUPTION DETECTED: after Normal bloc (#12491) at 0x00E3FF08.
CRT detected that the application wrote to memory after the end of heap buffer.[/b]

Does this say anything to you? Is there any way to get to the code at the point where it crashes?

Thanks

Try to debug it via the command line, by copying the rootcint command used to generate the dictionaries. E.g. something like:

And try to catch the error in the debugger…