qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Akihiko Odaki <akihiko.odaki@daynix.com>
To: "Fabiano Rosas" <farosas@suse.de>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	qemu-devel@nongnu.org
Cc: "Alistair Francis" <alistair.francis@wdc.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	"Yanan Wang" <wangyanan55@huawei.com>
Subject: Re: [PULL 19/25] gdbstub: Replace gdb_regs with an array
Date: Wed, 18 Oct 2023 04:40:54 +0900	[thread overview]
Message-ID: <cb30adc2-f68d-4414-bd5d-e6ad4ff9be9f@daynix.com> (raw)
In-Reply-To: <87ttqpwdh7.fsf@suse.de>

On 2023/10/17 23:05, Fabiano Rosas wrote:
> Alex Bennée <alex.bennee@linaro.org> writes:
> 
>> From: Akihiko Odaki <akihiko.odaki@daynix.com>
>>
>> An array is a more appropriate data structure than a list for gdb_regs
>> since it is initialized only with append operation and read-only after
>> initialization.
>>
>> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
>> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
>> Message-Id: <20230912224107.29669-13-akihiko.odaki@daynix.com>
>> [AJB: fixed a checkpatch violation]
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Message-Id: <20231009164104.369749-20-alex.bennee@linaro.org>
>>
>> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
>> index 7b8347ed5a..3968369554 100644
>> --- a/include/hw/core/cpu.h
>> +++ b/include/hw/core/cpu.h
>> @@ -502,7 +502,7 @@ struct CPUState {
>>   
>>       CPUJumpCache *tb_jmp_cache;
>>   
>> -    struct GDBRegisterState *gdb_regs;
>> +    GArray *gdb_regs;
>>       int gdb_num_regs;
>>       int gdb_num_g_regs;
>>       QTAILQ_ENTRY(CPUState) node;
>> diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
>> index 62608a5389..b1532118d1 100644
>> --- a/gdbstub/gdbstub.c
>> +++ b/gdbstub/gdbstub.c
>> @@ -51,7 +51,6 @@ typedef struct GDBRegisterState {
>>       gdb_get_reg_cb get_reg;
>>       gdb_set_reg_cb set_reg;
>>       const char *xml;
>> -    struct GDBRegisterState *next;
>>   } GDBRegisterState;
>>   
>>   GDBState gdbserver_state;
>> @@ -386,7 +385,8 @@ static const char *get_feature_xml(const char *p, const char **newp,
>>                   xml,
>>                   g_markup_printf_escaped("<xi:include href=\"%s\"/>",
>>                                           cc->gdb_core_xml_file));
>> -            for (r = cpu->gdb_regs; r; r = r->next) {
>> +            for (guint i = 0; i < cpu->gdb_regs->len; i++) {
> 
> It seems we can reach here before having initialized gdb_regs at
> gdb_register_coprocessor():
> 
> Thread 1 "qemu-system-x86" received signal SIGSEGV, Segmentation fault.
> 0x0000555555e5310b in get_feature_xml (p=0x555556a99118
> <gdbserver_state+56> "target.xml:0,ffb", newp=0x7fffffffc6b0,
> process=0x555557a21dd0) at ../gdbstub/gdbstub.c:388
> 
> (gdb) p/x cpu->gdb_regs
> $1 = 0x0
> 
> 
> Using:
> qemu-system-x86 ... -s -s
> 
> just connect GDB and it crashes.

Hi,

Sorry for trouble and thank you for reporting.

I have just posted a fix "[PATCH v4 1/5] gdbstub: Check if gdb_regs is 
NULL" as part of series "[PATCH v4 0/5] gdbstub and TCG plugin 
improvements". Please test it if possible.

Alex, you may pick the patch early since the bug is quite a serious. 
Please add "Reported-by: Fabiano Rosas <farosas@suse.de>" when you do so 
since I forgot it. You may skip applying target/riscv patches though 
since the maintainers may still have something to comment.

Regards,
Akihiko Odaki


  reply	other threads:[~2023-10-17 19:41 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-11 10:33 [PULL 00/25] testing, gdbstub and plugin updates Alex Bennée
2023-10-11 10:33 ` [PULL 01/25] tests/avocado: update firmware to enable OpenBSD test on sbsa-ref Alex Bennée
2023-10-11 10:33 ` [PULL 02/25] tests/avocado: remove flaky test marking for test_sbsaref_edk2_firmware Alex Bennée
2023-10-11 10:33 ` [PULL 03/25] tests/lcitool: add swtpm to the package list Alex Bennée
2023-10-11 10:33 ` [PULL 04/25] gitlab: shuffle some targets and reduce avocado noise Alex Bennée
2023-10-11 10:33 ` [PULL 05/25] tests/docker: make docker engine choice entirely configure driven Alex Bennée
2023-10-11 10:33 ` [PULL 06/25] configure: allow user to override docker engine Alex Bennée
2023-10-11 10:33 ` [PULL 07/25] configure: remove gcc version suffixes Alex Bennée
2023-10-11 10:33 ` [PULL 08/25] gdbstub: Fix target_xml initialization Alex Bennée
2023-10-11 10:33 ` [PULL 09/25] gdbstub: Fix target.xml response Alex Bennée
2023-10-11 10:33 ` [PULL 10/25] plugins: Check if vCPU is realized Alex Bennée
2023-10-11 10:33 ` [PULL 11/25] contrib/plugins: Use GRWLock in execlog Alex Bennée
2023-10-11 10:33 ` [PULL 12/25] gdbstub: Introduce GDBFeature structure Alex Bennée
2023-10-11 10:33 ` [PULL 13/25] target/arm: Move the reference to arm-core.xml Alex Bennée
2023-10-11 10:33 ` [PULL 14/25] hw/core/cpu: Return static value with gdb_arch_name() Alex Bennée
2023-10-11 10:33 ` [PULL 15/25] gdbstub: Use g_markup_printf_escaped() Alex Bennée
2023-10-11 10:33 ` [PULL 16/25] target/arm: Remove references to gdb_has_xml Alex Bennée
2023-10-11 10:33 ` [PULL 17/25] target/ppc: " Alex Bennée
2023-10-11 10:33 ` [PULL 18/25] gdbstub: Remove gdb_has_xml variable Alex Bennée
2023-10-11 10:33 ` [PULL 19/25] gdbstub: Replace gdb_regs with an array Alex Bennée
2023-10-17 14:05   ` Fabiano Rosas
2023-10-17 19:40     ` Akihiko Odaki [this message]
2023-10-11 10:33 ` [PULL 20/25] accel/tcg: Add plugin_enabled to DisasContextBase Alex Bennée
2023-10-11 10:33 ` [PULL 21/25] target/sh4: Disable decode_gusa when plugins enabled Alex Bennée
2023-10-11 10:33 ` [PULL 22/25] plugins: Set final instruction count in plugin_gen_tb_end Alex Bennée
2023-10-11 10:33 ` [PULL 23/25] contrib/plugins: fix coverity warning in cache Alex Bennée
2023-10-11 10:33 ` [PULL 24/25] contrib/plugins: fix coverity warning in lockstep Alex Bennée
2023-10-11 10:33 ` [PULL 25/25] contrib/plugins: fix coverity warning in hotblocks Alex Bennée
2023-10-11 17:04 ` [PULL 00/25] testing, gdbstub and plugin updates Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cb30adc2-f68d-4414-bd5d-e6ad4ff9be9f@daynix.com \
    --to=akihiko.odaki@daynix.com \
    --cc=alex.bennee@linaro.org \
    --cc=alistair.francis@wdc.com \
    --cc=eduardo@habkost.net \
    --cc=farosas@suse.de \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=wangyanan55@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).