LlStgSysStorageOpen liefert als Rückgabewert 0

Wir führen mehrere Dateien mit LlStgSysStorageOpen und anschließendem LlStgSysAppend zusammen.
Bei einem unserer Kunden kommt es immer wieder vor, das der LlStgSysStorageOpen als Rückgabewert eine 0 (lt. Doku Fehler) liefert.
(Aufruf: LlStgSysStorageOpen (<Pfad+Dateiname der LLDatei>, “”, FALSE, TRUE ))

Wie finde ich das Problem heraus ohne die Debwin4.exe parrallel laufen zu lassen?
Ein FileOpen (sogar exklusiv) ohne weitere Verarbeitung und anschließender FileClose funktioniert über unserer Anwedung.
Wie rufen L&L über die dlls (cmll24.dll, cmls24.dll) auf

Darf ich fragen, warum Sie Debwin4 nicht dafür verwenden möchten? Das ist eigentlich das prädestinierte Werkzeug für diese Fragestellung :slight_smile: .

Das hat mehrere Gründe:

  • Zu viele Anwender, bei denen allen zusätzlich debwin4 laufen müsste
  • Das Problem tritt nicht immer auf und bei der Masse an Drucken ist es einfach viel zu viel.

Dann bleibt Ihnen leider nur, das ganze heuristisch einzugrenzen (wann passiert es wo) oder vielleicht einfach im Problemfall noch einmal zu versuchen, die Datei zu öffnen. Ich kenne ähnliche Probleme zum Beispiel von Virenscannern, die eine eben erzeugte Datei noch im Zugriff haben, da hilft dann oft schon ein zweiter Versuch.

Insgesamt versuchen wir bis zu 3 mal die Datei zu öffnen.
Den Virenscanner haben wir auch im Verdacht, können es nur nicht festmachen.

Würde man in Debwin sehen, dass LLStgSysStorageOpen die Datei nicht öffnen kann, weil z.B. im Zugriff?

Wir versuchen alle auftretenden Fehler zu loggen, ja. Natürlich kann es (selten) vorkommen, dass ein Problem an Stellen auftritt, die wir beim Handling übersehen haben, daher will ich nicht einfach “ja” sagen :innocent:.

Sie können ansonsten auch mal den Process Monitor von Sysinternals bemühen, damit lassen sich alle Zugriffe auf eine Datei loggen - mitsamt dem zugehörigen Stacktrace.

Nach etlichen Drucken konnten wir den Fehler ein paar Mal hinbekommen:
:black_small_square:;1000;02.12.2019 15:37:20.774;4;LL.Generic;1F04;100:2=CMLL24​:diamonds:101:1=1; ERR: LS: StgOpen/CreateStorage(Z:\MA-AWSUW02_prod\Athos-AWS-Sys-Prod\Programme\awsv4\lltemp\a9d18ee7-5d7b-42d0-9ab2-5222497c522d.LL) failed. Reason: Für diesen Befehl ist nicht genügend Speicher verfügbar. (80070008)

Können Sie mir verraten, welcher Speicher gemeint ist? Arbeitsspeicher oder Plattenspeicher?
Das es sich um einen Server handelt (ich sehe den Speicher nicht) - kann mir aber nichr vorstellen, dass er voll ist. Ein spätere Versuch war dann wieder folgreich…

Dazu würden mir im Augenblick nur diese beiden denkbaren Ursachen einfallen:

(a) Zu viele parallele Programme

(b) Arbeitsspeicher: Dank Speicherfragmentierung (Fragmentierung (Informationstechnik) – Wikipedia, kann -auch wenn genug RAM vorhanden ist, üblicherweise 2 GB im 32bit-Prozess - die Fragmentierung von Heaps zu Speichermangel führen. So wie auch 10 Autos à 5 m auf 100 m Seitenstreifenlänge verhindern können, dass da ein 10m LKW parken kann :slight_smile:.

Eine Umstellung Ihrer Anwendung auf 64 Bit könnte die denkbare Ursache b) beseitigen. Bei a) müssten Sie einmal den Artikel von Microsoft prüfen.