rust-lang / rust-lang/rust-bindgen
thread 'main' panicked at 'TranslationUnit::parse failed', libcore/option.rs:960:5 - with --target=path/to/target.json
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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