[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 7/7] tests/avocado: ppc64 pseries reverse debugging test
From: |
Nicholas Piggin |
Subject: |
Re: [PATCH 7/7] tests/avocado: ppc64 pseries reverse debugging test |
Date: |
Mon, 26 Jun 2023 19:34:03 +1000 |
On Mon Jun 26, 2023 at 5:49 PM AEST, Pavel Dovgalyuk wrote:
> On 23.06.2023 15:57, Nicholas Piggin wrote:
> > pseries can run reverse-debugging well enough to pass basic tests.
> >
> > There is strangeness with reverse-continue possibly relating to a bp
> > being set on the first instruction or on a snapshot, that causes
> > the PC to be reported on the first instruction rather than last
> > breakpoint, so a workaround is added for that for now.
>
> It means that the test reveals some kind of a bug in PPC debugging
> server implementation.
> In this case it is better to fix that instead of adding workaround.
I agree, and I'm trying to find the cause it hasn't been easy. I
thought the test was still interesting because it otherwise seems
to work well, but hopefully I can find the issue before long.
Thanks,
Nick
>
> >
> > Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> > ---
> > tests/avocado/reverse_debugging.py | 28 +++++++++++++++++++++++++++-
> > 1 file changed, 27 insertions(+), 1 deletion(-)
> >
> > diff --git a/tests/avocado/reverse_debugging.py
> > b/tests/avocado/reverse_debugging.py
> > index 680c314cfc..553c931994 100644
> > --- a/tests/avocado/reverse_debugging.py
> > +++ b/tests/avocado/reverse_debugging.py
> > @@ -94,7 +94,7 @@ def gdb_bstep(g):
> > def vm_get_icount(vm):
> > return vm.qmp('query-replay')['return']['icount']
> >
> > - def reverse_debugging(self, shift=7, args=None):
> > + def reverse_debugging(self, shift=7, args=None, initial_skip=False):
> > logger = logging.getLogger('replay')
> >
> > # create qcow2 for snapshots
> > @@ -135,6 +135,10 @@ def reverse_debugging(self, shift=7, args=None):
> > self.fail('Reverse continue is not supported by QEMU')
> >
> > logger.info('stepping forward')
> > +
> > + if initial_skip:
> > + self.gdb_step(g)
> > +
> > steps = []
> > # record first instruction addresses
> > for _ in range(self.STEPS):
> > @@ -216,3 +220,25 @@ def test_aarch64_virt(self):
> >
> > self.reverse_debugging(
> > args=('-kernel', kernel_path))
> > +
> > +class ReverseDebugging_ppc64(ReverseDebugging):
> > + """
> > + :avocado: tags=accel:tcg
> > + """
> > +
> > + REG_PC = 0x40
> > +
> > + # unidentified gitlab timeout problem
> > + @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
> > + def test_ppc64_pseries(self):
> > + """
> > + :avocado: tags=arch:ppc64
> > + :avocado: tags=machine:pseries
> > + """
> > + # start with BIOS only
> > + self.endian_is_le = False
> > + # reverse-continue fails (seems to end up at the start) if a break
> > + # is put on the first instruction. initial_skip skips one before
> > the
> > + # first bp, and it works. Could be due to break at the same icount
> > + # as the snapshot?
> > + self.reverse_debugging(initial_skip=True)
- [PATCH 2/7] scripts/replay_dump.sh: Update to current rr record format, (continued)
- [PATCH 2/7] scripts/replay_dump.sh: Update to current rr record format, Nicholas Piggin, 2023/06/23
- [PATCH 3/7] spapr: Fix machine reset deadlock from replay-record, Nicholas Piggin, 2023/06/23
- [PATCH 4/7] spapr: Fix record-replay machine reset consuming too many events, Nicholas Piggin, 2023/06/23
- [PATCH 5/7] target/ppc: Fix timebase reset with record-replay, Nicholas Piggin, 2023/06/23
- [PATCH 6/7] tests/avocado: boot ppc64 pseries replay-record test to Linux VFS mount, Nicholas Piggin, 2023/06/23
- [PATCH 7/7] tests/avocado: ppc64 pseries reverse debugging test, Nicholas Piggin, 2023/06/23