Bugtracker DMXControl 3

  • Status Auf User warten
  • Prozent erledigt
    0%
  • Aufgabentyp Fehlerbericht
  • Kategorie GUI & Server → Server
  • zuständig niemand
  • Betriebssystem All
  • Schweregrad hoch
  • betrifft Version 3.2.1
  • fällig in Version unbestimmt
  • fällig am unbestimmt
  • Stimmen
  • versteckt
gehört zu Projekt: DMXControl 3
angelegt von JPK - 11.08.2020
zuletzt bearbeitet von JPK - 09.06.2022

FS#4246 - DDF führt zu Exception im Raw-Bereich

Das erste angehängte DDF führt zu einer Exception. Es ist in sofern falsch aufgebaut, als dass ein Step in einem Raw-Bereich ist. Trotzdem darf das nicht zu einer Exception führen.

ProjectLoad: ERROR: Loading Devices in Project(null)ProjectLoad: ERROR: Error loading Devices in ProjectSystem.InvalidOperationException: Handler RawDMXHandlerNode doesn't have any Ranges!
   bei org.dmxc.lumos.Kernel.HAL.Handler.AbstractRangesHandlerNode.getMinValue(String type) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\AbstractRangesHandlerNode.cs:Zeile 770.
   bei org.dmxc.lumos.Kernel.HAL.Handler.AbstractRangesHandlerNode.get_MinValue() in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\AbstractRangesHandlerNode.cs:Zeile 747.
   bei org.dmxc.lumos.Kernel.HAL.Handler.RawDMXHandlerNode.getPropTypeInstance(IDeviceProperty prop) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\Generic\RawDMXHandlerNode.cs:Zeile 102.
   bei org.dmxc.lumos.Kernel.HAL.Handler.AbstractHandlerNode.getTypeInstance(IDeviceProperty prop) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\AbstractHandlerNode.cs:Zeile 751.
   bei org.dmxc.lumos.Kernel.HAL.Handler.HandlerDependency.<>c__DisplayClass25_0.<getTypeInstance>b__0(IPropertyHandlerNode n) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\HandlerDependency.cs:Zeile 300.
   bei org.dmxc.lumos.Kernel.HAL.Handler.HandlerDependency.ForEachHandlerNode[T](Func`2 work) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\HandlerDependency.cs:Zeile 354.
   bei org.dmxc.lumos.Kernel.HAL.Handler.HandlerDependency.getTypeInstance(IDeviceProperty prop) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\HandlerDependency.cs:Zeile 300.
   bei org.dmxc.lumos.Kernel.HAL.Handler.HandlerRegistry.<>c__DisplayClass24_0.<getTypeInstance>b__0(HandlerDependency h) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\HandlerRegistry.cs:Zeile 382.
   bei org.dmxc.lumos.Kernel.HAL.Handler.HandlerRegistry.ForEachHandlerDependency[T](IDevicePropertyBase prop, Func`2 work) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\HandlerRegistry.cs:Zeile 448.
   bei org.dmxc.lumos.Kernel.HAL.Handler.HandlerRegistry.getTypeInstance(IDeviceProperty prop) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\HandlerRegistry.cs:Zeile 382.
   bei org.dmxc.lumos.Kernel.Devices.DeviceBeam.getTypeInstance(IDeviceProperty prop) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\DeviceBeam.cs:Zeile 245.
   bei org.dmxc.lumos.Kernel.DeviceProperties.AbstractDeviceProperty`1.getTypeInstance() in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\DeviceProperties\AbstractDeviceProperty.cs:Zeile 250.
   bei org.dmxc.lumos.Kernel.PropertyValue.PropertyValue`1..ctor(AbstractDeviceProperty`1 prop, Int64 id) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\PropertyValue\PropertyValue.cs:Zeile 54.
   bei org.dmxc.lumos.Kernel.PropertyValue.PropertyValue`1..ctor(AbstractDeviceProperty`1 prop) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\PropertyValue\PropertyValue.cs:Zeile 46.
   bei org.dmxc.lumos.Kernel.DeviceProperties.AbstractDeviceProperty`1.getValueInstance() in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\DeviceProperties\AbstractDeviceProperty.cs:Zeile 65.
   bei org.dmxc.lumos.Kernel.Devices.DeviceTools.<createPropertySceneEntries>d__1.MoveNext() in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\DeviceTools.cs:Zeile 34.
   bei System.Linq.Enumerable.<SelectManyIterator>d__17`2.MoveNext()
   bei org.dmxc.lumos.Kernel.Devices.DeviceTools.CreateInitializationScene(IDevice device) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\DeviceTools.cs:Zeile 19.
   bei org.dmxc.lumos.Kernel.Project.DeviceManager.ReinitDeviceBaseline(IDevice device) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Project\DeviceManager.cs:Zeile 739.
   bei org.dmxc.lumos.Kernel.Project.DeviceManager.OnDeviceAdded(IDevice d) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Project\DeviceManager.cs:Zeile 625.
   bei org.dmxc.lumos.Kernel.Project.DeviceManager.<org.dmxc.lumos.Kernel.Run.IManager.initialize>b__132_1(Object o, ProjectResourceEventArgs`1 args) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Project\DeviceManager.cs:Zeile 1064.
   bei org.dmxc.lumos.Kernel.Project.ProjectResource`1.OnItemAdded(ProjectResourceEventArgs`1 args) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Project\ProjectResource.cs:Zeile 213.
   bei org.dmxc.lumos.Kernel.Project.ProjectResource`1.ProjectContainer_ItemAdded(Object sender, ProjectContainerEventArgs`1 e) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Project\ProjectResource.cs:Zeile 189.
   bei org.dmxc.lumos.Kernel.Project.ProjectContainer`1.OnItemAdded(T item) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Project\ProjectContainer.cs:Zeile 243.
   bei org.dmxc.lumos.Kernel.Project.ProjectContainer`1.Load(LumosResource data, LumosIOContext context) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Project\ProjectContainer.cs:Zeile 216.
   bei org.dmxc.lumos.Kernel.Project.Project.loadProject(LumosIOContext context) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Project\Project.cs:Zeile 230.org.dmxc.lumos.Kernel.Exceptions.ProjectLoadException: Errors in Project
   bei org.dmxc.lumos.Kernel.Project.ProjectManager.loadProject(String filename, Stream inputStream, String sessionName, Boolean loadId) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Project\ProjectManager.cs:Zeile 312.

Außerdem fliegt auch noch eine weitere Exception, wenn man das leicht angepasste zweite DDF verwendet.

org.dmxc.lumos.Kernel.Exceptions.XmlParseException: Attribute "caption" in Node "step" missing
   bei org.dmxc.lumos.Kernel.HAL.Handler.RawDMXStepHandlerNode.parseXmlNode(XmlNode ddfnode) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\Generic\RawDMXStepHandlerNode.cs:Zeile 105.
   bei org.dmxc.lumos.Kernel.HAL.Handler.HandlerRegistry.ParseXmlTree(DDFParseContext context) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\HandlerRegistry.cs:Zeile 143.
   bei org.dmxc.lumos.Kernel.HAL.Handler.HandlerRegistry.parseXmlFile(DDFParseContext context) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\HAL\Handler\HandlerRegistry.cs:Zeile 58.
   bei org.dmxc.lumos.Kernel.Devices.DeviceBeam..ctor(IDevice parentDevice, UInt32 beamNumber, DDFParseContext context) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\DeviceBeam.cs:Zeile 92.
   bei org.dmxc.lumos.Kernel.Devices.DMXDevice.parseDDF(XmlDocument ddf, String filename) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\DMXDevice.cs:Zeile 406.
   bei org.dmxc.lumos.Kernel.Devices.DMXDevice.LoadXML(String ddfFile) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\DMXDevice.cs:Zeile 170.
   bei org.dmxc.lumos.Kernel.Devices.DMXDevice.set_DDFSourceFile(String value) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\DMXDevice.cs:Zeile 115.
   bei org.dmxc.lumos.Kernel.Devices.DMXDevice.setParameterInternal(DeviceParameter parameter, Object value, Object& valueToSend) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\DMXDevice.cs:Zeile 310.
   bei org.dmxc.lumos.Kernel.Devices.AbstractDevice.setParameter(DeviceParameter parameter, Object value) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\AbstractDevice.cs:Zeile 1000.
   bei org.dmxc.lumos.Kernel.Devices.AbstractDevice.<>c__DisplayClass121_0.<org.dmxc.lumos.Kernel.Resource.ILumosSaveable.loadFromManagedTree>b__0(String s, Object o) in D:\Jenkins\workspace\Lumos_3.2_Release\Lumos\Lumos\src\Kernel\Devices\AbstractDevice.cs:Zeile 670.
device-->functions-->rawstep-->step
Project Manager
Soon5 schrieb am 11.08.2020 19:14

Naja, der 2. Fehler ist ein Fehler im DDF. Im "step" fehlt eben die "Caption" also der Text. Das Erste ist auch ein Fehler im DDF, aber der hätte früher in der Ladereihenfolge gefunden werden sollen.

Admin
JPK schrieb am 11.08.2020 20:04

Vollkommen richtig, dass das Fehler im DDF sind. Aber fehlerhafte DDFs dürfen nicht zu solchen Exceptions führen. Bei anderen Problemen im DDF ist das auch abgefangen und führt nur zu einem Log-Eintrag. Und der erste führt sogar dazu, dass sich die GUI aufhängt.

Project Manager
Soon5 schrieb am 11.08.2020 20:41

Die 2. Exception fliegt bei allen DDF Fehlern. Da kannst du mal einen beliebigen andere Fehler erzeugen, da siehst du was ähnliches. Von daher sehe ich das noch nicht als wirklichen Fehler an, bzw. was hier anders sein soll als bei anderen DDF Fehlern.

Der 1. Fehler wie gesagt, muss weiter Vorne abgefangen werden, dass hier ebenfalls eine XmlParseException fliegt.

LightningBrothers schrieb am 12.08.2020 06:18

Als ich mir die DDFs seiner Zeit schon anschaute waren beide Meldungen für mich entsprechende Hinweise, wonach ich in den DDFs suchen musste. Daher hatte ich da auch kein Ticket angelegt.

Admin
JPK schrieb am 12.08.2020 07:29

Zu 2: Vielleicht habe ich das auch einfach etwas falsch ausgedrückt, was ich meinte. Ich hatte im Kopf, dass bei solchen klar im DDF zu verortenden Fehlern, kein Trace mitgeschrieben wird, sondern nur die Warnmeldung selbst. Der Trace dürfte hier nämlich mehr verwirren als helfen, weil der unbedarfte User plötzlich eine Wall of Text sieht, die er als Fehler von DMXControl 3 sieht.

@Stefan: Wie Arne sagte ist der erste Fehler tatsächlich ein, im Parser-Bereich nicht abgefangener Fehler, was so nicht auftreten darf ;) Denn das führt wie gesagt dazu, dass die GUI hängen bleibt, was nicht passieren darf.

Project Manager
Soon5 schrieb am 12.08.2020 14:19

Was man hier auch nochmal prüfen sollte ist, in wieweit das Verhalten beim neu anlegen eines Gerätes mit defektem DDF und beim Laden eines Projektes mit selbigem identisch ist. Ich vermute mal nicht. Das ist ein Thema was man irgendwann angehen sollte, genauso wie den Fehlerdialog von Projekten, der ist aktuell auch nicht so gut, aber das ist ja bekannt.

Admin
JPK schrieb am 12.08.2020 20:23

Das könnte man ja evtl. im Zuge der DDFParser-Lib angehen.

LightningBrothers schrieb am 12.08.2020 21:36

Was passiert, wenn ich das fehlerhafte DDF einmal im ersten Schritt in ein neues Projekt einfüge (23:23 Uhr) und dann im zweiten (mit einem kleinen Workaround) versuche, das Projekt mit dem gleichen, fehlerhaften DDF zu laden (23:28 Uhr), ist in den beigefügten Logfiles abgebildet.

Project Manager
Soon5 schrieb am 09.06.2022 08:01

Wo stehen wir denn hier für die 3.3? Veraltet?

LightningBrothers schrieb am 19.06.2022 12:14

Naja, das Problem besteht so lange, bis das DDF entsprechend der Vorgaben korrigiert wird. Die Definition

<raw dmxchannel="5" name="Color Programs">
  <step type="open" mindmx="0" maxdmx="5"/>
</raw>

muss mindestens um die Zeile

<range type="linear" mindmx="6" maxdmx="255" minval="0" maxval="100" />

ergänzt werden. Dann lässt sich das DDF einfügen. Wird das nicht gemacht, erhält man zumindest einen groben Hinweis, dass etwas mit dem DDF nicht passt. Originaltext ist "Unable to add device!". Hier wäre nur die Frage, ob man den Hinweis etwas präzisiert und sagt, dass die Definition nicht passt.

Auch für die zweite Variante mit der rawstep-Exception gilt, dass hier (nur) eine manuelle Korrektur des DDFs das Problem behebt.

Project Manager
Soon5 schrieb am 19.06.2022 15:23

Ja, aber das ist halt so. Die Daten werden halt benötigt. RAW ist ein numerischer Wertebereich, ergo ist mindestens 1 Range Bereich notwendig.

Und bei Rawstep ist die "caption" halt notwendig, weil irgendwas muss ja in der Dropdown Box angezeigt werden.

Für mich ist das erstmal erledigt, wenn die Software nicht abstürzt sondern der bekannte DDF Fehler Dialog hoch kommt. Dem scheint so zu sein, zumindest hab ich deinen Kommentar so verstanden.

LightningBrothers schrieb am 19.06.2022 17:11

Richtig. Es erscheint ein allgemeiner Hinweis, dass das DDF auf Grund von nicht näher spezifizierten Gründen nicht eingefügt werden kann.

Admin
JPK schrieb am 25.08.2022 08:41

Ahh, habe die Antworten gerade erst gesehen. Ja, der Dialog kommt hoch, aber ich muss nochmal schauen, denn die erste Exception führt (nach meiner damaligen Aussage) doch zu einem Abschmieren der GUI. Das habe ich aber noch nicht weiter getestet.

Nichts desto trotz würde ich mal behaupten, dass wir solche Exceptions trotzdem in soweit abfangen sollten, als dass da nicht ein kompletter Stacktrace im Kernel hochkommen sollte. Letztendlich ist es nämlich "nur" ein DDF-Fehler und kein Softwarefehler, bei dem der Stacktrace nötig wäre. Das ist eigentlich die Intention des Tickets.

Lade...

verfügbare Tastenkürzel

Aufgabenliste

Aufgabendetails

Aufgabenbearbeitung