public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug symtab/29436] New: [gdb/symtab] read.c:2352: internal-error: read_addrmap_from_aranges: Assertion `insertpair.second' failed.
@ 2022-08-02  7:16 vries at gcc dot gnu.org
  2022-08-02  7:52 ` [Bug symtab/29436] " vries at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: vries at gcc dot gnu.org @ 2022-08-02  7:16 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=29436

            Bug ID: 29436
           Summary: [gdb/symtab] read.c:2352: internal-error:
                    read_addrmap_from_aranges: Assertion
                    `insertpair.second' failed.
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: symtab
          Assignee: unassigned at sourceware dot org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

I recently added this assert:
...
      /* Assume no duplicate offsets in all_comp_units.  */
      gdb_assert (insertpair.second);
...
in read_addrmap_from_aranges, and I was curious if I could trigger it.

So I started out with:
...
$ gcc ~/hello.c -g -save-temps
...
and then manually added this (copied and modified from
gdb.dwarf2/clang-debug-names.exp.tcl):
...
        .ident  "GCC: (SUSE Linux) 7.5.0"

+       .section .debug_names
+       .4byte  .Ldebug_names_end - .Ldebug_names_start
+       .Ldebug_names_start:
+       .short 5                     /* Header: version */
+       .short 0                     /* Header: padding */
+       .long 2                      /* Header: compilation unit count */
+       .long 0                      /* Header: local type unit count */
+       .long 0                      /* Header: foreign type unit count */
+       .long 0                      /* Header: bucket count */
+       .long 0                      /* Header: name count */
+       .long 1
+                                    /* Header: abbreviation table size */ 
+       .long 0                      /* Header: augmentation string size */
+        .long .Ldebug_info0            /* Compilation unit 0 */
+        .long .Ldebug_info0            /* Compilation unit 0 */
+       .byte 0
+        .p2align 2
+       .Ldebug_names_end:
+
        .section        .note.GNU-stack,"",@progbits
...
in hello.s.

[ Actually, I started out with abbreviation table size 0, but gdb doesn't grok
it, it always expects a terminating byte. ]

This is an empty index, and this bit:
...
   /* Don't use the index if it's empty.  */
   if (map->name_count == 0)
     return false;
...
in dwarf2_read_debug_names prevents us from using it, but after disabling it we
have indeed:
...
$ gdb -q -batch a.out
src/gdb/dwarf2/read.c:2352: internal-error: read_addrmap_from_aranges:
Assertion `insertpair.second' failed.
...

We should handle this in create_cus_from_debug_names_list or some such. 
Likewise for .gdb_index.

Note btw that the standard bit that is violated here is:  "For a per-module
index, there will be one CU entry for each compile unit in the module".

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-08-08  8:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-02  7:16 [Bug symtab/29436] New: [gdb/symtab] read.c:2352: internal-error: read_addrmap_from_aranges: Assertion `insertpair.second' failed vries at gcc dot gnu.org
2022-08-02  7:52 ` [Bug symtab/29436] " vries at gcc dot gnu.org
2022-08-02  7:54 ` vries at gcc dot gnu.org
2022-08-05 11:43 ` vries at gcc dot gnu.org
2022-08-08  8:19 ` vries at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).