The valgrind indication is a false positive in this case, is seems there is a race of memory read and free of the libaio and aio kernel threads which had not timer-d out yet during exit()
reducing the aio_idle_time timeout to mitigate
```
man aio_init
...
aio_idle_time
This field specifies the amount of time in seconds that a worker thread
should wait for further requests before terminating, after having
completed a previous request. The
default value is 1.
...
```
Fixes: https://tracker.ceph.com/issues/64835
Signed-off-by: Mark Kogan <mkogan@ibm.com>
struct aioinit ainit{0};
ainit.aio_threads = cct->_conf.get_val<int64_t>("rgw_d3n_libaio_aio_threads");
ainit.aio_num = cct->_conf.get_val<int64_t>("rgw_d3n_libaio_aio_num");
- ainit.aio_idle_time = 5;
+ ainit.aio_idle_time = 2;
aio_init(&ainit);
#endif
}