Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: "Marcin Kościelnicki" <koriakin@0x04.net>, "Yao Qi" <qiyaoltc@gmail.com>
Cc: gdb-patches@sourceware.org
Subject: Re: gdb/linux-record fixes
Date: Tue, 20 Oct 2015 11:07:00 -0000	[thread overview]
Message-ID: <5626206E.1000405@redhat.com> (raw)
In-Reply-To: <562525C1.7000205@0x04.net>

On 10/19/2015 06:17 PM, Marcin Kościelnicki wrote:

> Yeah, they're not covered by the testsuite.  Actually, there seem to be 
> only two tests in gdb.reverse suite that even touch syscalls: 
> sigall-reverse (signal, sigprocmask, exit_group) and watch-reverse 
> (read, write).  No wonder that syscall handling is buggy...
> 
> Stepping forward and backward over pipe/time/waitpid would indeed do the 
> trick for patch #6.

Can I convince you to add that to the patch (and likewise to others that
might not be overly hard)?

BTW, you'll also need to include ChangeLog entries.  Please check here:

  https://sourceware.org/gdb/wiki/ContributionChecklist

> Some others are trickier to test, though - for 
> example to test #3 (overlong sigaction/sigset_t) you'd need to manually
> invoke the actual linux syscalls, taking care to pull the right struct 
> definitions from kernel headers, and make sure they're located near the 
> end of segment bounduary (so that accessing after the end causes an 
> error) - the glibc wrappers will always allocate relevant structs on 
> stack, which almost certainly has extra bytes after the struct, hiding 
> the bug.

OOC, how did you first notice the bug?

> 
> BTW, I was thinking of a self-testing approach for linux-record:
> 
> - if gdb debugging is enabled, record changes on each instruction twice: 
> before and after execution
> - memory/register contents recorded in "before" stage should match 
> contents previously recorded in "after" stage, if any (ie. if it's not 
> the first time we see a register or a memory byte).  If there's a 
> mismatch, record missed something.
> 
> Unfortunately, that's a non-starter for multithreaded programs, or for 
> progams involving shared memory :(

Sounds like a good idea.  I don't see multithreading being an issue,
as target record doesn't really work with multithreaded programs to begin
with.  Also, I don't think we'd want it behind the usual "set debug record"
knob, as that sounds like it could actually change the record target's
behavior, and heisenbugs.  Probably put it under its own
"maint set record self-check on" or some such knob.

This reminds me that Yao once wrote a test that did something like
that (registers only, no gdb magic):

  https://sourceware.org/ml/gdb-patches/2015-05/msg00482.html

Not sure what happened to that.

Thanks,
Pedro Alves


  reply	other threads:[~2015-10-20 11:07 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-17 21:41 Marcin Kościelnicki
2015-10-17 21:41 ` [PATCH 08/11] gdb/linux-record: Fix newfstatat handling Marcin Kościelnicki
2015-10-17 21:41 ` [PATCH 06/11] gdb/linux-record: Support time, waitpid, pipe syscalls Marcin Kościelnicki
2015-10-17 21:41 ` [PATCH 03/11] gdb/linux-record: Fix sizes of sigaction and sigset_t Marcin Kościelnicki
2015-10-17 21:41 ` [PATCH 09/11] gdb/linux-record: Fix old_select syscall handling Marcin Kościelnicki
2015-10-17 21:41 ` [PATCH 04/11] gdb/linux-record: Fix readdir and getdents handling Marcin Kościelnicki
2015-10-17 21:41 ` [PATCH 01/11] gdb/linux-record: Remove size_siginfo Marcin Kościelnicki
2015-10-17 21:41 ` [PATCH 07/11] gdb/linux-record: Fix [sg]etgroups16 syscall Marcin Kościelnicki
2015-10-17 21:41 ` [PATCH 11/11] gdb/linux-record: Fix struct sizes for x32 + aarch64 Marcin Kościelnicki
2015-10-17 21:49 ` [PATCH 02/11] gdb/linux-record: Fix size_[ug]id values Marcin Kościelnicki
2015-10-17 21:49 ` [PATCH 10/11] gdb/linux-record: TASK_COMM_LEN is 16 on ppc too Marcin Kościelnicki
2015-10-17 21:49 ` [PATCH 05/11] gdb/linux-record: Fix msghdr parsing on 64-bit targets Marcin Kościelnicki
2015-10-19 15:37 ` gdb/linux-record fixes Pedro Alves
2015-10-19 17:18   ` Marcin Kościelnicki
2015-10-20 11:07     ` Pedro Alves [this message]
2015-10-20 11:16       ` Marcin Kościelnicki
2015-10-22 13:39         ` Marcin Kościelnicki
2015-10-22 13:39           ` [PATCH v2 01/13] gdb/linux-record: Add testcases for a few syscalls Marcin Kościelnicki
2015-10-22 13:43             ` [PATCH v2 11/13] gdb/linux-record: TASK_COMM_LEN is 16 on ppc too Marcin Kościelnicki
2015-10-22 13:45             ` [PATCH v2 13/13] gdb/linux-record: Fix struct sizes for x32 Marcin Kościelnicki
2015-10-22 13:45             ` [PATCH v2 03/13] gdb/linux-record: Fix size_[ug]id values Marcin Kościelnicki
2015-10-22 13:45             ` [PATCH v2 12/13] gdb/linux-record: Fix size_termios for x32, amd64, aarch64 Marcin Kościelnicki
2015-10-22 13:49             ` [PATCH v2 10/13] gdb/linux-record: Fix old_select syscall handling Marcin Kościelnicki
2015-10-22 13:51             ` [PATCH v2 04/13] gdb/linux-record: Fix sizes of sigaction and sigset_t Marcin Kościelnicki
2015-10-22 13:51             ` [PATCH v2 06/13] gdb/linux-record: Fix msghdr parsing on 64-bit targets Marcin Kościelnicki
2015-10-22 13:55             ` [PATCH v2 07/13] gdb/linux-record: Support time, waitpid, pipe syscalls Marcin Kościelnicki
2015-10-22 14:32             ` [PATCH v2 02/13] gdb/linux-record: Remove size_siginfo Marcin Kościelnicki
2015-10-22 15:01             ` [PATCH v2 08/13] gdb/linux-record: Fix [gs]etgroups16 syscall Marcin Kościelnicki
2015-10-22 15:06             ` [PATCH v2 05/13] gdb/linux-record: Fix readdir and getdents handling Marcin Kościelnicki
2015-10-22 15:07             ` [PATCH v2 09/13] gdb/linux-record: Fix newfstatat handling Marcin Kościelnicki
2015-10-29 13:03             ` [PATCH v2 01/13] gdb/linux-record: Add testcases for a few syscalls Pedro Alves
2015-10-29 13:03               ` Marcin Kościelnicki
2015-10-30 14:52                 ` Pedro Alves
2015-10-30 10:36               ` Marcin Kościelnicki
2015-10-30 15:05                 ` Pedro Alves
2015-11-02  1:34                   ` Marcin Kościelnicki
2015-11-02 16:40                     ` Pedro Alves
2015-11-02 18:53                       ` [PATCH] gdb/reverse: Fix continue_to_breakpoint in syscall testcases Marcin Kościelnicki
2015-11-02 19:17                         ` Pedro Alves
2015-11-02 19:58                           ` [PATCH 1/2] " Marcin Kościelnicki
2015-11-02 19:58                             ` [PATCH 1/2] Obvious typo fix in gdb.reverse/readv-reverse.exp Marcin Kościelnicki
2015-11-02 20:00                               ` Pedro Alves
2015-11-02 19:59                             ` [PATCH 1/2] gdb/reverse: Fix continue_to_breakpoint in syscall testcases Pedro Alves
2015-10-30 10:37               ` [PATCH 01/13] gdb/record: Add testcases for a few syscalls Marcin Kościelnicki
2015-10-30 15:41                 ` Pedro Alves
2015-10-30 15:55                   ` [PATCH v4 " Marcin Kościelnicki
2015-10-31 18:59                     ` Pedro Alves
2015-10-29 13:03           ` gdb/linux-record fixes Pedro Alves
2015-10-29 13:03             ` Pedro Alves

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=5626206E.1000405@redhat.com \
    --to=palves@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=koriakin@0x04.net \
    --cc=qiyaoltc@gmail.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