NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/54192: lang/rust build error
The following reply was made to PR toolchain/54192; it has been noted by GNATS.
From: Kamil Rytarowski <n54%gmx.com@localhost>
To: Martin Husemann <martin%duskware.de@localhost>, Joerg Sonnenberger <joerg%bec.de@localhost>
Cc: gnats-bugs%netbsd.org@localhost, toolchain-manager%netbsd.org@localhost,
gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost, ben@pocket.services
Subject: Re: pkg/54192: lang/rust build error
Date: Wed, 16 Oct 2019 20:38:49 +0200
On 16.10.2019 17:25, Joerg Sonnenberger wrote:
>
> So our per-process LWP identifier should behave like global identifie=
r
> from FreeBSD/Linux, because? They have little in common and the
existing
> behavior is invalid even under the FreeBSD/Linux semantic.
This was just an example that thread id is not preserved across forks.
It's the same in NetBSD (but sometimes it can be by an accident preserved)=
.
On 16.10.2019 17:29, Martin Husemann wrote:
> On Wed, Oct 16, 2019 at 05:14:56PM +0200, Joerg Sonnenberger wrote:
>> On a fundamental level, there are two sane models for a thread
>> identifier:
>> (1) It is globally unique.
>> (2) It is process local and invariant.
>
> Agreed so far, but the question is whether "invariant" holds across fork=
().
>
After fork(2) we have a new process entity and the LWP ID is local to
new thread.
> Pragmatically we should look for the easiest solution.
>
However... this behavior proposed by Joerg is still conformant with POSIX.
"A process shall be created with a single thread. If a multi-threaded
process calls fork(), the new process shall contain a replica of the
calling thread and its entire address space, possibly including the
states of mutexes and other resources. [...]
"
https://pubs.opengroup.org/onlinepubs/9699919799/functions/fork.html
So, let's go with it.
> Martin
>
>
Home |
Main Index |
Thread Index |
Old Index