public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] manual: Add note to process.texi about MT-process fork (Bug 30159)
@ 2023-02-23 20:49 Carlos O'Donell
  2023-02-23 21:32 ` Florian Weimer
  0 siblings, 1 reply; 3+ messages in thread
From: Carlos O'Donell @ 2023-02-23 20:49 UTC (permalink / raw)
  To: libc-alpha; +Cc: Carlos O'Donell

The forked child of an MT-process may only call AS-safe functions.
---
 manual/process.texi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/manual/process.texi b/manual/process.texi
index 9307379194..dfdf0923b4 100644
--- a/manual/process.texi
+++ b/manual/process.texi
@@ -316,6 +316,12 @@ The child doesn't inherit alarms set by the parent process.
 The set of pending signals (@pxref{Delivery of Signal}) for the child
 process is cleared.  (The child process inherits its mask of blocked
 signals and signal actions from the parent process.)
+
+@item
+In the case of a multi-threaded parent, the child process may only
+safely call asynchronous-signal-safe functions until the process is
+replaced with a call to an @code{exec} family function.
+
 @end itemize
 
 @deftypefun pid_t _Fork (void)
-- 
2.39.2


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] manual: Add note to process.texi about MT-process fork (Bug 30159)
  2023-02-23 20:49 [PATCH] manual: Add note to process.texi about MT-process fork (Bug 30159) Carlos O'Donell
@ 2023-02-23 21:32 ` Florian Weimer
  2023-02-23 22:39   ` Carlos O'Donell
  0 siblings, 1 reply; 3+ messages in thread
From: Florian Weimer @ 2023-02-23 21:32 UTC (permalink / raw)
  To: Carlos O'Donell via Libc-alpha; +Cc: Carlos O'Donell

* Carlos O'Donell via Libc-alpha:

> The forked child of an MT-process may only call AS-safe functions.
> ---
>  manual/process.texi | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/manual/process.texi b/manual/process.texi
> index 9307379194..dfdf0923b4 100644
> --- a/manual/process.texi
> +++ b/manual/process.texi
> @@ -316,6 +316,12 @@ The child doesn't inherit alarms set by the parent process.
>  The set of pending signals (@pxref{Delivery of Signal}) for the child
>  process is cleared.  (The child process inherits its mask of blocked
>  signals and signal actions from the parent process.)
> +
> +@item
> +In the case of a multi-threaded parent, the child process may only
> +safely call asynchronous-signal-safe functions until the process is
> +replaced with a call to an @code{exec} family function.

We support calling malloc after fork as an extension.  For example,
calling opendir after fork to find file descriptors in /proc/self/fd is
fairly common.

Perhaps add:

As an extension relative to POSIX, @theglibc{} supports calling
@code{malloc} and other allocation functions after @code{fork}.  This
only applies to the standard @code{malloc}.  Whether this extension is
supported by replacement @code{malloc} implementations depends on the
replacement.  @xref{Replacing malloc}.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] manual: Add note to process.texi about MT-process fork (Bug 30159)
  2023-02-23 21:32 ` Florian Weimer
@ 2023-02-23 22:39   ` Carlos O'Donell
  0 siblings, 0 replies; 3+ messages in thread
From: Carlos O'Donell @ 2023-02-23 22:39 UTC (permalink / raw)
  To: Florian Weimer, Carlos O'Donell via Libc-alpha

On 2/23/23 16:32, Florian Weimer wrote:
> * Carlos O'Donell via Libc-alpha:
> 
>> The forked child of an MT-process may only call AS-safe functions.
>> ---
>>  manual/process.texi | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/manual/process.texi b/manual/process.texi
>> index 9307379194..dfdf0923b4 100644
>> --- a/manual/process.texi
>> +++ b/manual/process.texi
>> @@ -316,6 +316,12 @@ The child doesn't inherit alarms set by the parent process.
>>  The set of pending signals (@pxref{Delivery of Signal}) for the child
>>  process is cleared.  (The child process inherits its mask of blocked
>>  signals and signal actions from the parent process.)
>> +
>> +@item
>> +In the case of a multi-threaded parent, the child process may only
>> +safely call asynchronous-signal-safe functions until the process is
>> +replaced with a call to an @code{exec} family function.
> 
> We support calling malloc after fork as an extension.  For example,
> calling opendir after fork to find file descriptors in /proc/self/fd is
> fairly common.

We support calling a lot of things in reality, but I didn't want to over commit
with this change to the manual. I like your narrowly worded addition.

> Perhaps add:
> 
> As an extension relative to POSIX, @theglibc{} supports calling
> @code{malloc} and other allocation functions after @code{fork}.  This
> only applies to the standard @code{malloc}.  Whether this extension is
> supported by replacement @code{malloc} implementations depends on the
> replacement.  @xref{Replacing malloc}.

v2 posted:
https://patchwork.sourceware.org/project/glibc/patch/20230223223728.423748-1-carlos@redhat.com/

Checked pdf/html/texi builds and the xref and macros look good.

-- 
Cheers,
Carlos.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-02-23 22:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-23 20:49 [PATCH] manual: Add note to process.texi about MT-process fork (Bug 30159) Carlos O'Donell
2023-02-23 21:32 ` Florian Weimer
2023-02-23 22:39   ` Carlos O'Donell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).