INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Absturz durch unzulässige Pointer



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.10.2016, 18:21
Beitrag #1

VS_03 Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Apr 2016

15.0f2 (64-bit)
2015
EN



Absturz durch unzulässige Pointer
Hallo liebe Community,

ich habe ein Problem bei der Übergabe von Daten zwischen LabView und meiner Speicherimplementierung als Library Function Node (dll). Kurz zum Aufbau: es laufen in zwei parallelen while-Schleifen Aufnahme- und Ausgabe-Tasks, zwischen diesen sollen Daten ausgetauscht werden. Zunächst wird für diesen Austausch ein Speicherbereich (Ringspeicher) initialisiert. Beim Lesen&Schreiben werden Datenpointer verwendet, beim Schreiben wird der Array Data Pointer (Input von Node) verwendet um eine Kopie in den Speicher anzulegen, beim Lesen wird ein Array Data Pointer (Input von Node) von LabView genutzt und in diesen werden die Daten dann aus dem Speicher übertragen (Output von Node).

Ein Debuggingreport hat ergeben, dass scheinbar des öfteren unzulässige Pointer wie 0x00000000 und 0xFFFFFFFF übergeben werden. Fehlerbild ist leider etwas schwer zu beschreiben, da LabView entweder sich selbstständig schließt/abstürzt oder eine bug registriert, versucht zu debuggen, dann zum schließen auffordert. Problem ist, dass die Abstürze völlig willkürlich erscheinen, manchmal nach längeren Betrieb (eher selten), manchmal beim schließen der Tasks (nicht beim ersten Aufruf), manchmal bei der Initialisierung (nicht beim ersten Aufruf). Zudem scheint meist der erste Lauf keine Abstürze zu erzeugen, sondern erst bei neuem Aufruf des VIs. Es scheint als würde mein angelegter Speicher in den von LabView eingreifen und damit Fehler erzeugen. Hat jemand Erfahrung mit der Speicherverwaltung von LabView und kann sagen, wann ein Speicher den Pointer 0x00000000 oder 0xFFFFFFFF erhalten würde? Zusätzlich die Frage, ob ein Shiftregister/globale Variablen immer feste Adressen haben oder dynamisch verwaltet werden? Idee war, dass evtl. LabView den Array Data Pointer vorzeitig auf unzulässige Werte setzt wenn die dll versucht die Daten zu holen.

Zusatz: Speicher ohne Aufnahme- und Ausgabe-Task funktioniert -scheinbar- ohne Probleme. Erst wenn die Tasks hinzukommen stürzt LabView ab.

Ich bin über jede Hilfe dankbar!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Absturz durch unzulässige Pointer - VS_03 - 25.10.2016 18:21

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Datenübergabe an DLL Pointer to Pointer Reiling 2 8.315 02.02.2018 10:59
Letzter Beitrag: Reiling
  dll mit Pointer auf komplexe Struktur einbinden Wedgewood 11 14.621 27.04.2014 23:44
Letzter Beitrag: Wedgewood
  Pointer auf Array mit Labview übertragen und darstellen lupus022 35 25.712 19.07.2013 10:53
Letzter Beitrag: lupus022
  Pointer und MoveBlock OXO 4 7.199 03.06.2013 16:31
Letzter Beitrag: OXO
  Pointer auf Subarray übergeben Event Horizon 5 6.496 15.07.2012 10:21
Letzter Beitrag: rolfk
  DLL-Einbindung, Struct mit verschiedenen Datentypen als Pointer übergeben hawk72 4 10.043 11.05.2012 14:41
Letzter Beitrag: hawk72

Gehe zu: