Fix crash in struct-with-sig-2.exp with debug-names target board

Message ID 20240117021205.661052-1-tom@tromey.com
State New
Headers
Series Fix crash in struct-with-sig-2.exp with debug-names target board |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-arm warning Patch is already merged

Commit Message

Tom Tromey Jan. 17, 2024, 2:12 a.m. UTC
  When I run the struct-with-sig-2.exp test with the .debug_names-using
target board, I see a gdb crash.  This happens because the reader
throws an exception without calling finalize_all_units.  This causes
an assertion failure later because the number of CUs and TUs doesn't
match.

The fix is to clear 'all_units' on failure.
---
 gdb/dwarf2/read.c | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Tom de Vries Jan. 17, 2024, 10:29 a.m. UTC | #1
On 1/17/24 03:12, Tom Tromey wrote:
> When I run the struct-with-sig-2.exp test with the .debug_names-using
> target board, I see a gdb crash.  This happens because the reader
> throws an exception without calling finalize_all_units.  This causes
> an assertion failure later because the number of CUs and TUs doesn't
> match.
> 
> The fix is to clear 'all_units' on failure.

I see this is my fault, I added this error and forgot to add the clear, 
sorry about that.

Anyway, LGTM.

I've also applied the patch and confirmed that gdb doesn't crash anymore.

Approved-By: Tom de Vries <tdevries@suse.de>

Thanks,
- Tom

> ---
>   gdb/dwarf2/read.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
> index 1b5e566bb01..8f2b7a35f27 100644
> --- a/gdb/dwarf2/read.c
> +++ b/gdb/dwarf2/read.c
> @@ -5193,6 +5193,8 @@ create_all_units (dwarf2_per_objfile *per_objfile)
>   
>         if (!dwz->types.empty ())
>   	{
> +	  per_objfile->per_bfd->all_units.clear ();
> +
>   	  /* See enhancement PR symtab/30838.  */
>   	  error (_("Dwarf Error: .debug_types section not supported in dwz file"));
>   	}
  
Tom Tromey Jan. 17, 2024, 1:16 p.m. UTC | #2
Tom> I see this is my fault, I added this error and forgot to add the
Tom> clear, sorry about that.

I assumed it was my fault from the background reader series :)
I didn't really look though.

Tom> I've also applied the patch and confirmed that gdb doesn't crash anymore.
Tom> Approved-By: Tom de Vries <tdevries@suse.de>

Thanks.

Tom
  

Patch

diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 1b5e566bb01..8f2b7a35f27 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -5193,6 +5193,8 @@  create_all_units (dwarf2_per_objfile *per_objfile)
 
       if (!dwz->types.empty ())
 	{
+	  per_objfile->per_bfd->all_units.clear ();
+
 	  /* See enhancement PR symtab/30838.  */
 	  error (_("Dwarf Error: .debug_types section not supported in dwz file"));
 	}