• Show log

    Commit

  • Hash : f70e1973
    Author : Cameron Gutman
    Date : 2021-02-08T18:31:08

    Fix waiting on condition variables with the SRW lock implmentation
    
    When SleepConditionVariableSRW() releases the SRW lock internally, it causes
    our SDL_mutex_srw state to become inconsistent. The lock is unowned yet inside,
    the owner is still the sleeping thread and more importantly the owner count is
    still 1.
    
    The next time someone acquires the lock, they will bump the owner count from 1
    to 2. At that point, the lock is hosed. From the internal lock state, it looks
    to us like that owner has acquired the lock recursively, even though they have
    not. When they call SDL_UnlockMutex(), it will see the owner count > 0 and not
    call ReleaseSRWLockExclusive().
    
    Now when someone calls SDL_CondSignal(), SleepConditionVariableSRW() will start
    the wakeup process by attempting to re-acquire the SRW lock. This will deadlock
    because the lock was never released after the other thread had used it. The
    thread waiting on the condition variable will never be able to wake up, even if
    the SDL_CondWaitTimeout() function is used and the timeout expires.
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/SDL.git
    Git SSH git@git.kmx.io:kc3-lang/SDL.git
    Public access ? public
    Description

    Fork of https://github.com/libsdl-org/SDL

    Users
    thodg_w kc3_lang_org thodg_l thodg_m www_kmx_io thodg
    Tags