Skip to content

Point ExecuTorch and AOTInductor at the real TORCH_CHECK - #21604

Closed
t-ivan-gr wants to merge 1 commit into
pytorch:mainfrom
t-ivan-gr:export-D114896618
Closed

Point ExecuTorch and AOTInductor at the real TORCH_CHECK#21604
t-ivan-gr wants to merge 1 commit into
pytorch:mainfrom
t-ivan-gr:export-D114896618

Conversation

@t-ivan-gr

Copy link
Copy Markdown

Summary:

Why

Clears the multiple ODR violations carried by any binary that links both
ExecuTorch and libtorch. This is the diff that does it; the previous diff in the
stack is the prerequisite refactor.

How

With c10::Error and torchCheckFail() now header-only, nothing needs
STANDALONE_TORCH_HEADER any more. This removes it at both definers -- the
ExecuTorch build config and AOTInductor's cpp_builder -- and deletes the second
TORCH_CHECK expansion it selected. One expansion means one definition of every
header-inline c10 function that uses TORCH_CHECK.

Libtorch-independent consumers do not regress: they now get the real
c10::Error with the real message, and simply no symbolized C++ stack unless a
backtrace fetcher is installed.

Behaviour change worth noting

TORCH_CHECK in those builds now throws c10::Error instead of
std::runtime_error. c10::Error derives from std::exception, not from
std::runtime_error, so any catch (const std::runtime_error&) written around
a TORCH_CHECK in a flag-setting build will stop catching and needs updating.

Differential Revision: D114896618

Summary:
## Why

Clears the **multiple ODR violations** carried by any binary that links both
ExecuTorch and libtorch. This is the diff that does it; the previous diff in the
stack is the prerequisite refactor.

## How

With `c10::Error` and `torchCheckFail()` now header-only, nothing needs
`STANDALONE_TORCH_HEADER` any more. This removes it at both definers -- the
ExecuTorch build config and AOTInductor's `cpp_builder` -- and deletes the second
`TORCH_CHECK` expansion it selected. One expansion means one definition of every
header-inline c10 function that uses `TORCH_CHECK`.

Libtorch-independent consumers do not regress: they now get the real
`c10::Error` with the real message, and simply no symbolized C++ stack unless a
backtrace fetcher is installed.

## Behaviour change worth noting

`TORCH_CHECK` in those builds now throws `c10::Error` instead of
`std::runtime_error`. `c10::Error` derives from `std::exception`, *not* from
`std::runtime_error`, so any `catch (const std::runtime_error&)` written around
a `TORCH_CHECK` in a flag-setting build will stop catching and needs updating.

Differential Revision: D114896618
@pytorch-bot

pytorch-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/21604

Note: Links to docs will display an error until the docs builds have been completed.

❌ 3 New Failures, 1 Cancelled Job, 1 Unrelated Failure

As of commit 3dd8c9a with merge base bfeeb05 (image):

NEW FAILURES - The following jobs have failed:

  • Cadence Build & Test / hifi-build / hifi4 (gh)
    ##[error]Refusing to check out fork pull request code from a 'pull_request_target' workflow. This workflow runs with the base repository's GITHUB_TOKEN, secrets, default-branch cache scope, and runner access. Fetching and executing a fork's code in that trusted context commonly leads to "pwn request" vulnerabilities. To opt in, review the risks at https://gh.io/securely-using-pull_request_target and set 'allow-unsafe-pr-checkout: true' on the actions/checkout step.
  • Cadence Build & Test / vision-build / vision (gh)
    ##[error]Refusing to check out fork pull request code from a 'pull_request_target' workflow. This workflow runs with the base repository's GITHUB_TOKEN, secrets, default-branch cache scope, and runner access. Fetching and executing a fork's code in that trusted context commonly leads to "pwn request" vulnerabilities. To opt in, review the risks at https://gh.io/securely-using-pull_request_target and set 'allow-unsafe-pr-checkout: true' on the actions/checkout step.
  • pull / test-eval_llama-wikitext-linux / linux-job (gh)
    RuntimeError: Command docker exec -t c7be912ae617f5216413b5c82bef893ae4d653cd02ae159d4b1304d6efdacd54 /exec failed with exit code 1

CANCELLED JOB - The following job was cancelled. Please retry:

BROKEN TRUNK - The following job failed but were present on the merge base:

👉 Rebase onto the `viable/strict` branch to avoid these failures

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Aug 5, 2026
@meta-codesync

meta-codesync Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

@t-ivan-gr has exported this pull request. If you are a Meta employee, you can view the originating Diff in D114896618.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

This PR needs a release notes: label

If your change should be included in the release notes (i.e. would users of this library care about this change?), please use a label starting with release notes:. This helps us keep track and include your important work in the next release notes.

To add a label, you can comment to pytorchbot, for example
@pytorchbot label "release notes: none"

For more information, see
https://github.com/pytorch/pytorch/wiki/PyTorch-AutoLabel-Bot#why-categorize-for-release-notes-and-how-does-it-work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant