Handling SIGTERM can deadlock because RequestExit() can log stuff. If we happen to be in the malloc at that time of receiving the signal this is going to deadlock the process. In general, we should only use signal safe POSIX functions in handlers.

Steps to Reproduce

Not easy to reproduce but things to check for:

1) Start UE4
2) Press Ctrl+C in the terminal after it's up
3) Check that RequestExitWithStatus prints but is not part of a UE_LOG output
4) Wait until the end and check that RequestExitWithStatus prints in the UE_LOG with an exit code

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-36663 in the post.

Login to Vote

ComponentPlatform - Linux
Target Fix4.20
Fix Commit4101367
Main Commit4124555
Release Commit4101367
CreatedSep 30, 2016
ResolvedMay 30, 2018
UpdatedNov 7, 2018