FUTEX_WAIT may be interrupted by a signal and return EINTR. If a client
process takes a signal while on the futex, the jack client may error out
with no way to recover despite the signal being safe. Instead, retry if
errno is set to EINTR.
The main loop might be blocked by `data_ready` when JACK server dies
while the program is running.
To reproduce the problem:
1. Start JACK server
2. Run `jack_midi_dump`
3. Stop JACK server
4. Press Ctrl-C in `jack_midi_dump` to send SIGINT.
5. Observe that the program doesn't stop and stuck in the main loop.
This patch forces the `data_ready` to be signaled in the signal handler
to prevent indefinite waiting.
.github/ISSUE_TEMPLATE/bug_report.md:
Add a github issue template for reporting bugs, which tracks what
operating system the user has, which version of JACK is in use and makes
suggestions around how to provide information.
.github/ISSUE_TEMPLATE/feature_request.md:
Add a github issue template for suggesting new features.
SYS_futex is expected from system C library.
in glibc (/usr/include/bits/syscall.h defines it in terms of of NR_futex)
rv32 is using 64bit time_t from get go unlike other 32bit architectures
in glibc, therefore it wont have NR_futex defined but just NR_futex_time64
this aliases it to NR_futex so that SYS_futex is then defined for rv32
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This badge links to a chart that shows where jack2 is the package ecosystem. Apologies, I was unsuccessful formatting the .rst so the badges could be side-by-side.
jack_port_get_latency_range only returns meaningful values after ports get
connected, and that is signalled via the latency callback. Saying that it's
normally used in callbacks is too soft, the docs should make it clear that the
function is not very useful outside of the callback, because you don't know
whether the port is connected / whether the latency values changed.