commit f300c925ecb7ebc05b5b65b00e0c845cbd4965d5 from: Omar Polo date: Fri Jul 12 18:34:55 2024 UTC backout 4f73a04b63 "Remove unnecessary sched_yield(2)" this made tog regress hang in an infinite loop, reported by naddy. Remove unnecessary sched_yield(2). Re-applies commit 6b8a2b8fcd99c4365b1aa9513c0f0149beac2491 which was reverted in commit 82954512f323c8a2d4f89d51be1e6b0f707b6c3a because at the time the change broke the 'search' feature. Quick testing suggests search is now working fine, so let's try again. commit - 243943f63dac33bd84f18ae5c81cff8f79d4b29f commit + f300c925ecb7ebc05b5b65b00e0c845cbd4965d5 blob - 38cb4a714d73a34d03df0760e883cf0196000dbc blob + 674de2c51543e1af563af32b17a4d609805167ec --- tog/tog.c +++ tog/tog.c @@ -40,6 +40,7 @@ #include #include #include +#include #include "got_version.h" #include "got_error.h" @@ -1716,6 +1717,15 @@ view_input(struct tog_view **new, int *done, struct to } if (view->searching && !view->search_next_done) { + errcode = pthread_mutex_unlock(&tog_mutex); + if (errcode) + return got_error_set_errno(errcode, + "pthread_mutex_unlock"); + sched_yield(); + errcode = pthread_mutex_lock(&tog_mutex); + if (errcode) + return got_error_set_errno(errcode, + "pthread_mutex_lock"); view->search_next(view); return NULL; }