-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
gdb 8.1 fails debuginfo tests (output changed). #52452
Comments
@Pazzaz Hmm, do you specifically want more information? The build server I use is NixOS and it was updated recently, which appears to have picked up gdb 8.1, which has slightly different output. |
I have the same or a similar problem:
I'm on Ubuntu 18.04, using gdb 8.1. |
@eddyb It was that I encountered the bug on my own machine, running Ubuntu 18.04 and gdb 8.1. (same as nnethercote) |
Encountered this on current Debian unstable with gdb 8.1. |
I think the new output is more correct and so the thing to do is update the tests. I looked through the gdb 8.1 git log, searching for a change that would affect this. All I found, though, was this commit: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=ec8df23454873916c6b6b918967af631b268acd8 ... which claims that the change was in rustc, not gdb. |
cc @alexcrichton Can we reasonably update the tests? |
So long as we're still running tests on CI seems fine by me (I forget if we have min-gdb-version yet) |
I would be awesome to mostly base our tests on |
Yes, we do. Somewhere also there was a PR that built a local gdb in travis. Though now that 8.2 is officially out perhaps it isn't too hard to upgrade some config somewhere. |
It was #53497, but I'm also talking with Matthias Klose about getting a newer gdb into the Ubuntu toolchain PPA, which would be a lot simpler I think. |
@tromey ok great! All of our builds are pretty self-contained and independently upgradeable, so it should be fine to move a builder to Ubuntu 18.04 from where it's at now (that's what I'm running locally now and see these failures). We could then tag everything with a minimum version and they'll only get run on this one bot |
FWIW testing locally I can only get failures with gdb 8.2 and later, not 7.11 or 8.1. Perhaps Ubuntu's "8.1" is actually based on something later. This may complicate the version check. |
Well, that seems wrong to me now. The test says:
And when I update the Dockerfile and run the tests I get:
I think what is happening here is that LLVM is not emitting This applies to the C-style enum fails, but the others seem similar. More later after I rebuild & see if I can provoke it in a more debuggable way. |
I can't reproduce with a clean build of git master and gdb 8.1, but I can via an update Dockerfile. I wonder if there's some LLVM difference between these two builds somehow. |
I do see some differences with gdb 8.2. For example:
Here the Since Matthias put gdb into the Ubuntu toolchain PPA perhaps instead we can just update to 8.2 and go from there. I'll give it a try. |
I'm going to put this into the #54004 series to avoid making extra rebasing work for myself. But first I think we're going to need a way to specify the maximum LLVM version in the tests so we can continue to properly test fallback cases. |
Bug rust-lang#52452 notes some debuginfo test regressions when moving to gdb 8.1. This series will also cause versions of gdb before 8.2 to fail when a recent LLVM is used -- DW_TAG_variant_part support was not added until 8.2. This patch updates one of the builders to a later version of Ubuntu, and then arranges to install gdb 8.2 from the toolchain PPA. It updates the relevant tests to require both a new-enough LLVM and a new-enough gdb; the subsequent patch arranges to continue testing the fallback mode. The "gdbg" results are removed from these tests because the tests now require a rust-enabled gdb.
Bug rust-lang#52452 notes some debuginfo test regressions when moving to gdb 8.1. This series will also cause versions of gdb before 8.2 to fail when a recent LLVM is used -- DW_TAG_variant_part support was not added until 8.2. This patch updates one of the builders to a later version of Ubuntu, which comes with gdb 8.2. It updates the relevant tests to require both a new-enough LLVM and a new-enough gdb; the subsequent patch arranges to continue testing the fallback mode. The "gdbg" results are removed from these tests because the tests now require a rust-enabled gdb. If you read closely, you'll see that some of the lldb results in this patch still look a bit strange. This will be addressed in a subsequent patch; I believe the fix is to disable the Python pretty-printers when lldb is rust-enabled.
I couldn't reproduce this today with git master; I tried running the debuginfo tests against gdb 7.11, gdb 8.1, and gdb 8.2. |
It's no longer reproducing for me, either. |
I'm closing it, if someone else reproduces please re-open or re-file. Thanks. |
Hi, I don't have privs to re-open the bug, but I get gdb compiletest failures reproducibly on today's master ( For example, using gdb-8.1 (fresh clone and build):
Is this line anything to do with it?
Thanks |
Also tried with gdb-8.1. No joy. |
Some of these tests are being changed by patches already in the queue. However for
This test is trying to test the gdb pretty-printers, but the actual output seems to indicate that they aren't firing. |
Does it use an "auto-load script" by any chance? There's that rather fishy line in the output:
This is a pretty minimal install I'm testing on.Perhaps I'm missing a test dependency? Anything you'd like me to try? |
I don't need debuginfo enabled in |
Yes. Did you build your gdb with Python enabled? If that were missing I think it would cause this error. |
That's probably the issue. |
If you can try rebuilding gdb against Python, that would tell us for sure. Otherwise, if you'd rather not, then I think we should re-close this bug. Please let me know, thanks. |
Just trying it now. Bear with me. |
gdb has python support alright:
Same auto-load warning present. Also tried python-3.5. Any other ideas? |
As far as I know, something going wrong with Python scripting is the only reason to get that auto-load error. One idea would be to double-check what is going on by adding lines like this to one of the test
... then post the output from that test. You can also check that python works like:
|
That does work. I already tried it. Watch this space for the other output. |
Sorry, I had the PATH set to the old non-python enabled gdb! It didn't crash those tests using the right gdb. It might be worth mentioning somewhere (compiler guide?) that you need a python enabled gdb? Also, which version of python is preferred? |
Yeah.
It shouldn't matter as far as either gdb or the rust pretty-printers are concerned. |
I'm going to re-close this now. |
Please go ahead. And thanks for the help. Do you want me to raise a PR on the compiler guide? |
Sure, thanks. |
Why don't we detect |
Universes This PR transitions the compiler to use **universes** instead of the **leak-check**. It is marked as [WIP] for a few reasons: - The diagnostics at present are terrible =) - This changes the behavior of coherence, regressing some things that used to compile The goals of this PR at present are: - To start getting some eyes on the code - To do a crater run - To see the full travis results (due to #52452, I am not able to run the full test suite locally anymore at present) The first few commits in the PR are changing how `evaluate` treats regions. We now track whether region comparisons occurred, reverting the "staticized" query approach that @arielb1 put in. The problem with "staticized" queries is that it relied on the leak-check to get higher-ranked things correct, and we are removing the leak-check in this PR series, so that caused problems. You can see at the end a collection of test updates. Mostly we behave the same but with atrocious diagnostics, but there are a number of cases where we used to error and now no longer do, as well as single case where we used to **not** error but we now do (the coherence-subtyping change). (Note: it would be possible to do a version of leak-check that propagates universe information and recover the old behavior. I am reluctant to do so because I'd like to leave us room to get more precise -- e.g., I want to eventually handle things like `exists<'a> { for<'b> { if ('a: 'b) { 'a: 'b } } }` which presently the leak-check cannot cope with etc. Also because it seems more consistent to me: most folks I've talked to expect the new behavior and are surprised to learn that binding sites were so significant before when it comes to coherence. One question is, though, to what extent are people relying on this in the wild?)
AFAICT, it appears to print
module::Enum::Variant {...}
instead ofmodule::Variant {...}
now.cc @tromey @michaelwoerister
The text was updated successfully, but these errors were encountered: