rust-lang / rust-lang/rust-bindgen

thread 'main' panicked at 'TranslationUnit::parse failed', libcore/option.rs:960:5 - with --target=path/to/target.json

Open
#1,331 11 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
5.3k
Forks
829
Avg merge
1d 1h
Merged PRs (30d)
15

Description

cargo recently gained the ability for --target to point a JSON file, instead of being the name of a target found in RUST_TARGET_PATH.

Using bindgen in a build script when compiling with --target=path/to/target.json produces sadness:

+ [running] ['cargo', 'xbuild', '--target', '/home/travis/build/alex/linux-kernel-module-rust/tests/../x86_64-linux-kernel-module.json']
    Updating registry `https://github.com/rust-lang/crates.io-index`
   Compiling linux-kernel-module v0.1.0 (file:///home/travis/build/alex/linux-kernel-module-rust)
error: failed to run custom build command for `linux-kernel-module v0.1.0 (file:///home/travis/build/alex/linux-kernel-module-rust)`
process didn't exit successfully: `/home/travis/build/alex/linux-kernel-module-rust/tests/printk/../target/debug/build/linux-kernel-module-49ebd67b170fe49c/build-script-build` (exit code: 101)
--- stdout
cargo:rerun-if-changed=src/bindings_helper.h
--- stderr
thread 'main' panicked at 'TranslationUnit::parse failed', libcore/option.rs:960:5
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::print
             at libstd/sys_common/backtrace.rs:71
             at libstd/sys_common/backtrace.rs:59
   2: std::panicking::default_hook::{{closure}}
             at libstd/panicking.rs:211
   3: std::panicking::default_hook
             at libstd/panicking.rs:227
   4: std::panicking::rust_panic_with_hook
             at libstd/panicking.rs:511
   5: std::panicking::continue_panic_fmt
             at libstd/panicking.rs:426
   6: rust_begin_unwind
             at libstd/panicking.rs:337
   7: core::panicking::panic_fmt
             at libcore/panicking.rs:92
   8: core::option::expect_failed
             at libcore/option.rs:960
   9: <core::option::Option<T>>::expect
             at /checkout/src/libcore/option.rs:312
  10: bindgen::ir::context::BindgenContext::new
             at /home/travis/.cargo/registry/src/github.com-1ecc6299db9ec823/bindgen-0.37.0/src/ir/context.rs:559
  11: bindgen::Bindings::generate
             at /home/travis/.cargo/registry/src/github.com-1ecc6299db9ec823/bindgen-0.37.0/src/lib.rs:1634
  12: bindgen::Builder::generate
             at /home/travis/.cargo/registry/src/github.com-1ecc6299db9ec823/bindgen-0.37.0/src/lib.rs:1102
  13: build_script_build::main
             at ./build.rs:72
  14: std::rt::lang_start::{{closure}}
             at /checkout/src/libstd/rt.rs:74
  15: std::panicking::try::do_call
             at libstd/rt.rs:59
             at libstd/panicking.rs:310
  16: __rust_maybe_catch_panic
             at libpanic_unwind/lib.rs:105
  17: std::rt::lang_start_internal
             at libstd/panicking.rs:289
             at libstd/panic.rs:392
             at libstd/rt.rs:58
  18: std::rt::lang_start
             at /checkout/src/libstd/rt.rs:74
  19: main
  20: __libc_start_main
  21: <unknown>

Full output in CI at https://travis-ci.org/alex/linux-kernel-module-rust/builds/392023111

And the diff showing the change that produces this at https://github.com/alex/linux-kernel-module-rust/pull/50/files

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with cargo xbuild --target path/to/target.json and the build script at build.rs:72. Start by reading bindgen::ir::context::BindgenContext::new at src/ir/context.rs:559, then trace the Bindings::generate and Builder::generate calls shown in the stack trace. Done means this target form no longer panics during binding generation.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
build-system, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.