Daily Usage Issues

MapViewOfFile error

Started by amo11 on 1,472 views

started seeing this error in our legacy codebase while I was renaming a number of interfaces/classes/variables. NCrunch would appear to stop tests execution with all remaining tests marked as failed. Restarting NCrunch enabled it to complete execution of the entire test suite without further test fails (i.e. NCrunch works correctly, and the test execution shows all passing tests, which is consistent with Test Explorer in Visual Studio).

Has anyone seen this sort of problem before?



System.Exception: MapViewOfFile error (size = 317604): 8
at nCrunch.TestRuntime.RuntimeSharedMemory.handlePossibleError(IntPtr handle, String apiDetails)
at nCrunch.TestRuntime.RuntimeSharedMemory..ctor(String name, Int32 bufferSizeInBytes)
at nCrunch.TestRuntime.SharedExecutionMap..ctor(ExecutionMapSpecification specification, String hostProcessId)
at nCrunch.TestRuntime.SharedMemoryExecutionDataRecorder.initialise()
at nCrunch.TestRuntime.SharedMemoryExecutionDataRecorder..ctor(ExecutionMapSpecification[] mapSpecifications)
at nCrunch.TestExecution.TestRunnerThread.()
at nCrunch.TestExecution.TestRunnerThread.()
System.Exception: MapViewOfFile error: 8
at nCrunch.TestRuntime.RuntimeDataInspection.PersistentMemoryMappedFile.handlePossibleError(IntPtr handle, String apiDetails)
at nCrunch.TestRuntime.RuntimeDataInspection.PersistentMemoryMappedFile..ctor(String filePath, UInt32 fileSize)
at nCrunch.TestRuntime.RuntimeDataInspection.RdiSession.prepareDataPointTable(RdiRuntimeConfig config, Int32 componentMappingId, Int32 elementCount, Dictionary`2 settingOverrides)
at nCrunch.TestRuntime.RuntimeDataInspection.RdiSession..ctor(String sessionId, RdiRuntimeConfig runtimeConfig, String logDirectory, Dictionary`2 settingOverrides, RdiStorageState storageState, RdiWriterPosition defaultWriterPosition, IRdiTypeHandlingStrategyProvider typeHandlingStrategyProvider)
at nCrunch.TestRuntime.RuntimeDataInspection.MemoryMappedLog..ctor(String logDirectory, String sessionId, RdiRuntimeConfig rdiConfig, Dictionary`2 settingOverrides, RdiWriterPosition defaultWriterPosition, RdiRuntimeDataCapturerSet dataCapturerSet, IRdiTypeHandlingStrategyProvider typeHandlingStrategyProvider)
at nCrunch.TestRuntime.RuntimeDataInspection.RdiEventListener.StartListening(String logDirectory, String sessionId, RdiRuntimeConfig rdiConfig, Dictionary`2 settingOverrides, RdiWriterPosition defaultWriterPosition, RdiRuntimeDataCapturerSet dataCapturerSet, IRdiTypeHandlingStrategyProvider typeHandlingStrategyProvider)
at nCrunch.TestExecution.TestExecutionMonitor.StartMonitoringTest(ExecutingTest test)
at nCrunch.TestExecution.ExecutingTest.Start()
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.testStarted(NUnit3Message message)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.RaiseCallbackEvent(String eventArgument)
System.NullReferenceException: Object reference not set to an instance of an object.
at nCrunch.TestRuntime.RuntimeDataInspection.RdiEventListener.StopListening()
at nCrunch.TestExecution.TestExecutionMonitor.StopMonitoringTest(ExecutingTest test)
at nCrunch.TestExecution.ExecutingTest.Finish(Boolean isSuccess, String exceptionString, TimeSpan executionTime, Boolean writeExceptionToOutput, Boolean addExecutionTime)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.testFinished(EndTestMessage message)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.RaiseCallbackEvent(String eventArgument)
System.Exception: Output is already redirected
at nCrunch.TestExecution.TestExecutionMonitor.()
at nCrunch.TestExecution.TestExecutionMonitor.StartMonitoringTest(ExecutingTest test)
at nCrunch.TestExecution.ExecutingTest.Start()
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.testStarted(NUnit3Message message)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.RaiseCallbackEvent(String eventArgument)
System.NullReferenceException: Object reference not set to an instance of an object.
at nCrunch.TestRuntime.RuntimeDataInspection.RdiEventListener.StopListening()
at nCrunch.TestExecution.TestExecutionMonitor.StopMonitoringTest(ExecutingTest test)
at nCrunch.TestExecution.ExecutingTest.Finish(Boolean isSuccess, String exceptionString, TimeSpan executionTime, Boolean writeExceptionToOutput, Boolean addExecutionTime)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.testFinished(EndTestMessage message)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.RaiseCallbackEvent(String eventArgument)
System.Exception: Output is already redirected
at nCrunch.TestExecution.TestExecutionMonitor.()
at nCrunch.TestExecution.TestExecutionMonitor.StartMonitoringTest(ExecutingTest test)
at nCrunch.TestExecution.ExecutingTest.Start()
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.testStarted(NUnit3Message message)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.RaiseCallbackEvent(String eventArgument)
System.NullReferenceException: Object reference not set to an instance of an object.
at nCrunch.TestRuntime.RuntimeDataInspection.RdiEventListener.StopListening()
at nCrunch.TestExecution.TestExecutionMonitor.StopMonitoringTest(ExecutingTest test)
at nCrunch.TestExecution.ExecutingTest.Finish(Boolean isSuccess, String exceptionString, TimeSpan executionTime, Boolean writeExceptionToOutput, Boolean addExecutionTime)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.testFinished(EndTestMessage message)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.RaiseCallbackEvent(String eventArgument)
System.Exception: Output is already redirected
at nCrunch.TestExecution.TestExecutionMonitor.()
at nCrunch.TestExecution.TestExecutionMonitor.StartMonitoringTest(ExecutingTest test)
at nCrunch.TestExecution.ExecutingTest.Start()
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.suiteStarted(NUnit3Message message)
at nCrunch.Module.NUnit3.Integration.NUnit3Listener.RaiseCallbackEvent(String eventArgument)
nCrunch.TestExecution.TestExecutionException: Cannot start monitoring test
Hi, thanks for sharing this issue.

The error code here is Win32 ERROR_NOT_ENOUGH_MEMORY. In this situation, NCrunch is unable to start the test run because allocating the memory required to track RDI data for the test run failed.

Possible solutions include:
1. Increasing available memory (i.e. terminate background applications, add more hardware, etc)
2. Turn off RDI (it increases memory demands)
3. Reduce the number of tests running concurrently (Max number of processing threads)

Edited

thanks for the clarification. Checking the my configuration, it appears that RDI was enabled when it should not have been.

Post a reply

Log in to reply.