[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [libmicrohttpd] [PATCH] epoll: add locking around eready DLL
From: |
Christian Grothoff |
Subject: |
Re: [libmicrohttpd] [PATCH] epoll: add locking around eready DLL |
Date: |
Tue, 15 Mar 2016 20:30:52 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.5.0 |
I just checked, and indeed there was (still) this inconsistency in the
code where with MHD_USE_THREAD_PER_CONNECTION we were (on some code
paths) manipulating the shared eready DLLs. As we don't need it, the
answer is not to introduce locking, but to just not use the data
structure.
I've now fixed this in SVN 36931.
On 03/15/2016 08:17 PM, Dan Dedrick wrote:
> I actually did see a SIGSEGV in EDLL_insert() on "(head)->prevE =
> element;". tail was a valid pointer but the value for head was NULL. When I
> look at the coredump though I see that the head and tail are both valid
> pointers at this point and they point to a different connection pointer
> than the one we were looking to add. I can see that there are 2 threads in
> this process in MHD_handle_connection() for the same daemon. It might be
> worth noting that this is running with MHD_USE_THREAD_PER_CONNECTION where
> as far as I can see does share a daemon structure across multiple threads.
>
> Where this failed it was running 0.9.34 of libmicrohttpd. I'm going to dig
> in to see if I can see how this could get into this state.
signature.asc
Description: OpenPGP digital signature