From: Jens Axboe <axboe@kernel.dk>
To: Niraj Tolia <ntolia@maginatics.com>
Cc: fio@vger.kernel.org
Subject: Re: Segfault on OS X
Date: Tue, 08 Jan 2013 21:01:06 +0100 [thread overview]
Message-ID: <50EC7B02.7040901@kernel.dk> (raw)
In-Reply-To: <CA+6NFoBAhy8jR8jg8_MqDH8WP_e+Y2BVFxCysKo2Nqhkj8cmZw@mail.gmail.com>
On Tue, Jan 08 2013, Niraj Tolia wrote:
> I am running fio (HEAD:a28b019) on OS X (10.8.2) and just ran into a
> segfault after more than an hour of running the benchmark. Will dig
> into this more but wanted to check if someone else had run into this.
> I did manage to get a core though. There were three threads running
> with two sitting in __semwait_signal () (via usleep) and the third
> was:
>
> [Switching to thread 3 (core thread 2)]
> 0x000000010fcf7910 in thread_main (data=0x1105fe000) at backend.c:510
> 510 if (break_on_this_error(td, io_u->ddir, &ret))
> (gdb) where
> #0 0x000000010fcf7910 in thread_main (data=0x1105fe000) at backend.c:510
> #1 0x00007fff885d1742 in _pthread_start ()
> #2 0x00007fff885be181 in thread_start ()
>
> It seems like io_u is null here.
My first thought was "impossible", but looking at the code, we do
clear io_u on requeue events. So that dereference below the
main switch is a bug. The below should fix it, I've committed it.
diff --git a/backend.c b/backend.c
index 225d8a3..099bd9b 100644
--- a/backend.c
+++ b/backend.c
@@ -422,6 +422,7 @@ static void do_verify(struct thread_data *td)
io_u = NULL;
while (!td->terminate) {
+ enum fio_ddir ddir;
int ret2, full;
update_tv_cache(td);
@@ -456,6 +457,8 @@ static void do_verify(struct thread_data *td)
else
io_u->end_io = verify_io_u;
+ ddir = io_u->ddir;
+
ret = td_io_queue(td, io_u);
switch (ret) {
case FIO_Q_COMPLETED:
@@ -507,7 +510,7 @@ sync_done:
break;
}
- if (break_on_this_error(td, io_u->ddir, &ret))
+ if (break_on_this_error(td, ddir, &ret))
break;
/*
--
Jens Axboe
next prev parent reply other threads:[~2013-01-08 20:01 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-08 19:37 Segfault on OS X Niraj Tolia
2013-01-08 20:01 ` Jens Axboe [this message]
2013-01-09 5:32 ` Niraj Tolia
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=50EC7B02.7040901@kernel.dk \
--to=axboe@kernel.dk \
--cc=fio@vger.kernel.org \
--cc=ntolia@maginatics.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.