libmicrohttpd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [libmicrohttpd] MHD_get_fdset throws "Illegal instruction" error


From: Evgeny Grin
Subject: Re: [libmicrohttpd] MHD_get_fdset throws "Illegal instruction" error
Date: Wed, 15 Mar 2017 13:29:20 +0300
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0

Thanks for report!
Yes, MHD_get_fdset2() do not handle situation with thread pool as it
designed to be called from user code only for daemons running external
select.
Fixed in master by return always MHD_NO for daemons with internal
select()/poll()/epoll.
Also now MHD_run() and MHD_run_from_select() always return errors too
for such daemons.

To make it clear: if you start MHD with any option of
MHD_USE_SELECT_INTERNALLY, MHD_USE_POLL_INTERNALLY,
MHD_USE_EPOLL_INTERNALLY or MHD_USE_THREAD_PER_CONNECTION then MHD will
start internal thread(s) and will automatically process incoming
connection with callbacks to user code. You can't use MHD_get_fdset2(),
MHD_get_fdset(), MHD_run(), MHD_run_from_select() as MHD is already
running in other thread.
Note that MHD_OPTION_THREAD_POOL_SIZE require usage of internal threads.

-- 
Best Wishes,
Evgeny Grin

On 15.03.2017 12:57, Vitaliy T wrote:
> Seems to be I have found the root of the problem.
> 
> When I call MHD_get_fdset2() the values are next:
> 
> 1. daemon->epoll_fd == -1 (as I said before).
> 2. daemon->worker_pool[0].epoll_fd == 7 (as it was set initially).
> 
> Someone should fix this, because at the moment I don't know how to do
> this correctly.
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]