[libmicrohttpd] race condition on 0.9.73

2021-09-23 Thread José Bollo
Hi, My program sends answers in threads and runs the main MHD loop on external event in an other thread and I get crashes. I'm suspecting LMHD because valgrind point out that the memory for response is used after free in a kind of race condition between internals of MHD. Is it a known issue fixed

Re: [libmicrohttpd] race condition on 0.9.73

2021-09-23 Thread Evgeny Grin
Hi José, For sure you can run MHD with "external poll" mode, but you must ensure that only single thread is calling MHD_run() at any given moment of time. If you want to call several copies of MHD_run(), make sure that you have individual copies of MHD for each thread (start MHD by MHD_start

Re: [libmicrohttpd] race condition on 0.9.73

2021-09-23 Thread José Bollo
On Thu, 23 Sep 2021 18:14:24 +0300 Evgeny Grin wrote: > Hi José, Hi Evgeny, > For sure you can run MHD with "external poll" mode, but you must > ensure that only single thread is calling MHD_run() at any given > moment of time. Okay, that is a good hint, thanks. I'm going to first track concur

Re: [libmicrohttpd] race condition on 0.9.73

2021-09-23 Thread Markus Doppelbauer
> ... because valgrind point out ... You should replace (slow) valgrind with (fast) address-sanatizer. Simply tell GCC (or clang) to compile with: -fsanitize=address -fno- omit-frame-pointer

Re: [libmicrohttpd] race condition on 0.9.73

2021-09-23 Thread Evgeny Grin
On 23.09.2021 18:43, José Bollo wrote: For sure you can run MHD with "external poll" mode, but you must ensure that only single thread is calling MHD_run() at any given moment of time. Okay, that is a good hint, thanks. I'm going to first track concurrent use of MHD_run. FYI, I tried the late

Re: [libmicrohttpd] race condition on 0.9.73

2021-09-23 Thread José Bollo
On Thu, 23 Sep 2021 19:57:23 +0300 Evgeny Grin wrote: > On 23.09.2021 18:43, José Bollo wrote: > >> For sure you can run MHD with "external poll" mode, but you must > >> ensure that only single thread is calling MHD_run() at any given > >> moment of time. > > > > Okay, that is a good hint, tha