[gelöst] NAV Server Absturz beim Druck eines Reports

1. Dezember 2011 11:25

Hallo zusammen,

Ich beschäftige mich grade mit einem Problem, was mir etwas Kopfzerbrechen bereitet.

Situation:
Ein User arbeitet mit dem RTC und möchte z.B. eine Verkaufsauftragsbestätigung (egal welcher Report) drucken.

Möglichkeit 1: (zu ca. 80%)
Alles funktioniert...

Möglichkeit 2: (zu ca. 20%)
RTC hängt sich auf für ca. 2 Minuten, dann bekommt er User die Meldung, dass der NAV Server nicht zu erreichen ist. 20 andere User bekommen diese Meldungen ebenfalls. Danach können sich alle wieder verbinden und es war, als wäre nichts gewesen.

Eventlog des Clients:
Eine Fehlermeldung, dass der RTC die Verbindung zum Server verloren hat. Nichtmal ein Stacktrace oder etwas ähnliches.

Eventlog des Servers Nr. 1:
Code:
Service: MicrosoftDynamicsNavServer$INSTANCE
User: DOMAIN/USER
Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
StackTrace:    bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
Source: Microsoft.Dynamics.Nav.Ncl
----------------------------------
Type: System.Reflection.TargetInvocationException
Message: Ein Aufrufziel hat einen Ausnahmefehler verursacht.
StackTrace:
     bei System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
     bei System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
     bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
     bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
     bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
Source: mscorlib
----------------------------------
Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
StackTrace:
     bei Microsoft.Dynamics.Nav.Service.NSClientCallback.ReportPageReady(ReportRequest reportRequest)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.SendDataSetPieceToTargetDevice(Boolean isFinalDataSetPiece)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.ExecuteReport(Boolean displayResult)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReportInternal(NavRecord record, Boolean displayResult)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReport(Nullable`1 requestWindow, Nullable`1 systemPrinter, Boolean runReportModal, NavRecord record, IList`1 reportTextualFilters)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReport(Int32 reportId, Nullable`1 requestWindow, Nullable`1 systemPrinter, Boolean isRunningAsModal, NavRecord record, IList`1 textualFilters)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunModal(Int32 reportId, Boolean requestWindow, Boolean systemPrinter, NavRecord record)
     bei Microsoft.Dynamics.Nav.BusinessApplication.Page42.Control1000000000_OnAction()
Source: Microsoft.Dynamics.Nav.Service
----------------------------------
Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
StackTrace:
     at System.Drawing.SafeNativeMethods.EndPage(HandleRef hDC)
     at System.Drawing.Printing.StandardPrintController.OnEndPage(PrintDocument document, PrintPageEventArgs e)
     at System.Windows.Forms.PrintControllerWithStatusDialog.OnEndPage(PrintDocument document, PrintPageEventArgs e)
     at System.Drawing.Printing.PrintController.PrintLoop(PrintDocument document)
     at System.Drawing.Printing.PrintController.Print(PrintDocument document)
     at System.Drawing.Printing.PrintDocument.Print()
     at Microsoft.Dynamics.Nav.Client.ReportRenderer.PrintReport(Boolean showPrintStatus)
     at Microsoft.Dynamics.Nav.Client.ServiceClientCallback.ReportPageReadyWinFormsPrintDirectly(ReportRequest reportRequest, ReportExecutionItem reportExecutionItem, Boolean isFirstPage)
     at Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass19.<ReportPageReady>b__18()
     at Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass1.<RunClientRequest>b__0()
     at Microsoft.Dynamics.Nav.Client.ServerInvocationManager.WaitForServerResponse(IAsyncResult asyncResult, ThreadCallbackContext threadEventContext)
Source: System.Drawing


Eventlog des Servers Nr. 2:
Code:
Service: MicrosoftDynamicsNavServer$INSTANCE
User: DOMAIN/USER
Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
StackTrace:
     bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
     bei Microsoft.Dynamics.Nav.Service.NSField.ActionField(NavConnection con)
     bei Microsoft.Dynamics.Nav.Service.NSField.Action(NavConnection connection)
     bei Microsoft.Dynamics.Nav.Service.NSService.<>c__DisplayClass21.<ActionField>b__20(Connection connection)
     bei Microsoft.Dynamics.Nav.Service.NSService.ExecuteOperation[T](String operationName, ServiceOperation`1 operation, Connection connection, Boolean revertLanguageChanges, WindowsIdentity impersonationIdentity)
Source: Microsoft.Dynamics.Nav.Ncl
----------------------------------
Type: System.Reflection.TargetInvocationException
Message: Ein Aufrufziel hat einen Ausnahmefehler verursacht.
StackTrace:
     bei System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
     bei System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
     bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
     bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
     bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
Source: mscorlib
----------------------------------
Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
StackTrace:
     bei Microsoft.Dynamics.Nav.Service.NSClientCallback.ReportPageReady(ReportRequest reportRequest)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.SendDataSetPieceToTargetDevice(Boolean isFinalDataSetPiece)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.ExecuteReport(Boolean displayResult)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReportInternal(NavRecord record, Boolean displayResult)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReport(Nullable`1 requestWindow, Nullable`1 systemPrinter, Boolean runReportModal, NavRecord record, IList`1 reportTextualFilters)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReport(Int32 reportId, Nullable`1 requestWindow, Nullable`1 systemPrinter, Boolean isRunningAsModal, NavRecord record, IList`1 textualFilters)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunModal(Int32 reportId, Boolean requestWindow, Boolean systemPrinter, NavRecord record)
     bei Microsoft.Dynamics.Nav.BusinessApplication.Page42.Control1000000000_OnAction()
Source: Microsoft.Dynamics.Nav.Service
----------------------------------
Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
StackTrace:
     at System.Drawing.SafeNativeMethods.EndPage(HandleRef hDC)
     at System.Drawing.Printing.StandardPrintController.OnEndPage(PrintDocument document, PrintPageEventArgs e)
     at System.Windows.Forms.PrintControllerWithStatusDialog.OnEndPage(PrintDocument document, PrintPageEventArgs e)
     at System.Drawing.Printing.PrintController.PrintLoop(PrintDocument document)
     at System.Drawing.Printing.PrintController.Print(PrintDocument document)
     at System.Drawing.Printing.PrintDocument.Print()
     at Microsoft.Dynamics.Nav.Client.ReportRenderer.PrintReport(Boolean showPrintStatus)
     at Microsoft.Dynamics.Nav.Client.ServiceClientCallback.ReportPageReadyWinFormsPrintDirectly(ReportRequest reportRequest, ReportExecutionItem reportExecutionItem, Boolean isFirstPage)
     at Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass19.<ReportPageReady>b__18()
     at Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass1.<RunClientRequest>b__0()
     at Microsoft.Dynamics.Nav.Client.ServerInvocationManager.WaitForServerResponse(IAsyncResult asyncResult, ThreadCallbackContext threadEventContext)
Source: System.Drawing


Eventlog des Servers Nr. 3:
Code:
Service:
User:
Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
StackTrace:
     bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
     bei Microsoft.Dynamics.Nav.Service.NSField.ActionField(NavConnection con)
     bei Microsoft.Dynamics.Nav.Service.NSField.Action(NavConnection connection)
     bei Microsoft.Dynamics.Nav.Service.NSService.<>c__DisplayClass21.<ActionField>b__20(Connection connection)
     bei Microsoft.Dynamics.Nav.Service.NSService.ExecuteOperation[T](String operationName, ServiceOperation`1 operation, Connection connection, Boolean revertLanguageChanges, WindowsIdentity impersonationIdentity)
     bei Microsoft.Dynamics.Nav.Service.NSService.ExecuteOperation[T](String operationName, Boolean revertLanguageChanges, ServiceOperation`1 operation)
     bei Microsoft.Dynamics.Nav.Service.NSService.ActionField(FieldRequest fieldRequest, NavRecordState dataSetState)
     bei SyncInvokeActionField(Object , Object[] , Object[] )
     bei System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
     bei System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
     bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
     bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
     bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
     bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
     bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
     bei System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
     bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.Dispatch(MessageRpc& rpc, Boolean isOperationContextSet)
     bei System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext)
     bei System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext)
     bei System.ServiceModel.Dispatcher.ChannelHandler.SyncMessagePump()
     bei System.ServiceModel.Dispatcher.ChannelHandler.OnStartSyncMessagePump(Object state)
     bei System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke2()
     bei System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.OnSecurityContextCallback(Object o)
     bei System.Security.SecurityContext.Run(SecurityContext securityContext, ContextCallback callback, Object state)
     bei System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke()
     bei System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.ProcessCallbacks()
     bei System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.CompletionCallback(Object state)
     bei System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.ScheduledOverlapped.IOCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
     bei System.ServiceModel.Diagnostics.Utility.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped)
     bei System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
Source: Microsoft.Dynamics.Nav.Ncl
----------------------------------
Type: System.Reflection.TargetInvocationException
Message: Ein Aufrufziel hat einen Ausnahmefehler verursacht.
StackTrace:
     bei System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
     bei System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
     bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
     bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
     bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
Source: mscorlib
----------------------------------
Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
StackTrace:
     bei Microsoft.Dynamics.Nav.Service.NSClientCallback.ReportPageReady(ReportRequest reportRequest)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.SendDataSetPieceToTargetDevice(Boolean isFinalDataSetPiece)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.ExecuteReport(Boolean displayResult)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReportInternal(NavRecord record, Boolean displayResult)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReport(Nullable`1 requestWindow, Nullable`1 systemPrinter, Boolean runReportModal, NavRecord record, IList`1 reportTextualFilters)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReport(Int32 reportId, Nullable`1 requestWindow, Nullable`1 systemPrinter, Boolean isRunningAsModal, NavRecord record, IList`1 textualFilters)
     bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunModal(Int32 reportId, Boolean requestWindow, Boolean systemPrinter, NavRecord record)
     bei Microsoft.Dynamics.Nav.BusinessApplication.Page42.Control1000000000_OnAction()
Source: Microsoft.Dynamics.Nav.Service
----------------------------------
Type: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
StackTrace:
     at System.Drawing.SafeNativeMethods.EndPage(HandleRef hDC)
     at System.Drawing.Printing.StandardPrintController.OnEndPage(PrintDocument document, PrintPageEventArgs e)
     at System.Windows.Forms.PrintControllerWithStatusDialog.OnEndPage(PrintDocument document, PrintPageEventArgs e)
     at System.Drawing.Printing.PrintController.PrintLoop(PrintDocument document)
     at System.Drawing.Printing.PrintController.Print(PrintDocument document)
     at System.Drawing.Printing.PrintDocument.Print()
     at Microsoft.Dynamics.Nav.Client.ReportRenderer.PrintReport(Boolean showPrintStatus)
     at Microsoft.Dynamics.Nav.Client.ServiceClientCallback.ReportPageReadyWinFormsPrintDirectly(ReportRequest reportRequest, ReportExecutionItem reportExecutionItem, Boolean isFirstPage)
     at Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass19.<ReportPageReady>b__18()
     at Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass1.<RunClientRequest>b__0()
     at Microsoft.Dynamics.Nav.Client.ServerInvocationManager.WaitForServerResponse(IAsyncResult asyncResult, ThreadCallbackContext threadEventContext)
Source: System.Drawing


Ich kenn mich leider nur nicht so sehr in der Struktur des Libary aus, dass ich jetzt feststellen könnte, woran das nun genau liegt. Ich hab die Fehlermeldung auf jedenfall dann mal so genommen wie sie ist und hab nen Memory Test durchgeführt mit dem Programm Memtest86+. Das ganze auf den Client natürlich, weil dieser den Report rendered und an den Drucker schickt. Ergebnis: 32x durchlaufen mit 0 Fehlern.

Ich gehe stark davon aus, dass es am Client hängt. Wir haben hier auch noch einen Terminalserver im Einsatz, wo der User ohne Probleme Reports drucken kann. Zur Not fällt mir nur noch Tabula Rasa ein :S

Mit freundlichen Grüßen
André aka. iPeon
Zuletzt geändert von iPeon am 5. Dezember 2011 10:28, insgesamt 1-mal geändert.

Re: [Middletier] NAV Server Absturz beim Druck eines Reports

1. Dezember 2011 11:29

Hallo,

welchen Build setzt ihr ein?

Wenn du einen aktuellen Build einsetzten wilst, bitte "Compile All" nicht vergessen (könnte auch hier dein Problem lösen :wink: )

Gruß, Fiddi

Re: [Middletier] NAV Server Absturz beim Druck eines Reports

1. Dezember 2011 11:33

Oh entschuldigung...

Microsoft Dynamics NAV 2009 R2 - RTC ​Version DE 6.0.32012.0

Die Objekte sind alle kompiliert, oder verstehe ich das falsch mit dem Compile all. Es ist auch nur ein einzelner User, die anderen User können ebenfalls drucken.

Gruß André

Re: [Middletier] NAV Server Absturz beim Druck eines Reports

1. Dezember 2011 11:35

Ich verstehe das Ereignisprotokoll so, dass auf dem Rechner, auf dem der NAV-Dienst läuft, ein Hardwaredefekt vorliegt.

Re: [Middletier] NAV Server Absturz beim Druck eines Reports

1. Dezember 2011 11:45

Hallo,

also man kann sich nur an das Problem rantasten:-)

Es gibt eine Tabelle "Profile Metadata", darin werden die User spezifischen Änderungen gespeichert.
Für diesen User mal alle Einträge löschen, wenn man davaon ausgeht, dass es bei den Anderen funktioniert.


Noch einige Tipps zum kompilieren:
Wenn man alles neukompilieren will, dann sollte man auch die Einträge in der Tabelle "Object Metdata" löschen, denn beim kompilieren werden diese .cs Dateien neu erzeugt. Da hängt auch manchmal der Wurm drin:-)
Und dann den Dienst neustarten.
Das gleiche gilt auch, wenn nur einzelne Objekte betroffen sind.


Gruß
Aydin

Re: [Middletier] NAV Server Absturz beim Druck eines Reports

1. Dezember 2011 11:57

Die Objekte sind alle kompiliert, oder verstehe ich das falsch mit dem Compile all. Es ist auch nur ein einzelner User, die anderen User können ebenfalls drucken.


natürlich sind alle Objekte kompiliert, sonst könntest du sie nicht benutzen.
Aber nicht immer werden Objekte neu kompiliert wenn ein anderes Objekt Änderungen enthält (Bsp. du änderst in einer CU eine Funktion, indem du die Anzahl Parameter veränderst. Wenn du die CU kompilierst, wird nicht automatisch der Report, der die CU aufruft auch neu kompiliert :wink: , was zu merkwürdigen Fehlern führen kann :-? )

Aber das "Compile All" musst du auch durchführen, wenn du die NAV-Programme auf einen aktuellen Build aktualisieren willst/musst, da sich der Format der Objekte geändert hat.

Gruß, Fiddi

Re: [Middletier] NAV Server Absturz beim Druck eines Reports

1. Dezember 2011 12:03

Ah so,

Also da bin ich mir ziemlich sicher, das dort kein Problem existiert, da ich hier bislang zum größten Teil programmiere.

Zumal wir auch den Test durchgeführt haben. Absturz festgestellt anhand eines Reports auf einen Record des Sales Header -> andere Client funktioniert mit den selben Parametern.

Gruß André

Re: [Middletier] NAV Server Absturz beim Druck eines Reports

1. Dezember 2011 12:13

Also da bin ich mir ziemlich sicher, das dort kein Problem existiert, da ich hier bislang zum größten Teil programmiere


Das denke ich auch immer, bis man mir das Gegenteil beweist. :mrgreen:

Gruß, Fiddi

Re: [Middletier] NAV Server Absturz beim Druck eines Reports

5. Dezember 2011 10:27

Mmh...

Ich hab aufgrund von andere Problematik, dass User öfters der RTC abschmiert einen Task eingerichtet, der alle NAV Dienste einmal die Nacht neustartet.

Interessanterweise funktioniert auch dieses Problem nun wieder.

Erklären kann ich es mir aber nicht. :-| Danke jedenfalls für die Anregungen. Lässt sich im laufenden 24 Std. Betrieb immer nur schlecht umsetzen.