So physically the operations for the subsequent writers completed after updating the length fields in their headers but logically they are not completed until they become visible to the reader and that requires updating the length field in the header of the failed writer. The situation seems even worse when the writer responsible to rotate the logs fails.
I did not look into the source code, they are probably dealing with failed writers, but the presentation alone does not provide any hints to me how they do it.
https://github.com/real-logic/Aeron/blob/master/aeron-client...
By kill a thread I assume you mean use the OS to interrupt and terminate the thread from the outside while in such a simple algorithm and yet expect it to cope. Have you tried this on any java.util.concurrent classes and reported the "bugs" you have found? I'd be interested in the feedback you got. :-)
http://www.hermanmiller.com/products/seating/performance-wor...