rust-lang / rust-lang/rust-bindgen
SIGSEGV / Segfault in 0.61.0
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 5.3k
- Forks
- 829
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 15
Description
I just upgraded bindgen to 0.63.0 and was greeted with a segfault. A little bit of manual bisect yielded version 0.61.0 as the first offender.
I'll start digging deeper into the issue soon, I plan to do a git bisect to figure out the commit that introduced the issue and if that doesn't help try to get my build-system running with gdb attached for a backtrace. I'm also open to other debugging suggestions.
Note: this could be duplicate of #2035, but bindgen still works fine for me up until the segfault in 0.61.0 and above.
Input C/C++ Header
It's a large code base with long build times, I'd rather not try to find a minimal reproducer if possible.
Bindgen Invocation
bindgen::Builder::default()
.derive_debug(true)
.derive_default(true)
.impl_debug(true)
.generate_comments(true)
.default_enum_style(bindgen::EnumVariation::NewType {
is_bitfield: false,
is_global: false, // new in `0.61.0`, same crash with `true`
})
.header("wrapper.h")
.clang_args(crate::bindgen_clang_args()) // extracted from build target
.allowlist_*("...")
.blocklist_function("main_loop_wait") // bindgen issue #1313
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
.generate()
Actual Results
error: failed to run custom build command for `crate`
Caused by:
process didn't exit successfully: `/crate-b7933947bb539228/build-script-build` (signal: 11, SIGSEGV: invalid memory reference)
Expected Results
No segfault.
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
Start with the bindgen::Builder invocation and wrapper.h, reproducing the SIGSEGV between versions 0.61.0 and 0.63.0. Run the proposed git bisect, then use gdb with the build system if needed; done means identifying the regression and providing a fix or actionable diagnosis that prevents the crash.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, cpp, rust
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100