From: Dave Jones <davej@redhat.com>
To: Eric Sandeen <sandeen@redhat.com>
Cc: "Toralf Förster" <toralf.foerster@gmx.de>, linux-ext4@vger.kernel.org
Subject: Re: Trinity: BUG at fs/ext4/inode.c:1590!
Date: Tue, 21 May 2013 13:07:07 -0400 [thread overview]
Message-ID: <20130521170707.GD9163@redhat.com> (raw)
In-Reply-To: <519A40DE.2060409@redhat.com>
On Mon, May 20, 2013 at 10:27:26AM -0500, Eric Sandeen wrote:
> Dave, I had suggested earlier in the thread that an option to specify a seed and a nr. of syscalls
> to skip would help narrow down what triggers a bug.
> i.e. in this case, we could find the last seed (for this child?) and then run with:
The seed is 'global', ie, child 1 uses seed+1, child 2 uses seed+2 etc etc.
We only log the seed value without the child number, so as long as you run with the same number
of child processes, the children will all get the correct seed values.
> * that seed
> * max syscalls 421
> * skip the first 400 syscalls
>
> and see if it reproduces. Keep narrowing the window until we get the smallest set that reproduces. fsx has something similar to this.
Setting the seed with -N should have the same net result as skipping the syscalls up until that point.
There are however two gotchas with the code to use prior seeds.
1. imagine this scenario.
a. initial seed
b. N syscalls done
c. reseed
d. N syscalls done.
If we get an oops after D, you might think "great, I can ignore everything before (c)" but that may not necessarily
be the case, if something at (b) created/corrupted some kernel state that (d) ends up falling over.
2. We gather a list of filenames at startup from /proc, /sys and /dev, and these change at each run.
This has undesirable results when you're trying to recreate something based on 'fd 243' etc, when that
ends up mapping to a different file.
However, in Toralf's case, if he's using -V, we'll only gather fd's from there, and as long as the files/dirs
at that path are static across runs, all should be good.
> (heh, now I want an option to emit C code to recreate the last N syscalls it's made, for permanent testcases. I suppose that'd be tough) ;)
Not tough, just yet another idea to add to the already mile-long TODO :-)
> Here's a really hacky, untested patch that might implement the skipping I'm talking about. Caveat; I've never actually used trinity. :)
I think if we wanted to skip a few million syscalls this would involve
quite a wait, and you're not really going to be saving much time over
just doing the syscalls ;)
> So if I'm missing something obvious about how to narrow down a failure to the call that caused it, I'm all ears. :)
I really hope that -N is enough here. The only real gotcha is the 2nd case
above, which we could solve by using a filename cache in the same way
there's a network socket cache.
Dave
prev parent reply other threads:[~2013-05-21 17:07 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-19 22:25 BUG at fs/ext4/inode.c:1590! Toralf Förster
2013-05-19 23:55 ` Theodore Ts'o
2013-05-20 2:28 ` Eric Sandeen
2013-05-20 7:51 ` Toralf Förster
2013-05-20 12:32 ` Eric Sandeen
2013-05-26 12:42 ` Toralf Förster
2013-05-20 15:27 ` Trinity: " Eric Sandeen
2013-05-21 17:07 ` Dave Jones [this message]
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=20130521170707.GD9163@redhat.com \
--to=davej@redhat.com \
--cc=linux-ext4@vger.kernel.org \
--cc=sandeen@redhat.com \
--cc=toralf.foerster@gmx.de \
/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).