Skip to content

Goblin update breaks crates #965

@dtolnay

Description

@dtolnay

Since #960 crates that use symbolic v12 with goblin v0.8 no longer compile.

One affected signature is https://docs.rs/symbolic/12.17.3/symbolic/debuginfo/pe/struct.PeObject.html#method.exception_data, which is a function in symbolic-debuginfo that returns a type from goblin. The type being returned is different between symbolic 12.17.2 and 12.17.3.

One broken crate is https://crates.io/crates/dump-syms. Today if you compile [dependencies] dump_syms = "2.3.7" with the most recent dependencies chosen by cargo update, it fails like this:

error[E0308]: mismatched types
   --> $CARGO_HOME/registry/src/index.crates.io-1949cf8c6b5b557f/dump_syms-2.3.7/src/object_info.rs:143:21
    |
142 |                 collector.collect_placeholder_functions(
    |                           ----------------------------- arguments to this method are incorrect
143 |                     exception_data,
    |                     ^^^^^^^^^^^^^^ expected `goblin::pe::exception::ExceptionData<'_>`, found `ExceptionData<'_>`
    |
note: there are multiple different versions of crate `goblin` in the dependency graph
   --> $CARGO_HOME/registry/src/index.crates.io-1949cf8c6b5b557f/goblin-0.8.2/src/pe/exception.rs:656:1
    |
656 | pub struct ExceptionData<'a> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected type
    |
   ::: $CARGO_HOME/registry/src/index.crates.io-1949cf8c6b5b557f/goblin-0.10.5/src/pe/exception.rs:796:1
    |
796 | pub struct ExceptionData<'a> {
    | ---------------------------- this is the found type
    = help: you can use `cargo tree` to explore your dependency tree
note: method defined here
   --> $CARGO_HOME/registry/src/index.crates.io-1949cf8c6b5b557f/dump_syms-2.3.7/src/collector.rs:426:12
    |
426 |     pub fn collect_placeholder_functions(
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
427 |         &mut self,
428 |         exception_data: &ExceptionData,
    |         ------------------------------

The same crate works if you downgrade symoblic-debuginfo from 12.17.3 to 12.17.2 using the following sequence of commands.

  • cargo update --package=symbolic --precise=12.17.2
  • cargo update --package=symbolic-cfi --precise=12.17.2
  • cargo update --package=symbolic-debuginfo --precise=12.17.2

Metadata

Metadata

Assignees

Labels

No labels
No labels
No fields configured for issues without a type.

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions