Hi again,

I improved the fix a little. There was still one case, which was not 
covered.

And I found out, that the job in tntnet do not need to be atomic ref 
counted but simple ref counted is sufficient, which speeds up tntnet in 
my tests by about 1%. Not much but better than nothing. I'm surprised, 
that it was that big that I could measure it.

Tommi

Am 22.09.2013 17:32, schrieb Tommi Mäkitalo:
> Hi,
>
> About a month ago a user reported a crash in tntnet. They have a server
> running with ssl and after one or two days, tntnet crashed with a error
> message "pthread_mutex_unlock failed": errno 1: Operation not permitted.
>
> Yesterday I was finally able to reproduce the bug and today I fixed it
> and checked the fix in.
>
> The bug was not related to ssl at all. It was a racing condition The bug
> has always been in tntnet.
>
> The problem was, that when a request arrives, the thread passes the task
> for waiting for new connections to a new thread. It may happen, that the
> new thread takes it over, accepts a new connection, reads the request
> and answers it before the previous thread drops ownership of this new
> task. The new thread then releases the job before the old and since the
> old thread holds the task longer, it will do the clean up. This clean up
> includes unlocking the session scope. But since the new thread locked
> the session scope, the old thread is not allowed to release the lock.
> The solution is just to drop the ownership of the new job before
> releasing the lock of the job queue in the old thread.
>
> The bug happens only when the client do not use keep alive. Normally a
> browser always uses keep alive. This may be the reason, why it has never
> been a problem.
>
> Tommi


------------------------------------------------------------------------------
LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint
2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes
Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/22/13. 
http://pubads.g.doubleclick.net/gampad/clk?id=64545871&iu=/4140/ostg.clktrk
_______________________________________________
Tntnet-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tntnet-general

Reply via email to