- Gemfire Native Client 7.0.1.x to 7.0.2.x
- Windows Operating System
This document provides a means to avoid a [STATUS_IN_PAGE_ERROR] error crash issue in Gemfire Native Client Application.
A GemFire Native Client Application started from a network share folder may crash with the following exception in the GemFire client log:
[error 2014/10/01 10:35:00.988346 JST ADNF37582J:8080 8224] Debug event STATUS_IN_PAGE_ERROR occurred at 6A02E8D1 in process with pid 8080
[error 2014/10/01 10:35:01.003946 JST ADNF37582J:8080 8224] Generating debug dump in file C:\Program Files\temp\Log\Conn\_Log-1403055301-0.dmp
Dump analysis further reveals that the application crashed with ExceptionCode: c0000006 (In-page I/O error).
A C0000006 error is a networking or network connectivity error. Specifically, a C0000006 error is an in page I/O error. This error occurs when an application loses its underlying network connectivity.
When an application is started from a network share, Windows loads and runs the EXE image from remote location. Thus, any connectivity problems with the network share folder (such as network going down) can cause the virtual memory manager to be unable to find a required memory page for an address in the swapfile. This will cause it to throw an C0000006 exception and crash the program image.
The easy way to avoid this issue is to start the application from local drive instead of a remote location.
If, however, you must start the native client application from a remote folder, there are options available when compiling that can prevent this issue from occurring:
- For VC++ applications, you can add /SWAPRUN:NET to the linker options, which will tell the operating system to first copy the linker output to a swap file and run the image from there. (See http://msdn.microsoft.com/en-us/library/chzz5ts6.aspx)
- For C# application, you can enable Shadow Copy feature by setting AppDomainSetup.ShadowCopyFiles=true. (See http://blogs.msdn.com/b/junfeng/archive/2004/02/09/69919.aspx)