Keltin
Anmeldungsdatum: 23.08.2012 Beiträge: 10
|
Verfasst am: 24.02.2017, 10:54 Titel: Bug in fbc 1.05.0 |
|
|
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 |
|