It gets worse: I am beginning to suspect that this race is what ultimately 
causes the "xml for the wrong xlen" mystery (if the timing is unlucky, the CSPR 
isn't set yet).

-----"Boris Shingarov via gem5-dev" <gem5-dev@gem5.org> wrote: -----
To: gem5-dev@gem5.org
From: "Boris Shingarov via gem5-dev" <gem5-dev@gem5.org>
Date: 08/06/2020 08:14PM
Cc: "Boris Shingarov" <shinga...@labware.com>
Subject: [gem5-dev] Possible race condition (Remote GDB)

It looks to me that there is a race condition inherent in the design of 
DataEvent.
The effect is that, even when CPU.wait_for_gdb attr is set and after the the 
RSP socket has connected, the relative timing of gdb's vs gem5's execution may 
or may not lead to gdb's presence being ignored.  It's like "hey gdb,I know you 
already connected, but if you aren't quick enough that the qSupported reaches 
the queue within N ms after connecting, I am going ahead without you; (and no I 
am not telling you what N is)".

It looks like one fundamental issue here is the historical packet-oriented 
nature of RSP.  But it also looks like remote_gdb.cc:434,

if (!active) {
    active = true;
} else {
    // Tell remote host that an exception has occurred.
    send(csprintf("S%02x", type).c_str());
}

plays a central role.
Can someone comment on how this is intended to work?  I must admit the comment 
above that code doesn't make sense to me.
 
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to