Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Bug in fbc 1.01.1 ?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 10.02.2015, 13:20    Titel: Bug in fbc 1.01.1 ? Antworten mit Zitat

Hallo,

möglicherweise bin ich auf einen Bug in fbc 1.01.0 gestoßen. Das Programm hängt bei ThreadCreate, wenn vorher g = Input(n,#ff) aufgerufen wurde. Wenn die markierte Zeile auskommentiert wird, funktioniert der Thread.

Mit den Vorgängerversionen von fbc gab es dieses Problem nicht.
Code:
Declare Sub animhinweis (parameter As Any Ptr)

Dim Shared As Any Ptr handle
Dim Shared As Integer ende
Dim As String g

Open "text.txt" For Output As #1
Print #1, "abcdefghijklmnopqrstuvwxyz"
Close 1

Open "text.txt" For Binary Access Read As #1
g = Input(4, #1) '<<<<<<<< Diese Zeile auskommentieren, dann funktioniert der Thread
Close 1

handle = ThreadCreate(@animhinweis) 'animierten hinweis starten

Sleep
ende = 1
ThreadWait(handle) 'hinweis beenden
Sleep 1000,1

Sub animhinweis (parameter As Any Ptr)
   'animierter hinweis
      
   Dim As Integer x, altefarbe, altezeile, altespalte
   Dim As String text = "ANIMIERTER HINWEIS"
      
   altefarbe = Color()
   altezeile = CsrLin
   altespalte = Pos()
   ? "animhinweis"
   Do
      For x = 1 To Len(text)
         Locate 16, 25, 0
        Color 10, 0 'normale farbe
        Print Left(text, x-1);
        Color 2, 0 'highlightfarbe
        Print Mid(text, x, 3);
        Color 10, 0 'normale farbe
        Print Mid(text, x+3)
        Color LoWord(altefarbe), HiWord(altefarbe) 'ursprüngliche farbe
        Locate altezeile, altespalte, 0 'cursor an alte position
        Sleep 50,1
        If ende Then
           Exit Do
        EndIf
      Next
      Sleep 1
   Loop
   
   Color LoWord(altefarbe),HiWord(altefarbe)
   Locate 16,25,0
  Print String(Len(text), " ") 'hinweis entfernen
 
  handle = 0 'threadhandle löschen
 
End Sub


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 10.02.2015, 23:30    Titel: Antworten mit Zitat

Feststellung von mir, als ich am Windows 10-Tests machen war: Das Threadmandelbrot-Beispiel verursacht mit dem neuen FB-Compiler nun ebenfalls am Programmende einen "TheadMandelbrot.exe funktioniert nicht mehr" mit dem berühmten "Online nach einer Lösung suchen und das Programm schliessen", was bei FB 0.90.1 noch nicht der Fall ist -> scheint also tatsächlich eine Verschlimmbesserung passiert zu sein.

/edit: Dies passiert sowohl mit FBC 1.00.0 als auch mit dem neu erschienen FBC 1.01.0 -> im internationalen Forum bereits als Bug gemeldet.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 11.02.2015, 02:57    Titel: Antworten mit Zitat

dreael hat Folgendes geschrieben:
im internationalen Forum bereits als Bug gemeldet.
Na ja, dann besteht ja noch Hoffnung. zwinkern

Es muß übrigens eine Methode geben, diesen Fehler zu "heilen", denn ein anderer Thread später in dem Programm, aus dem das gepostete Beispiel stammt, funktioniert einwandfrei. Vielleicht kann man ja einen Workaround basteln.

Gruß
grindstone

EDIT: Keine "Heilung". Der eine Thread läuft, der andere nicht. Keine Ahnung, warum. verwundert
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4597
Wohnort: ~/

BeitragVerfasst am: 11.02.2015, 21:31    Titel: Antworten mit Zitat

Funktioniert es, wenn du statt der Funktion INPUT() die Anweisung verwendest?
Code:
g = space(4)
input #1, g

Unter Linux stürzt so zumindest nichts ab, soweit ich das sehe. INPUT() macht, soweit ich mich erinnere, auch an anderer Stelle eher mal Probleme.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dkl
FreeBASIC-Compiler-Entwickler


Anmeldungsdatum: 25.04.2010
Beiträge: 14
Wohnort: Germany

BeitragVerfasst am: 12.02.2015, 03:52    Titel: Antworten mit Zitat

Hallo,

es gibt tatsächlich seit 1.00.0 einen dummen bug, der zu dead locks in den FB Funktionen führen kann. Danke für das code Beispiel; das hat geholfen den Fehler zu finden.

Das ganze sollte hiermit repariert sein:
https://github.com/freebasic/fbc/commit/f264a9c91313de801a84983385e74f58965921d9
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 12.02.2015, 10:58    Titel: Antworten mit Zitat

@nemored:
Hat sich ja wohl inzwischen eledigt, aber ja, mit input #1, g funktioniert der Thread. Es ist übrigens unnötig, die Variable vorher auf space(4) zu setzen, da sowieso bis zum nächsten Trennzeichen gelesen wird.

dkl hat Folgendes geschrieben:
Das ganze sollte hiermit repariert sein
Dann warten wir mal das nächste Release ab. happy

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4597
Wohnort: ~/

BeitragVerfasst am: 12.02.2015, 16:51    Titel: Antworten mit Zitat

Zitat:
Es ist übrigens unnötig, die Variable vorher auf space(4) zu setzen, da sowieso bis zum nächsten Trennzeichen gelesen wird.

Ich hatte bei meiner Idee von SPACE(4) einen gedanklichen Knoten zwischen INPUT# und GET#. Mit GET# kann man genau so viele Zeichen auslesen, wie man braucht, wenn der String zuvor die richtige Länge hat. Mit INPUT# klappt das so natürlich nicht.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 13.02.2015, 02:28    Titel: Antworten mit Zitat

Mit GET# hängt der Thread ebenfalls, das ist also keine Alternative. traurig

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 13.02.2015, 12:23    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
dkl hat Folgendes geschrieben:
Das ganze sollte hiermit repariert sein
Dann warten wir mal das nächste Release ab. happy

Ansonsten gibts auch nightly builds hier:
http://users.freebasic-portal.de/stw/builds/
Beim jeweils aktuellsten ist der Fix schon drin (ansonsten kannst du dich im Changelog vergewissern)
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 13.02.2015, 22:13    Titel: Antworten mit Zitat

St_W hat Folgendes geschrieben:
Ansonsten gibts auch nightly builds hier:
http://users.freebasic-portal.de/stw/builds/
Beim jeweils aktuellsten ist der Fix schon drin (ansonsten kannst du dich im Changelog vergewissern)

Danke für den Hinweis. Damit könnte ich nun die Windows 10-Tests ebenfalls wiederholen mit passendem Feedback im internationalen Forum, damit Bugs entsprechend als erledigt abgehakt werden können, falls möglich.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz