libcasper and async-signal-safety

From: Alan Somers <>
Date: Tue, 10 Jan 2023 18:45:24 UTC
Normally when a multithreaded process forks, the child is restricted
to only calling async-signal-safe functions until it exec()s..
Otherwise, bad stuff could happen like deadlocks on mutexes that will
never be released.

The cap_init(3) function, used to create Casper services, forks (and
then its child forks again and again and again).  But there's nothing
in the libcasper_service(3) man page about async-signal-safety.

I assume that this is just an oversight.  After all, all of the
existing programs in the base system that use casper are
single-threaded.  But it's a limitation that ought to be documented in
the cap_init(3) man page, right?  Or am I missing something?