Am 09.08.2018 um 19:39 schrieb Andrey Grodzovsky:
[SNIP]
SIGKILL isn't processed as long as any thread of the application is still inside the kernel. That's why we have wait_event_killable().
Can you tell me where is this happening ? What i see is in the code is that do_group_exit calls zap_other_threads which just adds SIGKILL to signal sets of other threads in group and sends a wake up. Then do_exit will close all FDs for current thread and so .flush will be called, when last thread drops it's refcount for the FD .release will be called.
Good question, I have not the slightest idea.
Killed processes certainly doesn't die until all threads return from kernel space, but I'm not 100% sure if that happens before or after the flush.
Christian.
Andrey