-
Notifications
You must be signed in to change notification settings - Fork 13k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
beta 1.33 seems to break tarpaulin on multithreading #58104
Comments
visiting for triage. P-high for initial investigation; assigning that task to @nagisa |
This will be hard for me to reliably bisect because among the failures related to sigsegv I also get
Bisection says that the sigsegv began in 2fba17f (#56837), cc @nikomatsakis @arielb1 The callstack looks like this:
I won’t be able to look into it much more at the moment. |
I suppose I'll have to investigate this then. Hope I can find enough time. |
triage: speculatively assigning to @arielb1 . They should hopefully unassign themselves if they are unable to look into this. |
Realistically I expect this to be a regression because we have ~4 days left before we need to produce the stable artifacts. |
had some busy time, will try to look at this quickly |
This appears to be triggered by the breakpoints |
Looking at the backtrace
Something is smashing the stack of |
This is getting weird. The call %rdi is not pointing to the correct place??? Similar crashes: |
I smell a bug in
|
It appears that in bad traces, somehow the SIGTRAP signal is never received for the second breakpoint (at 0x403820) despite that byte being an bad trace:
good trace:
|
Reproduction StatusI can reproduce the segfault on 244b05d - before 2fba17f (#56837), which means the bisection was wrong. I used tarpaulin f95f717222e708f6bf0f7c5d2ee0b8f63a9f5c7e (from Jan 21). This also doesn't feel to me like quite a miscompilation bug, but rather some ptrace oddity in tarpaulin. It would be nice if someone who understands ptrace would look at this. |
@arielb1 weird, I even did bisect twice running the reproducer 32 times at each step on each bors merge, and it ended up pointing out the same commit both times. And I was thinking that the PR indeed looked very unlikely to be the actual cause. I bisected again, based on prebuilt nightlies, twice, running the reproduction 64 times at each step and it points out a range of 2018-12-08 to 2018-12-14 – way before your PR landed. Sorry for the false alert! I will run bisection on merges between 2018-12-08 and 2018-12-14 now. |
In that case, there is probably nothing actionable on our side. |
Nominating for discussion at T-compiler meeting. My predisposition is to close this bug as non-actionable. |
closing as non-actionable. |
Consider the following minimal project:
Cargo.toml
src/lib.rs
Install tarpaulin from crates.io:
And run it on this small project using either stable (
rustc 1.32.0 (9fda7c223 2019-01-16)
) or beta (rustc 1.33.0-beta.5 (1045131c1 2019-01-31)
) rustc:cargo +stable tarpaulin
: works as expectedcargo +beta tarpaulin
: occasionally, (in roughly 15% of the runs), tarpaulin errors as the test executable segfaultedI have no idea what is at fault here, but apparently something in the last beta of rustc was changed which broke the way tarpaulin does its instrumentation. For more details, the segfault appears to only occur if at least 2 tests in the same binary involve spawning threads, and seem to be more likely the more threads are spawned.
See xd009642/tarpaulin#190 for full details.
The text was updated successfully, but these errors were encountered: