From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.2 Received: from mother.openwall.net (mother.openwall.net [195.42.179.200]) by inbox.vuxu.org (OpenSMTPD) with SMTP id 7ceffdee for ; Mon, 10 Feb 2020 19:34:41 +0000 (UTC) Received: (qmail 24392 invoked by uid 550); 10 Feb 2020 19:34:39 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 24371 invoked from network); 10 Feb 2020 19:34:39 -0000 Date: Mon, 10 Feb 2020 14:34:27 -0500 From: Rich Felker To: musl@lists.openwall.com Message-ID: <20200210193427.GR1663@brightrain.aerifal.cx> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Rich Felker Subject: Re: [musl] No such process return value in pthread_getcpuclockid On Mon, Feb 10, 2020 at 10:29:02PM +0300, Alexander Scherbatiy wrote: > Hello, > > It seems that pthread_getcpuclockid does not properly handle non > valid thread id argument. > > Below is a sample which calls pthread_getcpuclockid with NULL thread > id. The expected result is ESRCH (No thread with the ID thread could > be found). It crashes in my docker with Alpine Linux 3.11.3 (musl > libc x86_64 1.1.24). It returns ESRCH on my Ubuntu system. There's no such thing as a "null thread id". A pthread_t value is either the id of a thread which is still valid (still running or joinable and not yet joined), or *any* use of it produces undefined behavior. There is no value reserved for a sentinel. If you need an optional thread id variable/field, you need a separate validity flag alongside it. None of this is unique to musl; it's the way the POSIX threads interfaces are designed. Rich