From: Jens Axboe <jens.axboe@oracle.com>
To: Case van Rij <case.vanrij@gmail.com>
Cc: fio@vger.kernel.org
Subject: Re: fio jobs die with sigsegv if --filesize=1tb
Date: Wed, 23 Dec 2009 08:54:50 +0100 [thread overview]
Message-ID: <20091223075450.GA4489@kernel.dk> (raw)
In-Reply-To: <20091223074110.GZ4489@kernel.dk>
On Wed, Dec 23 2009, Jens Axboe wrote:
> On Wed, Dec 23 2009, Jens Axboe wrote:
> > On Tue, Dec 22 2009, Case van Rij wrote:
> > > fairly basic random write test over nfs, 1 job, directio enabled,
> > > pre-existing 1TB file results in SIGSEGV,
> > >
> > > tested on: CentOS 5.4 x86_64, 2.6.18-164.6.1.el5 kernel, fio from
> > > git, last change: Tue, 22 Dec 2009 08:06:43 +0000
> > >
> > > fio --name=rndwrs --ioengine=libaio --iodepth=4 --rw=randwrite
> > > --bs=32k --direct=1 --size=1tb --numjobs=1 --filename=/mnt/nfs/1tb.vdb
> > > random-writers: (g=0): rw=randwrite, bs=32K-32K/32K-32K,
> > > ioengine=libaio, iodepth=4
> > > Starting 1 process
> > > fio: pid=24153, got signal=11
> > >
> > > Run status group 0 (all jobs):
> > > fio: file hash not empty on exit
> > >
> > > strace:
> > > [pid 23961] open("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size",
> > > O_RDONLY) = 8
> > > [pid 23961] read(8, "64\n", 32) = 3
> > > [pid 23961] close(8) = 0
> > > [pid 23961] getpriority(PRIO_PROCESS, 0) = 20
> > > [pid 23961] setpriority(PRIO_PROCESS, 0, 0) = 0
> > > [pid 23961] getpriority(PRIO_PROCESS, 0) = 20
> > > [pid 23961] io_setup(4, {47657422389248}) = 0
> > > [pid 23961] getrusage(RUSAGE_SELF, {ru_utime={0, 1999}, ru_stime={0,
> > > 0}, ...}) = 0
> > > [pid 23961] open("/mnt/nfs/1tb.vdb", O_RDWR|O_CREAT|O_DIRECT, 0600) = 8
> > > [pid 23961] fadvise64(8, 0, 1, POSIX_FADV_DONTNEED) = 0
> > > [pid 23961] fadvise64(8, 0, 1, POSIX_FADV_RANDOM) = 0
> > > [pid 23961] --- SIGSEGV (Segmentation fault) @ 0 (0) ---
> > >
> > > but no core file, since reap_threads cleans up after the sigsegv (?)
> > >
> > > with debug=all:
> > > io 26954 invalidate cache /mnt/nfs/1tb.vdb: 0/1
> > > file 26954 goodf=1, badf=2, ff=31
> > > file 26954 get_next_file_rr: 0x2abe73d38028
> > > file 26954 get_next_file: 0x2abe73d38028 [/mnt/nfs/1tb.vdb]
> > > file 26954 get file /mnt/nfs/1tb.vdb, ref=1
> > > random 26954 off rand 1425201762
> > > random 26954 free: b=12242389915983151104, idx=536870912, bit=0
> > > fio: pid=26954, got signal=11
> > > process 26952 pid=26954: runstate 4 -> 9
> > > process 26952 terminate group_id=-1
> > > process 26952 setting terminate on random-writers/26954
> > > diskutil 26952 update io ticks
> > >
> > > the same test works if I replace --filesize=1tb with --filesize=1gb
> > > (but makes for a far less interesting test).
> >
> > Looks like math overflow. Can you double check that ulimit -c is set
> > reasonably high (I usually just do ulimit -c1000000000), then remove the
> > -O2 from the fio makefile and recompile, then trigger the problem. That
> > should give you a clean core dump, invoke gdb with fio and that core
> > file so we can see exactly where it bombs.
>
> I think it's a simple parser problem. Try 'size=1t' instead.
This should fix it, then both "1t" and "1tb" works (or upper case). The
segfault is a separate issue, apparently fio doesn't like 1 byte IO jobs
:-)
I'll fix that separately, for now I've committed the below.
diff --git a/parse.c b/parse.c
index 7821861..a55e52b 100644
--- a/parse.c
+++ b/parse.c
@@ -162,9 +162,19 @@ int str_to_decimal(const char *str, long long *val, int kilo, void *data)
if (*val == LONG_MAX && errno == ERANGE)
return 1;
- if (kilo)
- *val *= get_mult_bytes(str[len - 1], data);
- else
+ if (kilo) {
+ const char *p;
+ /*
+ * if the last char is 'b' or 'B', the user likely used
+ * "1gb" instead of just "1g". If the second to last is also
+ * a letter, adjust.
+ */
+ p = str + len - 1;
+ if ((*p == 'b' || *p == 'B') && isalpha(*(p - 1)))
+ --p;
+
+ *val *= get_mult_bytes(*p, data);
+ } else
*val *= get_mult_time(str[len - 1]);
return 0;
--
Jens Axboe
prev parent reply other threads:[~2009-12-23 7:54 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-23 7:15 fio jobs die with sigsegv if --filesize=1tb Case van Rij
2009-12-23 7:35 ` Jens Axboe
2009-12-23 7:41 ` Jens Axboe
2009-12-23 7:54 ` Jens Axboe [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=20091223075450.GA4489@kernel.dk \
--to=jens.axboe@oracle.com \
--cc=case.vanrij@gmail.com \
--cc=fio@vger.kernel.org \
/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.