I found a bug is bssplit parsing in bssplit_ddir() when trying to use
FIO on an ARM platform. It looks like str_to_decimal() takes a "void
*" as its fourth argument, which it passes to get_multi_bytes(), which
is passes to fio_get_kb_base(), which casts it to a "struct
thread_data *". bssplit_ddir() is passing in "struct thread_data **",
which I think is causing fio_get_kb_base() to go paw around in the
stack; I believe the different stack layouts between ARM and x86 is
causing me to see this problem. The first change that introduces this
bug seems to be
d6978a3242daad9cb7b0710b724f19225d1ed7e2.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
} else
perc = -1;
- if (str_to_decimal(fname, &val, 1, &td)) {
+ if (str_to_decimal(fname, &val, 1, td)) {
log_err("fio: bssplit conversion failed\n");
free(td->o.bssplit);
return 1;