• Marek Chalupa's avatar
    tests: test if thread can block on error · 171e0bda
    Marek Chalupa authored
    wl_display_read_events() can make a thread wait until some other thread
    ends reading. Normally it wakes up all threads after the reading is
    done. But there's a place when it does not get to waking up the threads
    - when an error occurs. This test reveals bug that can block programs.
    
    If a thread is waiting in wl_display_read_events() and another thread
    calls wl_display_read_events and the reading fails,
    then the sleeping thread is not woken up. This is because
    display_handle_error is using old pthread_cond instead of new
    display->reader_cond, that was added along with wl_display_read_events().
    Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
    171e0bda
display-test.c 10.9 KB