Seite 1 von 2

Fehler bei DbRUnLock()

Verfasst: Di, 28. Okt 2014 21:53
von Jan
Gerade bekomme ich eine Fehlermeldung rein:
Sprachen-Version : 1.90.355
Betriebssystem :Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args :
oError:canDefault : .T.
oError:canRetry : .F.
oError:canSubstitute: .F.
oError:cargo : NIL
oError:description : D
oError:filename :
oError:genCode : 8999
oError:operation : DbRUnlock
oError:osCode : 0
oError:severity : 2
oError:subCode : 0
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
Was soll ich dazu sagen? Passiert ist das in solch einer Situation:

Code: Alles auswählen

IF cAlias->(DbRLock())
   cAlias->cFeld := cWert
   cAlias->(DbRUnLock())   <=== Hier kommt der Fehler
ENDIF
Wie kann sowas denn passieren?

Jan

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 6:51
von Rolf Ramacher
Guten Morgen Jan

Ich mache das immer so

Code: Alles auswählen

do while 123->(!RLock()
enddo
dann tue etwas
123->(DbUnlock()) 
keine Probleme bisher.

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 7:40
von Hans Zethofer
Hallo!

benötigst du unbedingt ein "DbRUnlock()" ?
verwende doch einmal nur ein DbUnlock()

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 7:44
von Herbert
Rolf, wenn der Rlock nie klappt, dann hast du so einen Hänger...
Pack das Ganze in eine For-Schlaufe mit 3-5 Versuchen und einem kleinen Wait dazwischen.

Jan, stehst du auf Eof?

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 8:04
von Koverhage
Ich benutze den normal nur mit Recno()

Ansonsten Virenscanner ?

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 8:05
von Jan
Hallo Herbert,

nicht das ich wüßte. Aber wenn ich auf EoF() stehen würde, dann würde der doch garnicht erst in die Schleife reingehen, oder? Mich irritiert bei der ganzen Sache, das es erstens ansich immer funktioniert. Und das der zum unlock nur kommen KANN, wenn das locken vorher auch funktioniert hat. Ansich sollte also kein Grund bestehen, warum das unlocken nicht klappen sollte. Wobei die Fehlermeldung natürlich mal wieder diese unglaublich hilfreiche 8999 ist ...

Jan

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 8:07
von Jan
Hallo Klaus,

hmmm ... Virenscanner. Die sind natürlich immer irgendwie ein Problem. Aber warum könnte der ausgerechnet bei einem unlock dazwischen funken? Klar hat man schon Pferde kotzen gesehen. Aber verstehen tu ich das trotzdem nicht wirklich.

Jan

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 8:25
von Herbert
...immerhin ist nicht Montagmorgen :x
Der Virenscanner wird eher bei Unlock motzen, denn beim Lock erfolgte noch keine Aenderung.

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 8:58
von Jan
Hallo Herbert,

das ist natürlich ein Argument.

Jan

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 9:29
von brandelh
Laut Hilfe müsste DbRUnLock() ohne Parameter das gleiche tun wie UNLOCK oder DBUNLOCK(), wenn man
PRG hat geschrieben: UNLOCK
UNLOCK ALL
dbunlock()
dbrunlock()
übersetzen läßt, folgt daraus diese Funktionen ...
PPO hat geschrieben: dbUnlock()
dbUnlockAll()
dbunlock()
dbrunlock()
beim UNLOCK wird tatsächlich alles geschrieben, was vorher noch im cache war.

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 10:01
von Tom
Dieser Fehler verweist in aller Regel auf eine Datei- oder Indexkorruption.

Re: Fehler bei DbRUnLock()

Verfasst: Mi, 29. Okt 2014 22:50
von AUGE_OHR
ich würde auf Netzwerk tippen ...

p.s. das "original" XppError.LOG sagt sehr wenig ... wenn man wüsste ob der ALIAS noch aktive ist ...

Re: Fehler bei DbRUnLock()

Verfasst: Do, 30. Okt 2014 6:24
von Jan
Jimmy,

das Errorlog sagt mir, daß das Programm lokal ausgeführt wurde.

Abgesehen davon ist das Programm zwar netzwerkfähig, aber wird in 99,9 % immer am Einzelplatz ausgeführt.

Jan

Re: Fehler bei DbRUnLock()

Verfasst: Do, 30. Okt 2014 6:51
von Herbert
Tom hat geschrieben:Dieser Fehler verweist in aller Regel auf eine Datei- oder Indexkorruption.
:D
http://de.wikipedia.org/wiki/Korruption
Ja, so ist alles klar. :^o

Seriös: Hast du den Virenscanner deaktivieren können?

Re: Fehler bei DbRUnLock()

Verfasst: Do, 30. Okt 2014 6:54
von Jan
Hallo Herbert,

schön wars ... Mein Problem ist, das man die Software auch als Demo runterladen kann. Und dann steht im mir zugemailten Errorlog halt nicht drin, wer das gewesen ist (außer das es die Demo war). Ich kann mich mit dem Anwender leider nicht in Verbindung setzen, weil ich einfach nicht weiß wer das war.

Jan

Re: Fehler bei DbRUnLock()

Verfasst: Do, 30. Okt 2014 20:36
von AUGE_OHR
Jan hat geschrieben:das Errorlog sagt mir, daß das Programm lokal ausgeführt wurde.
dann poste doch bitte das gesamte Errorlog.

Frage : wurden Threads verwendet ?

Re: Fehler bei DbRUnLock()

Verfasst: Do, 30. Okt 2014 20:40
von Jan
AUGE_OHR hat geschrieben:dann poste doch bitte das gesamte Errorlog.
Wieso? Da fehlt nur die Zeile mit der Angabe der exe. Die eben halt auf einen lokalen Laufwerksbuchstaben hinweist. Und eben die Liste der prg mit den Codezeilen. Nix außergewöhnliches.
AUGE_OHR hat geschrieben:Frage : wurden Threads verwendet ?
Antwort: Ja klar. Wieso?

Jan

Re: Fehler bei DbRUnLock()

Verfasst: Do, 30. Okt 2014 22:02
von satmax
Hallo Jan,

ich hatte vor ca. 1 Jahr ein ähnliches Problem, du hast mir geantwortet:
Eine Eigenheit von 8999 liegt darin, selten wirklich die Codezeile auszuwerfen die Schuld daran ist.


Hier der Thread: http://xbaseforum.de/viewtopic.php?f=32&t=7531#p83658

Bei mir hatte nur eine Umstellung des Codes (andere Ablauf, oder so) geholfen. Da ich inzwischen aber vollständig auf SQL umgestellt habe kann ich da nicht mehr nachsehen.

Re: Fehler bei DbRUnLock()

Verfasst: Do, 30. Okt 2014 23:34
von Martin Altmann
Markus,
da war sicherlich der Virenscanner ursächlich für Deinen Fehler - Änderung am Code, neu kompiliert, neue Prüfsumme und leicht anderes Verhalten - schon klappt es wieder...

Viele Grüße,
Martin

Re: Fehler bei DbRUnLock()

Verfasst: Fr, 31. Okt 2014 7:48
von satmax
Das ist leicht möglich, seit der SQL Umstellung kenne ich solche Probleme nicht mehr. :D

Re: Fehler bei DbRUnLock()

Verfasst: Di, 04. Nov 2014 18:54
von Jan
Mist! Gerade kam wieder der gleiche Fehler rein, anderer Kunde, andere Code-Stelle, aber wieder beim DbRUnLock(). Da muß ich ganz dringend irgendwas machen, sonst werden meine Kunden mich hassen ...

Jan

Re: Fehler bei DbRUnLock()

Verfasst: Di, 04. Nov 2014 19:01
von AUGE_OHR
satmax hat geschrieben:Das ist leicht möglich, seit der SQL Umstellung kenne ich solche Probleme nicht mehr. :D
bei Cl*pper v5.2e arbeitet SMB "sauber" unter Win7/8x ...
aber da gibt es auch keine Threads die zusätzliche Ops Locking Probleme verursachen ;)

Re: Fehler bei DbRUnLock()

Verfasst: Di, 04. Nov 2014 19:05
von Jan
Wäre es sinnvoll und möglich, eine eigene MyDbRUnlock()-Funktion zu schreiben, in die ich ein eigene Fehlerbehandlung per BEGIN SEQUENCE einbaue? Das müßte doch wohl eine Möglichkeit sein, diesen Fehler sauber abzufangen.

Würde es alterntaiv eventuell helfen, vor dem DbRUnLock() ein DbSkip(0) oder ein DbCommit() einzubauen? Oder würde das nur den Zeitpunkt der Fehlermeldung verlagern?

Jan

Re: Fehler bei DbRUnLock()

Verfasst: Di, 04. Nov 2014 19:22
von Bernd Reinhardt
Hallo.
Ich hatte die selben Fehler, mal create index, mal unlock. Nicht richtig reproduzierbar.

Bei mir war es definitiv der Virenscanner, und zwar die Aktivitätskontrolle.
Wenn das Programm und die Daten lokal waren, ist der Fehler sehr selten aufgetreten.
Wenn die Daten im Netzwerk lagen (egal mit gemappten Laufwerk oder \\IP) angesprochen,
dann trat der Fehler häufiger auf. (Auch wenn die Daten auf der NAS liegen, also kein Server)

Ich bat mal einen Kunden den Scanner abzuschalten, seither hatte er kein Problem mehr.
Selbst wenn nur ein Programm auf eine Datei zugreift passiert der Fehler. Hat also nichts
mit Mehrplatzanwendung zu tun.
Noch eine Eigenart hatte ich festgestellt.
Indexdatei gelöscht und Programm gestartet. Ist beim Indexaufbau dann auch abgebrochen, allerdings
war der Index richtig vorhanden.
Das Programm beendet und den Index benutzt hat dann funktioniert.

Ich hatte die Indexe gelöscht und das Programm gestartet. Nach dem 10. Start waren dann alle Indexe erstellt und das
Programm hat funktioniert. (Ich baue dann nur noch die nicht vorhandenen Indexe auf)

Wenn ich im Programm meine Funktion fmyreindex() aufgerufen habe, und die Indexe alle gelöscht und neu aufbauen wollte,
dann ist das Programm nie durchgelaufen, da ich die Indexe nach dem Abbruch beim Programmstart alle wieder gelöscht wurden.
Bei einem der vielen Indexe ist das Programm dann abgestürzt.

Beim Aufbau vieler Indexe tritt der Fehler dann auch "zeitnah" auf und man kann mal an den Stellschrauben vom Virenscanner arbeiten.
Ich hab an anderer Stelle im Forum schon mal darauf hingewiesen.
Hoffe mal das hilft.

Gruß
Bernd

Re: Fehler bei DbRUnLock()

Verfasst: Di, 04. Nov 2014 19:25
von Bernd Reinhardt
Hallo.
Nachdem die Indexe fehlerfrei erstellt wurden, trat auch der Fehler mit unlock nicht mehr auf.
Gruß
Bernd