Skip to content

Conversation

Lysxia
Copy link
Contributor

@Lysxia Lysxia commented Sep 26, 2025

I'm using this function in a third-party application (Creusot) to access private items (by reverse engineering their hash). This works in the happy path, but it panics when an item does not exist. There is no way to hack it downstream because the hook def_path_hash_to_def_id_extern must always return a DefId and its implementation uses def_path_hash_to_def_index which is internal and which is where the panic happens.

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Sep 26, 2025
@rustbot
Copy link
Collaborator

rustbot commented Sep 26, 2025

r? @petrochenkov

rustbot has assigned @petrochenkov.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rust-log-analyzer

This comment has been minimized.

@Lysxia Lysxia force-pushed the no-panic-def-path-hash branch from 03de83d to c0e0d4b Compare September 26, 2025 16:36
@petrochenkov
Copy link
Contributor

Seems reasonable considering that def_path_hash_to_def_id already returns an option for the local crate, so the input hash is not expected to always be valid.
@bors r+

@bors
Copy link
Collaborator

bors commented Sep 26, 2025

📌 Commit c0e0d4b has been approved by petrochenkov

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 26, 2025
@petrochenkov
Copy link
Contributor

There is no way to hack it downstream

Well, there's always catch_unwind :)

GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Sep 27, 2025
…etrochenkov

Make `def_path_hash_to_def_id` not panic when passed an invalid hash

I'm using this function in a third-party application (Creusot) to access private items (by reverse engineering their hash). This works in the happy path, but it panics when an item does not exist. There is no way to hack it downstream because the hook `def_path_hash_to_def_id_extern` must always return a `DefId` and its implementation uses `def_path_hash_to_def_index` which is internal and which is where the panic happens.
bors added a commit that referenced this pull request Sep 27, 2025
Rollup of 9 pull requests

Successful merges:

 - #140482 (std::net: update tcp deferaccept delay type to Duration.)
 - #146037 (Introduce CoerceShared lang item and trait, and basic Reborrow tests)
 - #146732 (tests: relax expectations after llvm change 902ddda120a5)
 - #147018 (re-order normalizations in run-make linker-warning test)
 - #147032 (Fix doctest compilation time display)
 - #147046 (Rename `rust.use-lld` to `rust.bootstrap-override-lld`)
 - #147050 (PassWrapper: update for new PGOOptions args in LLVM 22)
 - #147075 (Make `def_path_hash_to_def_id` not panic when passed an invalid hash)
 - #147076 (update issue number for more_float_constants)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit that referenced this pull request Sep 27, 2025
Rollup of 8 pull requests

Successful merges:

 - #146037 (Introduce CoerceShared lang item and trait, and basic Reborrow tests)
 - #146732 (tests: relax expectations after llvm change 902ddda120a5)
 - #147018 (re-order normalizations in run-make linker-warning test)
 - #147032 (Fix doctest compilation time display)
 - #147046 (Rename `rust.use-lld` to `rust.bootstrap-override-lld`)
 - #147050 (PassWrapper: update for new PGOOptions args in LLVM 22)
 - #147075 (Make `def_path_hash_to_def_id` not panic when passed an invalid hash)
 - #147076 (update issue number for more_float_constants)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit a2b77d0 into rust-lang:master Sep 28, 2025
10 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Sep 28, 2025
rust-timer added a commit that referenced this pull request Sep 28, 2025
Rollup merge of #147075 - Lysxia:no-panic-def-path-hash, r=petrochenkov

Make `def_path_hash_to_def_id` not panic when passed an invalid hash

I'm using this function in a third-party application (Creusot) to access private items (by reverse engineering their hash). This works in the happy path, but it panics when an item does not exist. There is no way to hack it downstream because the hook `def_path_hash_to_def_id_extern` must always return a `DefId` and its implementation uses `def_path_hash_to_def_index` which is internal and which is where the panic happens.
@matthiaskrgr
Copy link
Member

@Lysxia
Copy link
Contributor Author

Lysxia commented Sep 28, 2025

Yeah, that fixes the ice at the unwrap, possibly replaced by a different error later on.

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

Labels

S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants