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.05.0

 
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
Keltin



Anmeldungsdatum: 23.08.2012
Beiträge: 10

BeitragVerfasst am: 24.02.2017, 09:54    Titel: Bug in fbc 1.05.0 Antworten mit Zitat

Hallo,

ich hab da scheinbar ein Problem mit einen Bug in Condbroadcast.
Mein Programm läuft meist Tage lang bis diesen Fehler auftritt und bleibt dann einfach irgendwann stehen, da der Haupt Thread der Condbroadcast ausführt danach nicht mehr weiterläuft.

Im groben hat mein Programm diesen aufbau:
Code:

Dim Shared WaitMutex         As Any Ptr
Dim Shared WaitCond            As Any Ptr
WaitMutex = MutexCreate()
WaitCond = Condcreate()
...
Starten der Threads
...
Do
   ...
   Print "Vor Condbroadcast"
   Condbroadcast(WaitCond)
   Print "Nach Condbroadcast"
   Sleep 60000,1
   ...
Loop

Sub Thread (...)
   ...
Do
   Print "Vor Condwait"
   MutexLock WaitMutex
   Condwait(WaitCond, WaitMutex)
   MutexUnlock WaitMutex
   Print "Nach Condwait"
   ...
   Print "Thread Loop Ende"
Loop
End Sub


Die Zeit von 1 Minute reicht für die Subs mehr als aus um durchzulaufen und wieder bei Condwait zu warten.
als Ausgabe hat man dann etwa das bei 3 Threads:

    Vor Condbroadcast
    Nach Condwait
    Nach Condwait
    Nach Condwait
    Thread Loop Ende
    Thread Loop Ende
    Thread Loop Ende
    Vor Condwait
    Vor Condwait
    Vor Condwait


Das "Nach Condbroadcast" fehlt wenn der Fehler auftritt und da bleibt dann alles stehen. Solange alles normal läuft ist das "Nach Condbroadcast" natürlich mit drin. Daher meine vermutung mit den Bug in Condbroadcast.

Bisher ist der Fehler nur unter Windows aufgetreten. Unter Linux hatte ich entweder glück oder dort gibt es den Bug nicht.

MfG
Keltin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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