Issuing a TF_FATAL should trigger an abort/terminate with a non-zero exit code and emit a crash report to stderr.
However, on posix systems, the mechanism uses Arch_DebuggerIsAttachedPosix to conditionally exit 0, without the crash report, presumably to avoid interfearing with the debugger. The current implementation is subject to ptrace permissions settings, and on Linux distros which default to "restricted ptrace", it can return false positives.
The result is that TF_FATAL causes an early terminate with no indication to the user of what happened or why. Worse, the exit code 0 indicates it was a successful process completion, so when used in e.g. a render farm or other cloud compute scenario, it will appear as a successfully completed task.
Steps to Reproduce
Create a Dockerfile:
FROM ubuntu:22.04
RUN apt update && apt install -y python3.10 libpython3.10 pip
RUN pip install usd-core
Description of Issue
Issuing a
TF_FATAL
should trigger an abort/terminate with a non-zero exit code and emit a crash report tostderr
.However, on posix systems, the mechanism uses
Arch_DebuggerIsAttachedPosix
to conditionally exit 0, without the crash report, presumably to avoid interfearing with the debugger. The current implementation is subject to ptrace permissions settings, and on Linux distros which default to "restricted ptrace", it can return false positives.The result is that
TF_FATAL
causes an early terminate with no indication to the user of what happened or why. Worse, the exit code 0 indicates it was a successful process completion, so when used in e.g. a render farm or other cloud compute scenario, it will appear as a successfully completed task.Steps to Reproduce
Tf.Fatal
:Steps to Fix
This is fixed by #3014, if you re-build the container using the updated USD builds from that MR, then the final step produces the expected result:
System Information (OS, Hardware)
Ubuntu 22.04 (or any Linux distro with restricted ptrace permissions)