[Bug 2007642] Re: Upgrade Rust to 1.67.1

Bug Watch Updater 2007642 at bugs.launchpad.net
Tue Mar 28 20:22:03 UTC 2023


Launchpad has imported 20 comments from the remote bug at
https://sourceware.org/bugzilla/show_bug.cgi?id=30158.

If you reply to an imported comment from within Launchpad, your comment
will be sent to the remote bug automatically. Read more about
Launchpad's inter-bugtracker facilities at
https://help.launchpad.net/InterBugTracking.

------------------------------------------------------------------------
On 2023-02-23T13:57:09+00:00 Matthias Klose wrote:

the rustc testsuite fails with 13.1 on i686-linux-gnu and powerpc64le-
linux-gnu, apparently worked before with trunk 20230114, both reported
on Debian and Ubuntu:

https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/10
claims:

/build/gdb-i4hVub/gdb-13.1/gdb/frame.c:2457: internal-error: inside_main_func: Assertion `block != nullptr' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.


https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031745

same internal error

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/12

------------------------------------------------------------------------
On 2023-02-23T23:12:44+00:00 Hector Oron wrote:

Created attachment 14714
test case with readme

Attaching code that reproduces the issue. See README file.

Original source: https://salsa.debian.org/fg/rustc-gdb-1031745

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/13

------------------------------------------------------------------------
On 2023-02-23T23:17:58+00:00 Hector Oron wrote:

With attached testcase I am able to reproduce the issue using gdb 13.1,
but it works using 13.0.91.20230210.

It might be related to the patch that fixed PR/30116.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/14

------------------------------------------------------------------------
On 2023-02-24T02:22:21+00:00 Tromey-b wrote:

Ugh.  I'll investigate.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/15

------------------------------------------------------------------------
On 2023-02-24T08:27:29+00:00 Hector Oron wrote:

I confirm that reverting patch for PR/30116 makes the rust testsuite
work again (for me).

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/16

------------------------------------------------------------------------
On 2023-02-24T16:57:09+00:00 Tromey-b wrote:

The crash is in inside_main_function, due to the modifications here:

    commit 9370fd51ebfca8a8acacaecb92c57ee54f4f8382
    gdb: detect main function even when there's no matching msymbol

First, gdb doesn't find the minsym, probably because the msyms
contain:

[99] t 0x90c0 _ZN17rustc_gdb_10317454main17h5b5be7fe16a97225E section
.text  rustc_gdb_1031745::main::h5b5be7fe16a97225  zko06yobckx336v

... but we're looking for:

(top-gdb) p name
$13 = 0x292e0c0 "rustc_gdb_1031745::main"

The _Z overloading strikes again.

Anyway somehow we find a full symbol for this, but it doesn't
have a block, so the assert fails.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/17

------------------------------------------------------------------------
On 2023-02-24T17:04:01+00:00 Tromey-b wrote:

rustc decides to emit both:

 <2><2f5b>: Abbrev Number: 10 (DW_TAG_subprogram)
...
    <2f6e>   DW_AT_name        : (indirect string, offset: 0x23a): main

and

 <2><2f95>: Abbrev Number: 2 (DW_TAG_namespace)
    <2f96>   DW_AT_name        : (indirect string, offset: 0x23a): main

in the same scope.

Then the lookup finds the wrong one, because gdb's symbol tables
are bad and still follow C namespace rules.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/18

------------------------------------------------------------------------
On 2023-02-24T17:09:09+00:00 Tromey-b wrote:

We can avoid the crash pretty easily but stopping the 'bt'
before _start is harder.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/19

------------------------------------------------------------------------
On 2023-02-24T17:14:07+00:00 Tromey-b wrote:

Another thought here is it would probably be better on the whole
to use the main symbol's linkage name; but that too seems like
a larger change.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/20

------------------------------------------------------------------------
On 2023-02-24T17:52:06+00:00 Tromey-b wrote:

https://sourceware.org/pipermail/gdb-patches/2023-February/197370.html

I'll apply to the gdb 13 branch as well when it goes in.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/21

------------------------------------------------------------------------
On 2023-02-24T23:15:14+00:00 Hector Oron wrote:

(In reply to Tom Tromey from comment #9)
> https://sourceware.org/pipermail/gdb-patches/2023-February/197370.html

Thanks! That worked with the test case.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/22

------------------------------------------------------------------------
On 2023-02-27T12:54:44+00:00 Hector Oron wrote:

Hello Tom,

  The testcase at https://salsa.debian.org/fg/rustc-gdb-1031745 has been
update to add one more failing test case scenario described at
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031946

Fabian reports:
I updated the reproducer repo[0], broken and good output look like this:

----8<---- broken
Breakpoint 1 at 0x81dd: file src/main.rs, line 88.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, rustc_gdb_1031745::main () at src/main.rs:88
88	    zzz(); // #break
$1 = &rustc_gdb_1031745::Foo<[u8]> 0x7fffffffdd88
$2 = &rustc_gdb_1031745::Foo<rustc_gdb_1031745::Foo<[u8]>> 0x7fffffffdd88
$3 = &rustc_gdb_1031745::Foo<dyn core::fmt::Debug> {pointer: 0x555555593034, vtable: 0x5555555a3000warning: (Internal error: pc 0x5555555a3000 in read in CU, but not in symtab.)
warning: (Error: pc 0x5555555a3000 in address map, but not in symtab.)
}
$4 = alloc::boxed::Box<rustc_gdb_1031745::Foo<dyn core::fmt::Debug>, alloc::alloc::Global> {pointer: 0x5555555a7ba0, vtable: 0x5555555a3000warning: (Internal error: pc 0x5555555a3000 in read in CU, but not in symtab.)
warning: (Error: pc 0x5555555a3000 in address map, but not in symtab.)
}
$5 = &(i32, i32, [i32]) [(0, 1, 0), (2, 3, 0)]
$6 = &(i32, i32, dyn core::fmt::Debug) {pointer: 0x5555555a3020, vtable: 0x5555555a3030warning: (Internal error: pc 0x5555555a3030 in read in CU, but not in symtab.)
warning: (Error: pc 0x5555555a3030 in address map, but not in symtab.)
}
---->8----

----8<---- good (gdb 12.1-4 from bookworm)
Breakpoint 1 at 0x81dd: file src/main.rs, line 88.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, rustc_gdb_1031745::main () at src/main.rs:88
88	    zzz(); // #break
$1 = &rustc_gdb_1031745::Foo<[u8]> {data_ptr: 0x7fffffffdd88, length: 4}
$2 = &rustc_gdb_1031745::Foo<rustc_gdb_1031745::Foo<[u8]>> {data_ptr: 0x7fffffffdd88, length: 4}
$3 = &rustc_gdb_1031745::Foo<dyn core::fmt::Debug> {pointer: 0x555555593034, vtable: 0x5555555a3000}
$4 = alloc::boxed::Box<rustc_gdb_1031745::Foo<dyn core::fmt::Debug>, alloc::alloc::Global> {pointer: 0x5555555a7ba0, vtable: 0x5555555a3000}
$5 = &(i32, i32, [i32]) {data_ptr: 0x555555593038, length: 2}
$6 = &(i32, i32, dyn core::fmt::Debug) {pointer: 0x5555555a3020, vtable: 0x5555555a3030}
---->8----

Since this no longer (fatally) affects the build of rustc, I opted for a
lower severity this time around. It looks like an issue with symbol
mapping/lookup again. Feel free to adjust if you consider this blocking.

0: https://salsa.debian.org/fg/rustc-gdb-1031745


I am attaching last git reproducer to the bug

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/24

------------------------------------------------------------------------
On 2023-02-27T12:57:42+00:00 Hector Oron wrote:

Created attachment 14721
test case with readme (v2) - one last issue after proposed patch

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/25

------------------------------------------------------------------------
On 2023-03-08T15:05:58+00:00 Tromey-b wrote:

(In reply to HectorOron from comment #11)

> Since this no longer (fatally) affects the build of rustc, I opted for a
> lower severity this time around. It looks like an issue with symbol
> mapping/lookup again. Feel free to adjust if you consider this blocking.

Would you mind submitting a separate bug for this?

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/26

------------------------------------------------------------------------
On 2023-03-08T15:07:31+00:00 Tromey-b wrote:

Marking for 13.2

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/27

------------------------------------------------------------------------
On 2023-03-13T20:14:12+00:00 Tromey-b wrote:

*** Bug 30224 has been marked as a duplicate of this bug. ***

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/29

------------------------------------------------------------------------
On 2023-03-13T20:17:24+00:00 Cvs-commit wrote:

The master branch has been updated by Tom Tromey
<tromey at sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-
gdb.git;h=5f056fcb3dce947447063f5ab225042177a59722

commit 5f056fcb3dce947447063f5ab225042177a59722
Author: Tom Tromey <tromey at adacore.com>
Date:   Fri Feb 24 10:40:16 2023 -0700

    Fix crash in inside_main_func
    
    gdb 13.1 crashes while running the rust compiler's debugger tests.
    The crash has a number of causes.
    
    First, the rust compiler still uses the C++-like _Z mangling, but with
    its own twist -- some hex digits added to the end of a symbol.  So,
    while gdb finds the correct name of "main":
    
    (top-gdb) p name
    $13 = 0x292e0c0 "rustc_gdb_1031745::main"
    
    It isn't found in the minsyms, because C++ demangling yields:
    
    [99] t 0x90c0 _ZN17rustc_gdb_10317454main17h5b5be7fe16a97225E section .text  rustc_gdb_1031745::main::h5b5be7fe16a97225  zko06yobckx336v
    
    This could perhaps be fixed.  I also filed a new PR to suggest
    preferring the linkage name of the main program.
    
    Next, the rust compiler emits both a DW_TAG_subprogram and a
    DW_TAG_namespace for "main".  This happens because the file is named
    "main.rs" -- i.e., the bug is specific to the source file name.  The
    crash also seems to require the nested function inside of 'main', at
    least for me.  The namespace always is generated, but perhaps this
    changes the ordering in the DWARF.
    
    When inside_main_func looks up the main symbol, it finds the namespace
    symbol rather than the function.  (I filed a bug about fixing gdb's
    symbol tables -- long overdue.)
    
    Meanwhile, as I think it's important to fix this crash sooner rather
    than later, this patch changes inside_main_func to check that the
    symbol that is found is LOC_BLOCK.  This perhaps should have been done
    in the first place, anyway.
    
    Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30158

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/30

------------------------------------------------------------------------
On 2023-03-13T20:19:38+00:00 Cvs-commit wrote:

The gdb-13-branch branch has been updated by Tom Tromey
<tromey at sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-
gdb.git;h=562403d4f5483e0787219fdb88da72c707c8d7f6

commit 562403d4f5483e0787219fdb88da72c707c8d7f6
Author: Tom Tromey <tromey at adacore.com>
Date:   Fri Feb 24 10:40:16 2023 -0700

    Fix crash in inside_main_func
    
    gdb 13.1 crashes while running the rust compiler's debugger tests.
    The crash has a number of causes.
    
    First, the rust compiler still uses the C++-like _Z mangling, but with
    its own twist -- some hex digits added to the end of a symbol.  So,
    while gdb finds the correct name of "main":
    
    (top-gdb) p name
    $13 = 0x292e0c0 "rustc_gdb_1031745::main"
    
    It isn't found in the minsyms, because C++ demangling yields:
    
    [99] t 0x90c0 _ZN17rustc_gdb_10317454main17h5b5be7fe16a97225E section .text  rustc_gdb_1031745::main::h5b5be7fe16a97225  zko06yobckx336v
    
    This could perhaps be fixed.  I also filed a new PR to suggest
    preferring the linkage name of the main program.
    
    Next, the rust compiler emits both a DW_TAG_subprogram and a
    DW_TAG_namespace for "main".  This happens because the file is named
    "main.rs" -- i.e., the bug is specific to the source file name.  The
    crash also seems to require the nested function inside of 'main', at
    least for me.  The namespace always is generated, but perhaps this
    changes the ordering in the DWARF.
    
    When inside_main_func looks up the main symbol, it finds the namespace
    symbol rather than the function.  (I filed a bug about fixing gdb's
    symbol tables -- long overdue.)
    
    Meanwhile, as I think it's important to fix this crash sooner rather
    than later, this patch changes inside_main_func to check that the
    symbol that is found is LOC_BLOCK.  This perhaps should have been done
    in the first place, anyway.
    
    Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30158
    
    (cherry picked from commit 5f056fcb3dce947447063f5ab225042177a59722)

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/31

------------------------------------------------------------------------
On 2023-03-13T20:20:46+00:00 Tromey-b wrote:

Fixed.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/32

------------------------------------------------------------------------
On 2023-03-22T20:30:00+00:00 Tromey-b wrote:

*** Bug 29298 has been marked as a duplicate of this bug. ***

Reply at:
https://bugs.launchpad.net/ubuntu/+source/rustc/+bug/2007642/comments/34


** Changed in: rustc
       Status: Unknown => Fix Released

** Changed in: rustc
   Importance: Unknown => Medium

** Bug watch added: Debian Bug tracker #1031745
   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031745

** Bug watch added: Debian Bug tracker #1031946
   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031946

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to rustc in Ubuntu.
https://bugs.launchpad.net/bugs/2007642

Title:
  Upgrade Rust to 1.67.1

Status in rustc:
  Fix Released
Status in rustc package in Ubuntu:
  Fix Released

Bug description:
  Upgrade Rust to 1.67.1

To manage notifications about this bug go to:
https://bugs.launchpad.net/rustc/+bug/2007642/+subscriptions




More information about the foundations-bugs mailing list