Solved

VC++ app built in VS2012 crashes when run for the first time, then doesn't crash on subsequent runs

Posted on 2014-11-03
15
408 Views
Last Modified: 2014-11-05
I have a VC++ application that I had been compiling in Visual Studio 2012 on a Windows 7 32-bit machine. The application (.exe) would run fine on whatever machine I tried to run it on.   However, I've run into a problem recently.  I've ported the code over to a Windows 7 64-bit machine, on which I also have Visual Studio 2012 installed.  Ever since I changed machines (from 32-bit to 64-bit), I've noticed something strange (and very irritating).  After compiling the .exe file, when I launch this .exe for the FIRST TIME on some other machine, the .exe very often will crash on this FIRST RUN (launch), either immediately after launching the application itself, or when opening an input file just after launching the program.  However, when I re-launch this .exe, no more crash.  I can generally launch this .exe many many times and still no crash.  It's as if something on the machine needed to be initialized by the first program launch.  So that after that first program launch (and crash), the .exe is then able to run fine because whatever needed to be initialized HAS INDEED BEEN INITIALIZED (this is just a guess, of course).

This is very frustrating.

There is no message box with any meaningful detail accompanying the crash.  Instead, there's just a windows dialog saying "Program XYZ has stopped working.   A problem caused the program to stop working correctly.  Windows will close the program and notify you if a solution is available."  

This is a tough bug to fix.  any help would be GREATLY APPRECIATED!!!!!

Thanks very much.
0
Comment
Question by:cjm20
  • 6
  • 4
  • 3
  • +1
15 Comments
 
LVL 86

Expert Comment

by:jkr
ID: 40420836
What do you get when you try the 1st run under Dependency Walker's (www.dependencywalker.com) 'Profile' mode (be sure to install the 32bit version for that test)?
0
 

Author Comment

by:cjm20
ID: 40420848
good suggestion. forgot about dependency walker.  I'll give it a shot and letcha know how it turns out.  Thank you.
0
 
LVL 86

Expert Comment

by:jkr
ID: 40420854
Good luck! ;o)
0
 
LVL 32

Expert Comment

by:sarabande
ID: 40421323
did you check event viewer? is the crash only with release version?

if it happens with debug version as well, you could run the program from visual studio and the debugger should have a user break when crashing.

if it is in release version only you might add trace logs into functions to narrow down the location where the crash happened. the logs should open a log file in append mode, write the log, and close the file after each log. that way you can see after a crash which function was entered but not left.

Sara
0
 

Author Comment

by:cjm20
ID: 40421620
JKR, i gave dependency walker a shot: it's reporting the following errors and warnings:

Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

Depedency Walker also gives the following error message: "Error opening file. The system cannot find the file specified (2):" on the following list of DLLs:

API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL
DCOMP.DLL
IESHIMS.DLL

Having said all this, I'm not sure if the above DLLs and errors are actually the issue. The main reason I say this is that when I run Dependency Walker on the "good" .exe (that being the .exe I built on the Windows 7 32-bit machine), I GET THE EXACT SAME LIST OF ERRORS AND WARNING, VERBATIM.  And the "good" .exe does NOT crash.

I've seen some posts online regarding the way Microsoft has changed the code within the App class's member function AddToRecentFileList(....).  I am calling this function in my code as follows:

AfxGetApp()->AddToRecentFileList(pszPath);

where pszPath is defined as follows:

const char* const pszPath;
0
 

Author Comment

by:cjm20
ID: 40421659
Sara, I haven't tried the event viewer approach but will give it a shot.  As for debug versus release mode, the crash is much more repeatable in release mode than debug mode.  However, I HAVE been able to get it to crash in debug mode. when I did, the call stack took me to AfxGetApp()->AddToRecentFileList(pszPath) (which I just referenced above in the post back to JKR).  I should have made a better effort at that time (of the crash) to investigate the circumstances, but i didn't, so now I just working from memory....not good :) ....
0
 
LVL 32

Expert Comment

by:sarabande
ID: 40422007
AfxGetApp()->AddToRecentFileList(pszPath);
 where pszPath is defined as follows:
 const char* const pszPath;
if pszPath is not initialized you should do it.

why are you using a const pointer pointing to a const char? it is not possible to assign a valid path to the variable beside of casting to non-const.

can you post the whole code around the statement?

Sara
0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

Author Comment

by:cjm20
ID: 40422105
To be honest, I've inherited this legacy code. So, the previous programmer (for whatever reason) apparently thought it was a good idea to use const char* const.  Here are the code basics surrounding the call to AfxGetApp()->AddToRecentFileList(pszPath):

OnFileOpen()
{
CString strFileNameAndPath = "";
CFileDialog dlg;
dlg.DoModal();

strFileNameAndPath = dlg.GetPathName();

OpenFile(strFileNameAndPath);

}


BOOL CMainFrame::OpenFile(const *char const pszPath)
{

ifstreamex strFile(pszPath);

//do some file reading with the strFile object

//close the file reading object
strFile.close();

//add the file name to the list of recently opened files
AfxGetApp()->AddToRecentFileList(pszPath);

}
0
 

Author Comment

by:cjm20
ID: 40422181
OK, I was able to fetch some info regarding the crash (when running in RELEASE mode), as follows:

When the crash occurs, I get a windows dialog with the following info:

"An unhandled win32 exception occurred in MyApplication.exe [2844]."

This windows dialog gave me a chance to use VS2012 to debug.  So I proceeded....

The VS2012 debugger opened, and I got the following Visual Studio message box:

"Unhandled exception at 0x00B77ABB in MyApplication.exe: 0xC00000005: Access violation reading location 0x00000288."

This looks like a fairly typical array out of bounds issue....

In VS2012's output window, the following LONG list was shown:

'MyApplication.exe' (Win32): Loaded 'C:\Program Files (x86)\MyApplicationFolder\MyApplication.exe'. Module was built without symbols.
'MyApplicationr.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'MyApplicationr.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\glu32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\opengl32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\lpk.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\usp10.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ddraw.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dciman32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\setupapi.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oleaut32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\devobj.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dwmapi.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winmm.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wsock32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ws2_32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\nsi.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wininet.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-downlevel-user32-l1-1-0.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-downlevel-shlwapi-l1-1-0.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shlwapi.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-downlevel-version-l1-1-0.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\version.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-downlevel-normaliz-l1-1-0.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\normaliz.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\iertutil.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\api-ms-win-downlevel-advapi32-l1-1-0.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\userenv.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\profapi.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msimg32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winspool.drv'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shell32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18201_none_ec80f00e8593ece5\comctl32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\uxtheme.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oledlg.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_72d576ad8665e853\GdiPlus.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oleacc.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\imm32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msctf.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\nvinit.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\PGPmapih.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\PGPhk.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\comctl32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\WindowsCodecs.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntmarta.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\Wldap32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\IPHLPAPI.DLL'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winnsi.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dhcpcsvc.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\clbcatq.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wbem\wbemprox.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wbemcomn.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptsp.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rsaenh.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\RpcRtRemote.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wbem\wbemsvc.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wbem\fastprox.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdsapi.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\comdlg32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\propsys.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\NV\ig7icd32.dll'. Cannot find or open the PDB file.
'MyApplication.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ig7icd32.dll'. Cannot find or open the PDB file.
The thread 0x111c has exited with code 0 (0x0).
The thread 0x868 has exited with code 0 (0x0).
The thread 0x1124 has exited with code 0 (0x0).
The thread 0xc8c has exited with code 0 (0x0).
Unhandled exception at 0x00B77ABB in MyApplication.exe: 0xC0000005: Access violation reading location 0x00000288.

And, the Call Stack looks like this:

 MyApplication.exe!00b77abb()      Unknown
 [Frames below may be incorrect and/or missing, no symbols loaded for MyApplication.exe]      
 MyApplication.exe!00b51970()      Unknown
 MyApplication.exe!00c32467()      Unknown
 MyApplication.exe!00c336f7()      Unknown
 MyApplication.exe!00c2ee55()      Unknown
 MyApplication.exe!00c2f5b7()      Unknown
 user32.dll!750762fa()      Unknown
 user32.dll!75076d3a()      Unknown
 user32.dll!75076ce9()      Unknown
 user32.dll!75080d27()      Unknown
 user32.dll!75080d4d()      Unknown
 opengl32.dll!6ebf60fb()      Unknown
 user32.dll!750762fa()      Unknown
 user32.dll!75076d3a()      Unknown
 user32.dll!75076ce9()      Unknown
 user32.dll!750777c4()      Unknown
 MyApplication.exe!00c3bc1e()      Unknown
 MyApplication.exe!00c3bc8c()      Unknown
 MyApplication.exe!00c3c293()      Unknown
 MyApplication.exe!00c3c450()      Unknown
 MyApplication.exe!00d62dcc()      Unknown
 FMyApplication.exe!00d62ef4()      Unknown
 kernel32.dll!7528338a()      Unknown
 ntdll.dll!77439f72()      Unknown
>ntdll.dll!77439f45()      Unknown

So, that's all the detail I've got to go on at the moment.  I'm currently combing my code looking for any arrays which I might be accessing prior to setting the size, etc.  

But please don't hesitate to offer up any advice.....
0
 
LVL 86

Expert Comment

by:jkr
ID: 40423174
>>"Unhandled exception at 0x00B77ABB in MyApplication.exe: 0xC00000005: Access
>>violation reading location 0x00000288."

The read address indeed looks completely off. Can you try tho set the linker set to generate a map file when building your executable? Wiuth that map file, you can locate the faulting code like this: Consider e.g.

#include <windows.h>
#include <stddef.h>
#include <stdio.h>

LONG
WINAPI
ExceptionHandler(LPEXCEPTION_POINTERS pe) {

    char acModule[MAX_PATH];

    MEMORY_BASIC_INFORMATION mbi;
    HMODULE hMod;

    VirtualQuery (pe->ExceptionRecord->ExceptionAddress,&mbi,sizeof(mbi));

    ptrdiff_t RVA = (char*)pe->ExceptionRecord->ExceptionAddress - (char*)mbi.AllocationBase;

    hMod = (HMODULE) mbi.AllocationBase;

    GetModuleFileName(hMod,acModule,sizeof (acModule));

    printf( "Detected Exception in %s at RVA 0x%08X\n", acModule, RVA);

    return EXCEPTION_EXECUTE_HANDLER;
}

void FaultingFunction () {

    LONG* p = NULL;
    *p = 42;
}

void main(){

    SetUnhandledExceptionFilter (ExceptionHandler);
    FaultingFunction ();
}

Open in new window


(compiled with "cl rvaxcept.cpp /link /map")

which prints

Detected Exception in C:\tmp\cc\rvaxcept.exe at RVA 0x00001088

The map file is

rvaxcept

[time stamp]

Preferred load address is 00400000

Start         Length     Name                   Class
0001:00000000 00004938H .text                   CODE
[...]

 Address         Publics by Value              Rva+Base     Lib:Object

0001:00000000       _ExceptionHandler@4        00401000 f   rvaxcept.obj
0001:0000007a       _FaultingFunction          0040107a f   rvaxcept.obj
0001:00000092       _main                      00401092 f   rvaxcept.obj
0001:000000a7       _printf                    004010a7 f   LIBC:printf.obj
0001:000000d8       _mainCRTStartup            004010d8 f   LIBC:crt0.obj
0001:000001b7       __amsg_exit                004011b7 f   LIBC:crt0.obj
[...]

You can see the 'Rva+Base' column, base is given as 'Preferred load address is 00400000'

Add that to the faulting module RVA of 0x00001088 and you get 0x00401088, then look that up in the above (i.e. the 'nearest symbol' and you can see that it is 'FaultingFunction'

0001:0000007a       _FaultingFunction          0040107a f   rvaxcept.obj
0001:00000092       _main                      00401092 f   rvaxcept.obj

The address is between main and FaultingFunction, which starts before 0x00401088, the next function is main and starts later.

(BTW, the output of the exception handler is nothing els but the debugger's stack addresses)
0
 
LVL 32

Accepted Solution

by:
sarabande earned 500 total points
ID: 40423604
This looks like a fairly typical array out of bounds issue....
no. a pointer value of 0x288  is not likely to be a pointer address at all. it is either a non-initialized pointer. or it is an offset (relative address) address within a class or struct where the pointer to structure is a null pointer. the following code would create the same error:

struct X
{
     char szany[0x288];
     char szpath[MAX_PATH+1];
};

X * px = NULL;
....
strcpy(px->szpath, "C:/temp/whatever");

Open in new window

so you should check pointers whether they were correctly initialized  or checked for not being NULL before use.

if the error can be reproduced in the debugger, you can do the following to step exactly to the line where the wrong pointer was used. go to menu debug - exceptions ... - win32 exceptions and check the checkbox right of "c000005 access violation". doing so will cause the debugger to stop immediately when the wrong pointer was detected rather than waiting for a catch handler to handle the exception. so the wrong statement would be at top of the stack window.

Sara
0
 

Author Comment

by:cjm20
ID: 40423842
>>it is either a non-initialized pointer. or it is an offset (relative address) address within a class or struct where the pointer to structure is a null pointer.

Bingo!  I was accessing a null pointer to a dialog, in an openGL drawing routine.  Because the drawing code gets called a lot (using timers and due to various user actions), this null pointer was being accessed many times over, including when the openGL window is initially drawn at program startup.  I've now installed a filter to ensure the pointer is != NULL before accessing the pointer itself.  PROBLEM SOLVED.  Thanks a million Sara (and Jkr)!!!!

One thing that's strange to me is that this is legacy code. Thus, this null pointer has been accessed for many years, and doesn't seem to have been causing issues (at least not a crash immediately after the application is launched for the first time).  This bug has only been "noticeable" since I starting compiling the code on a Windows 7 64-bit machine (VS2012).  When I was still compiling on a Windows 7 32-bit machine (VS2012), the bug, while still present in the source code, didn't cause issues (that I noticed, anyway).
0
 
LVL 16

Expert Comment

by:George Tokas
ID: 40423859
It will be helpful for you - and all of us here - to check out in debug mode what is happening in both platforms (32 - 64 bit). There should be the same null pointer accessed in both cases so there should be the same error in both cases. Maybe Sara solved the issue but it looks strange. Are you sure there isn't any - kind of - default settings read from somewhere?
0
 
LVL 32

Expert Comment

by:sarabande
ID: 40424008
When I was still compiling on a Windows 7 32-bit machine (VS2012), the bug, while still present in the source code, didn't cause issues (that I noticed, anyway).
I remember a few debug sessions where I stepped into a member function and the 'this' pointer was NULL. that did not crash as long as the function was read-only and did not dereference a pointer somehow.

in a 64 bit windows, it might be different when the "wrong" address points to protected memory  or when the mapping from 32-bit virtual address to 64-bit physical address doesn't accept the pointer value and throws an exception. note, access violation is not a c++ exception but an SEH exception issued by the operation system.

Sara
0
 
LVL 16

Expert Comment

by:George Tokas
ID: 40424143
That's the reason I asked for verification....
It will be good to know if something like that is happening for future knowledge.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now