My bug detector tool found a concurrency issue in axel version 2.17.11, where a thread that has already been joined is attempted to be joined again. Below please find the detailed report.
However, in axel.c line 643, it is still possible to call the pthread_join on the same thread that was joined before.
...
if (!axel->conn[i].state) {
// Wait for termination of this thread
pthread_join(*(axel->conn[i].setup_thread),
NULL);
}
This behavior is non-deterministic and is not always present. However, I can reproduce this behavior deterministically by putting a short sleep statement before the lock acquire event in axel.c line 835. I presumed that this is not an intended behavior. Would you be able to confirm the validity of this issue?
Hello,
My bug detector tool found a concurrency issue in axel version 2.17.11, where a thread that has already been joined is attempted to be joined again. Below please find the detailed report.
At axel.c line 672 the first join occurs.
However, in axel.c line 643, it is still possible to call the
pthread_join
on the same thread that was joined before.This behavior is non-deterministic and is not always present. However, I can reproduce this behavior deterministically by putting a short sleep statement before the lock acquire event in axel.c line 835. I presumed that this is not an intended behavior. Would you be able to confirm the validity of this issue?
Thank you.