[Windows] Bug in ExamineFTPDirectory bei Verzeichnissen mit großer Dateianzahl

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
HW-SW-Tüftler
Beiträge: 11
Registriert: 30.07.2009 07:34
Wohnort: Schaafheim - Mosbach

[Windows] Bug in ExamineFTPDirectory bei Verzeichnissen mit großer Dateianzahl

Beitrag von HW-SW-Tüftler »

Hallo,

auf meiner privaten Homepage archiviere ich - als Hobby-Mykologe - meine Bilder von Pilzen. Die Bilder werden nach festen Regeln benamt, so dass ich mit diversen php-Skripten nach Pilzarten, nach Datum etc. sortieren / filtern und darstellen kann.
Zur Verwaltung der umfangreichen Bilder-Sammlung (derzeit über 17000 Bilder) bin ich dabei, mir ein Verwaltungsprogramm in Purebasic zu programmieren. Bislang benenne ich die Bilder "auf dem Fußweg" und lade sie mit Filezilla auf die Website.

Nun stoße ich auf das Problem, dass ExamineFTPDirectory offensichtlich bei großen Verzeichnissen (mit vielen Dateien) einen Bug aufweist. Es werden beim Auflisten in unregelmäßigen (zumindest habe ich noch keine Regel erkennen können) Abständen Dateien ausgelassen und ggf. Bruchstücke von den ausgelassenen Einträgen dem nächsten Eintrag hinzugefügt. Außerdem ist auffällig (wenn auch nicht schlimm), dass die Dateien in umgekehrter alphabetischer Reihenfolge aufgelistet werden. Schöner wäre die alphabetische Reihenfolge.

Zum Test habe ich ein quotiertes FTP-Testverzeichnis (nimmt max. 10MB entgegen) und einen Test-FTP-User eingerichtet und in das Verzeichnis exakt 18000 Null-Byte-Textdateien abgelegt, deren Namen - bis auf eine vorangestellte 5-stellige laufende Nummer - exakt dem Muster entspricht, wie auch die Pilzbilder benamt werden.

Mit folgendem Test-Programm sieht man das fehlerhafte Verhalten:

Code: Alles auswählen

EnableExplicit
;
;**** Fenster ******************
Enumeration
   #HauptFenster
EndEnumeration
;*******************************
;
;**** Gadgets ******************
Enumeration
   #Gadget_Server_List
EndEnumeration
;*******************************
;
;***** FTP-Verbindungen ********
Enumeration
  #FTP_Test
EndEnumeration
;*******************************


Global FTP_Server$             = "ftp://92.205.50.155"
Global FTP_UserName$           = "53556-Testuser"
Global FTP_Password$           = "PurebasicTest1!"

Global Aktuelles_FTP_Verzeichnis$ = ""
Define i     = 0
Define Event = 0

If OpenWindow(#HauptFenster, 0, 0, 800, 600, "Test FTP-Bug", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_TitleBar|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
   ListIconGadget(#Gadget_Server_List, 25, 25, 750, 550, "FTP-List", 700)
   If OpenFTP(#FTP_Test, FTP_Server$, FTP_UserName$, FTP_Password$)
	   ;MessageRequester("Meldung!","Verbindung erfolgreich aufgebaut!", #PB_MessageRequester_Ok)
	   i=1
	   If ExamineFTPDirectory(#FTP_Test)
	     While NextFTPDirectoryEntry(#FTP_Test)
	        ;AddGadgetItem(#Gadget_Server_List, -1, Str(i) + "  " + FTPDirectoryEntryRaw(#FTP_Test))
	        AddGadgetItem(#Gadget_Server_List, -1, RSet(Str(i), 5, "0") + "  " + FTPDirectoryEntryName(#FTP_Test))
           i = i + 1
        Wend
        FinishFTPDirectory(#FTP_Test)
      Else
	     MessageRequester("Meldung!","Kann das FTP-Verzeichnis nicht auflisten!", #PB_MessageRequester_Ok)  
      EndIf
	   CloseFTP(#FTP_Test)
	   
	Else
	   MessageRequester("Meldung!","Verbindung konnte nicht aufgebaut werden!", #PB_MessageRequester_Ok)
	EndIf
	
   Repeat
      Event = WaitWindowEvent()
     
      Select Event
     
         Case #Gadget_Server_List
              ;MessageRequester("Meldung!","Event im Gadget_Server_List!", #PB_MessageRequester_Ok)     
      EndSelect
   Until Event = #PB_Event_CloseWindow
EndIf
End
Bei Ausführung des o.g. Testprogramms sieht man, dass von den 18000 Dateien nur 17220 und diese teilweise fehlerhaft angezeigt werden. Die letzte Datei "18000_Amiant---Koernchenschirmling_Cystoderma-amianthinum_20241209_133032.txt", die wegen der umgekehrten Reihenfolge in Purebasic zuerst erscheinen sollte, wird schon gleich weggelassen.

Hier sieht man den korrekten Anfang des Verzeichnisses in Filezilla:
http://www.hessler-markus.de/FTP-Verzei ... Anfang.jpg
und hier das Ende der Verzeichnis-Auflistung:
http://www.hessler-markus.de/FTP-Verzei ... a_Ende.jpg

Als Purebasic-Version kommt die aktuelle LTS-Version 6.12 zum Einsatz.
Compiler-Optionen (auch wenn diese nichts mit dem Fehler zu tun haben):
http://www.hessler-markus.de/FTP-Test_C ... tionen.jpg

Über eine baldige Lösung des Problems (evtl. auch als Vorab-Patch) würde ich mich freuen.

Viele Grüße ans Purebasic-Team!
Markus
____________________________________________________________________________
div. PC's mit Win10 und Win7, div. AMIGA's bis 68060, PureBasic 6.12LTS und Elektronik-Bauteile ohne Ende...

Bei Anderen dampft die Zigarette, bei mir der Lötkolben... :-)
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: [Windows] Bug in ExamineFTPDirectory bei Verzeichnissen mit großer Dateianzahl

Beitrag von Kiffi »

HW-SW-Tüftler hat geschrieben: 22.03.2025 22:45Bei Ausführung des o.g. Testprogramms sieht man, dass von den 18000 Dateien nur 17220 und diese teilweise fehlerhaft angezeigt werden.
bei mir werden alle 18000 Dateien aufgelistet.

PB6.21 Beta 2 (x64) / Windows 10 Pro
a²+b²=mc²
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: [Windows] Bug in ExamineFTPDirectory bei Verzeichnissen mit großer Dateianzahl

Beitrag von NicTheQuick »

Der Bug wurde zwar für Windows gemeldet, aber ich hab es mal unter Linux getestet.
Bei mir werden 17833 Dateien aufgelistet und zwischendurch sind ein paar Dateinamen offenbar falsch.
Ein Beispiel wäre diese Zeile:
17259 53556-Testuser 99 0 Mar 18 18:44 00581_Amiant--Koernchenschirmling_Cystoderma-amianthinum_...
Wie man sieht schleicht sich irgendwie der FTP-Username und eine Ausgabe von `ls` in den Dateinamen ein.

Ich habe es mehrmals getestet und jedes Mal ist es eine andere Anzahl von Dateien, die aufgelistet wird.
Es schleicht sich aber auf jeden Fall immer wieder sporadisch ein Datums/Zeitstempel in den Dateinamen ein.

Also ja, irgendwas ist da kaputt und liegt offenbar nicht nur an Windows.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: [Windows] Bug in ExamineFTPDirectory bei Verzeichnissen mit großer Dateianzahl

Beitrag von NicTheQuick »

Ansonsten noch als Hinweis: Wir haben hier zwar ein Bug-Forum, aber Fred schaut nicht wirklich ins deutsche Forum. Am besten postest du den Bug noch im englischen Forum.
Benutzeravatar
HW-SW-Tüftler
Beiträge: 11
Registriert: 30.07.2009 07:34
Wohnort: Schaafheim - Mosbach

Re: [Windows] Bug in ExamineFTPDirectory bei Verzeichnissen mit großer Dateianzahl

Beitrag von HW-SW-Tüftler »

@Kiffi:
bei mir werden alle 18000 Dateien aufgelistet.
Hat sich an den FTP-Befehlen zwischen PB 6.12 LTS und dem von Dir verwendeten PB6.21 Beta 2 (x64) etwas getan / verändert?

*************************************************************************************************************************************************************************************

@NicTheQuick:
M.E. sieht es irgendwie so aus, dass die Ausgabe des FTP-List von FTPExamineDirectory nicht korrekt entgegengenommen wird und möglicherweise ein Speicherbereich nicht ausreichend dimensioniert ist und ggf. tlw. überschrieben wird, weil die fehlerhaften und ausgelassenen Einträge so (scheinbar?) unregelmäßig auftreten.

Werde den Bug heute Abend im englischen Forum nochmals posten...
____________________________________________________________________________
div. PC's mit Win10 und Win7, div. AMIGA's bis 68060, PureBasic 6.12LTS und Elektronik-Bauteile ohne Ende...

Bei Anderen dampft die Zigarette, bei mir der Lötkolben... :-)
Antworten