aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2022-07-15 13:32:03 +0200
committerTom de Vries <tdevries@suse.de>2022-07-21 15:06:40 +0200
commit5a74a1a5283a041c577a502509f7b48ce770b106 (patch)
tree0957952c764d4ad783820a2a4d07c13130c3d46f
parent060f7c545b27007945431ed5f6aa10d659d7baa6 (diff)
downloadgdb-5a74a1a5283a041c577a502509f7b48ce770b106.zip
gdb-5a74a1a5283a041c577a502509f7b48ce770b106.tar.gz
gdb-5a74a1a5283a041c577a502509f7b48ce770b106.tar.bz2
[gdbsupport] Workaround data race in get_print_cell
Data race between: ... Write of size 4 at 0x00000324eb60 by thread T2: #0 get_print_cell() gdbsupport/print-utils.cc:35 (gdb+0x1c032c7) #1 hex_string(long) gdbsupport/print-utils.cc:230 (gdb+0x1c03bc2) #2 sect_offset_str gdb/gdbtypes.h:82 (gdb+0x81b333) #3 process_queue_item gdb/dwarf2/read.c:7581 (gdb+0x831645) ... and: ... Previous read of size 4 at 0x00000324eb60 by thread T3: #0 get_print_cell() gdbsupport/print-utils.cc:35 (gdb+0x1c032b4) #1 hex_string(long) gdbsupport/print-utils.cc:230 (gdb+0x1c03bc2) #2 sect_offset_str gdb/gdbtypes.h:82 (gdb+0x81b333) #3 process_queue_item gdb/dwarf2/read.c:7581 (gdb+0x831645) ... For now, just do a malloc in get_print_cell to work around the data race.
-rw-r--r--gdbsupport/print-utils.cc7
1 files changed, 1 insertions, 6 deletions
diff --git a/gdbsupport/print-utils.cc b/gdbsupport/print-utils.cc
index 7bbb6de..7d10743 100644
--- a/gdbsupport/print-utils.cc
+++ b/gdbsupport/print-utils.cc
@@ -29,12 +29,7 @@
char *
get_print_cell (void)
{
- static char buf[NUMCELLS][PRINT_CELL_SIZE];
- static int cell = 0;
-
- if (++cell >= NUMCELLS)
- cell = 0;
- return buf[cell];
+ return (char *)malloc (PRINT_CELL_SIZE);
}
static char *