From owner-freebsd-current@freebsd.org Thu Dec 3 07:44:37 2020 Return-Path: Delivered-To: freebsd-current@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 031C647DA93 for ; Thu, 3 Dec 2020 07:44:37 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: from mail-oi1-f170.google.com (mail-oi1-f170.google.com [209.85.167.170]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Cmnsv6FpMz3BqK; Thu, 3 Dec 2020 07:44:35 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: by mail-oi1-f170.google.com with SMTP id f11so1269200oij.6; Wed, 02 Dec 2020 23:44:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:reply-to :from:date:message-id:subject:to:cc:content-transfer-encoding; bh=dhtYLo+d7RR8oTnt1o5oUyEEsmu+gkbkvtM6sCeQPhU=; b=KxfwCAkedXsRMbbHVl3nYSJ/9yIhJSfw0NbYBZqx2Z5bCKhEMRZnd2HdPwXEb9sfRg WpmDZb5zU/w5AIExi9YTeJZ77AX3KSB7RTn7SG6aVoEQlsQrvBq2gbtfsyV+DJGLPl6R nXtsvNuU1oAi8cpBKmW6z5MhmDVFtN9Ww8db/H10xbRF2uuqyma8dy7x9K3S+v7Pjgg9 4Zk3RPy+85NlqOroaU3EXbo4smzj1U1miAMpz2wCeVXRgihv8IZKzq/Fhazwdc5T3GvJ kXDTB4l2nefWKrkkF4sTxCYuIOqojy9urMHIsWr1NIVxNRAmgiVeaIWgpZsE0zM7epnt m0rQ== X-Gm-Message-State: AOAM531bzsp2wSGNRri41g6PmyVfW/JIlg4B82+A7yAPWqZQPKyW5Nu5 sodlbKn1DmOlWsTjtOVHmoc+qTFCXhY= X-Google-Smtp-Source: ABdhPJw9RMyok3MYt+cCJ25NvvXChGY8G7AFYAhV0mGpbmagXZIaMkOG95lHraQuKaIlSixxrFKy9Q== X-Received: by 2002:aca:4257:: with SMTP id p84mr1047333oia.68.1606981474468; Wed, 02 Dec 2020 23:44:34 -0800 (PST) Received: from mail-ot1-f44.google.com (mail-ot1-f44.google.com. [209.85.210.44]) by smtp.gmail.com with ESMTPSA id x9sm75299otk.9.2020.12.02.23.44.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 02 Dec 2020 23:44:34 -0800 (PST) Received: by mail-ot1-f44.google.com with SMTP id x15so931393otp.4; Wed, 02 Dec 2020 23:44:34 -0800 (PST) X-Received: by 2002:a05:6830:1286:: with SMTP id z6mr1255514otp.334.1606981473993; Wed, 02 Dec 2020 23:44:33 -0800 (PST) MIME-Version: 1.0 References: <5b827768-eb46-07f3-5b44-49627779786e@FreeBSD.org> <22f5dfc1-c709-6911-b8b0-121e4c40affc@FreeBSD.org> In-Reply-To: <22f5dfc1-c709-6911-b8b0-121e4c40affc@FreeBSD.org> Reply-To: cem@freebsd.org From: Conrad Meyer Date: Wed, 2 Dec 2020 23:44:23 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: rand() is racy in multi-threaded programs? To: Andriy Gapon Cc: FreeBSD Current Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4Cmnsv6FpMz3BqK X-Spamd-Bar: -- X-Spamd-Result: default: False [-2.00 / 15.00]; HAS_REPLYTO(0.00)[cem@freebsd.org]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17]; REPLYTO_ADDR_EQ_FROM(0.00)[]; RCVD_COUNT_THREE(0.00)[4]; TO_DN_ALL(0.00)[]; NEURAL_HAM_SHORT(-1.00)[-1.000]; RCPT_COUNT_TWO(0.00)[2]; FORGED_SENDER(0.30)[cem@freebsd.org,csecem@gmail.com]; R_DKIM_NA(0.00)[]; SUBJECT_ENDS_QUESTION(1.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; TAGGED_FROM(0.00)[]; RBL_DBL_DONT_QUERY_IPS(0.00)[209.85.167.170:from]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_NEQ_ENVFROM(0.00)[cem@freebsd.org,csecem@gmail.com]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; DMARC_NA(0.00)[freebsd.org]; SPAMHAUS_ZRD(0.00)[209.85.167.170:from:127.0.2.255]; RCVD_IN_DNSWL_NONE(0.00)[209.85.167.170:from]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.167.170:from]; RCVD_TLS_ALL(0.00)[]; MAILMAN_DEST(0.00)[freebsd-current] X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Dec 2020 07:44:37 -0000 Hi Andriy, On Wed, Dec 2, 2020 at 11:34 PM Andriy Gapon wrote: > > On 03/12/2020 01:20, Conrad Meyer wrote: > > Rand(3) is explicitly unsafe to use from concurrent threads without som= e > > external serialization, even after initialization. I=E2=80=99d suggest = using a different > > API. > > thank you! > Just want to check, unsafe in terms of bogus results (with respect to > randomness) or unsafe as in may crash? Well, unsafe in that it's a data race, which is formally undefined behavior in C (if I understand correctly). So anything could happen, including a crash. In practice, you would probably see something more like the former (bogus results, e.g., multiple calls returning the same number because the state wasn't updated atomically, or something like that) rather than a crash. Best, Conrad