Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Erledigt Absturz bei Eigenschaftsproben [#178]
#1
Hallo,

hab folgendes problem gefunden:
Ich hab einige Helden von der HeldenSoftware importiert, und wollte
Eigenschafts-Proben machen (Mut, Klugheit...)
sobald ich die Eogenschaft über das Drobdown-Menu auswähle,
Stürzt MG ab. schon bevor ich die eig Probe gemacht habe...
Talentproben funktionieren...

Version 2.3.1
Win 7 64bit

Folgende infos im "Funktioniert nicht mehr" Fenster:

Problemsignatur:
Problemereignisname: CLR20r3
Problemsignatur 01: dsa meistergeister.exe
Problemsignatur 02: 2.3.0.1
Problemsignatur 03: 52c6edf7
Problemsignatur 04: System.Data.SqlServerCe
Problemsignatur 05: 4.0.8482.1
Problemsignatur 06: 4d24a1ab
Problemsignatur 07: 414
Problemsignatur 08: 1c
Problemsignatur 09: System.AccessViolationException
Betriebsystemversion: 6.1.7601.2.1.0.256.48
Gebietsschema-ID: 1031
Zusatzinformation 1: 70ae
Zusatzinformation 2: 70aebb82279da71940cf6a5fd33263ed
Zusatzinformation 3: ed6e
Zusatzinformation 4: ed6e9e7f5df93b412142974a6a6028da



Nachtag, auf anderem Rechner ist der Fehler auch aufgetreten...
Es bedanken sich:
#2
Als Ticket aufgenommen: #178

Ich konnte den Fehler nachstellen. Es scheint etwas mit der Würfel-Sound-Einstellung zu tun zu haben. Diesen ausführlicheren Fehlerbericht konnte ich erstellen:

Code:
System.AccessViolationException wurde nicht behandelt.
  HResult=-2147467261
  Message=Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
  Source=System.Data.SqlServerCe
  StackTrace:
       bei System.Data.SqlServerCe.NativeMethods.OpenStore(IntPtr pOpenInfo, IntPtr pfnOnFlushFailure, IntPtr& pStoreService, IntPtr& pStoreServer, IntPtr& pQpServices, IntPtr& pSeStore, IntPtr& pTx, IntPtr& pQpDatabase, IntPtr& pQpSession, IntPtr& pStoreEvents, IntPtr& pError)
       bei System.Data.SqlServerCe.SqlCeConnection.Open(Boolean silent)
       bei System.Data.SqlServerCe.SqlCeConnection.Open()
       bei System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
       bei System.Data.EntityClient.EntityConnection.Open()
       bei System.Data.Objects.ObjectContext.EnsureConnection()
       bei System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
       bei System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
       bei System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
       bei System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
       bei MeisterGeister.Model.Service.DataService.LoadEinstellungByName(String name) in d:\Projects\trunk\Model\Service\DataService.cs:Zeile 179.
       bei MeisterGeister.Logic.Settings.Einstellungen.GetEinstellung[T](String name) in d:\Projects\trunk\Logic\Settings\Einstellungen.cs:Zeile 87.
       bei MeisterGeister.Logic.Settings.Einstellungen.get_WuerfelSoundAbspielen() in d:\Projects\trunk\Logic\Settings\Einstellungen.cs:Zeile 216.
       bei MeisterGeister.ViewModel.Proben.ProbenViewModel.Würfeln(Object obj) in d:\Projects\trunk\ViewModel\Proben\ProbenViewModel.cs:Zeile 699.
       bei MeisterGeister.ViewModel.Base.CommandBase.Execute(Object parameter) in d:\Projects\trunk\ViewModel\Base\CommandBase.cs:Zeile 51.
       bei System.Windows.Controls.Button.OnClick()
       bei System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
       bei System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
       bei System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
       bei System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
       bei System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
       bei System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
       bei System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
       bei System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
       bei System.Windows.Input.InputManager.ProcessStagingArea()
       bei System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
       bei System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
       bei System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       bei System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       bei MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       bei MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
       bei System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
       bei MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
       bei System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
       bei MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       bei MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
       bei System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
       bei System.Windows.Application.RunInternal(Window window)
       bei System.Windows.Application.Run()
       bei MeisterGeister.App.Main() in d:\Projects\trunk\obj\Release\App.g.cs:Zeile 0.
       bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       bei System.Threading.ThreadHelper.ThreadStart()
  InnerException:

Der Fehler scheint aber nicht immer aufzutreten (zumindest bei meinem Test). Wann genau der Absturz auftritt konnte ich noch nicht herausfinden.
Entwickler - MeisterGeister-Projekt
Projektleitung
Es bedanken sich:
#3
Bei den Tests zu den Favoriten-Buttons (Ticket #176) bin ich auf Folgendes gestoßen (vielleicht hilft es bei der Fehlersuche):
in 2.3.1: Wenn ich direkt nach dem Programmstart eine Klugheit-Probe würfeln lasse (über den Fav. Button), dann stürzt MG ab. Ohne MG-Fehlermeldung, nur von Windows bekomme ich: 'DSA MeisterGeister funktioniert nicht mehr. Es wird nach einer Lösung für das Problem gesucht...'
Hatte ich 3-4 mal hintereinander, dann habe ich vorher mal ein paar andere Proben gewürfelt (nur Talente, alle über Fav. Buttons) und dann die Klugheit und es lief Problemlos. Nach dem nächsten Start habe ich zuerst wieder die Klugheit ausprobiert und bekomme mit ner Sekunde Verzögerung den selben Absturz. Bei Charisma passiert das übrigens nicht.
Es bedanken sich:
#4
Ich vermute, dass es eher etwas mit vergangener Zeit und verschiedenen Threads zu tun hat. Deshalb ist es wohl etwas erratisch.
Projektleiter - MeisterGeister-Projekt
Kampf, Datenbank, Model, Knobelaufgaben
Es bedanken sich:
#5
Es liegt an dem Zugriff auf die DB aus einem UI-Thread. Bei der Berechnung der Erfolgschance, welche ins UI gebunden ist, wird auf die Regel EigenschaftenProbePatzerGlück zugegriffen.

Die möglichen Lösungsansätze hierzu sind:
Caching der Einstellungen/Regeln, damit von Überall darauf zugegriffen werden kann. (Wann wird der cache ungültig?)
DB-Zugriff Threadsafe machen. (sehr schwierig)
Wert im ViewModel cachen.
Projektleiter - MeisterGeister-Projekt
Kampf, Datenbank, Model, Knobelaufgaben
Es bedanken sich:
#6
Das Problem ist aber erst seit dem Umbau der Einstellungen aufgetreten, oder? Zumindest ist es mir vorher nie begegnet.
Ich denke, dass ein Cachen im ViewModel die vorerst beste Möglichkeit darstellt. Ich werde versuchen das morgen umzusetzen.
Entwickler - MeisterGeister-Projekt
Projektleitung
Es bedanken sich:
#7
Ja die Regeln wurden static im Cache gehalten. Deshalb musste man nach Änderungen an diesen auch MG neu starten.
Projektleiter - MeisterGeister-Projekt
Kampf, Datenbank, Model, Knobelaufgaben
Es bedanken sich:
#8
Ich hatte nur vergessen, dass ein solcher Absturz der Grund war.
Projektleiter - MeisterGeister-Projekt
Kampf, Datenbank, Model, Knobelaufgaben
Es bedanken sich:
#9
Ich cache diese Regeloption nun doch in MeisterGeister.Logic.Settings.Regeln, da die Option tief in den Logik-Klassen (Probe) steckt und es sich nicht so einfach ins ViewModel verlagern lässt. Das scheint mir so erstmal die beste Lösung zu sein, da alles andere für einen BugFix zu aufwändig ist. Man könnte das in einer späteren Version evtl. nochmal anders machen.

Der Fehler tritt nun jedenfalls nicht mehr auf. Ich schließe das Ticket.
Entwickler - MeisterGeister-Projekt
Projektleitung
Es bedanken sich:
#10
Hallo, nur so ne Frage, muss ich jetzt auf die neue Version warten, oder was muß ich machen das bei Mir der Fehler weg ist?
MfG Thomas
Es bedanken sich:


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste