Re: Some bugs about command line parameters

From: Jens Axboe <jens.axboe_at_oracle.com>
Date: Thu, 19 Jul 2007 16:38:41 +0200

On Thu, Jul 19 2007, Erwan Velu wrote:
> Jens Axboe wrote:
>
> [...]
>> This I can't reproduce - can you remove the -O2 option from the
>> Makefile, recompile, reproduce, and show me a backtrace?
>>
> I put here the output of the compilation process and the output when fio
> fails.
> Please tell me if you need a more detailed output.
> Erwan,
>
> [erwan_at_r1 fio]$ make
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o gettime.o
> gettime.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o fio.o
> fio.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> ioengines.o ioengines.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o init.o
> init.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o stat.o
> stat.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o log.o
> log.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o time.o
> time.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o md5.o
> md5.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o crc32.o
> crc32.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> filesetup.o filesetup.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o eta.o
> eta.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o verify.o
> verify.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o memory.o
> memory.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o io_u.o
> io_u.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o parse.o
> parse.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o mutex.o
> mutex.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o options.o
> options.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o rbtree.o
> rbtree.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o diskutil.o
> diskutil.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o fifo.o
> fifo.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o blktrace.o
> blktrace.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/cpu.o engines/cpu.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/libaio.o engines/libaio.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/mmap.o engines/mmap.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/posixaio.o engines/posixaio.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/sg.o engines/sg.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/splice.o engines/splice.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/sync.o engines/sync.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/null.o engines/null.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/net.o engines/net.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/syslet-rw.o engines/syslet-rw.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -c -o
> engines/guasi.o engines/guasi.c
> gcc -W -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -g -D_FORTIFY_SOURCE=2 -rdynamic -o fio gettime.o
> fio.o ioengines.o init.o stat.o log.o time.o md5.o crc32.o filesetup.o
> eta.o verify.o memory.o io_u.o parse.o mutex.o options.o rbtree.o
> diskutil.o fifo.o blktrace.o engines/cpu.o engines/libaio.o engines/mmap.o
> engines/posixaio.o engines/sg.o engines/splice.o engines/sync.o
> engines/null.o engines/net.o engines/syslet-rw.o engines/guasi.o -lpthread
> -lm -ldl -laio -lrt
>
> [erwan_at_r1 fio]$ ./fio ~/fio/asimplejob.fio ~/fio/asimplejob.fio
> job1: (g=0): rw=read, bs=16K-16K/16K-16K, ioengine=sync, iodepth=1
> job2: (g=0): rw=write, bs=128K-128K/128K-128K, ioengine=sync, iodepth=1
> job1: (g=1): rw=read, bs=16K-16K/16K-16K, ioengine=sync, iodepth=1
> job2: (g=1): rw=write, bs=128K-128K/128K-128K, ioengine=sync, iodepth=1
> *** glibc detected *** ./fio: double free or corruption (!prev): 0x08071200
> ***

OK, this is what you should do:

$ ulimit -c100000000
$ ./fio ~/fio/asimplejob.fio ~/fio/asimplejob.fio

that should generate a core of some sort, ls core* to see which one it
is. Lets say it's core.1234, then do

$ gdb ./fio core.1234

and run 'bt' from gdb to get a better backtrace.

Thanks!

-- 
Jens Axboe
Received on Thu Jul 19 2007 - 16:38:41 CEST

This archive was generated by hypermail 2.2.0 : Thu Jul 19 2007 - 17:00:02 CEST