From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [217.70.183.194]) by sourceware.org (Postfix) with ESMTPS id 5E8503937430 for ; Wed, 18 Mar 2020 13:41:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 5E8503937430 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=seketeli.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=dodji@seketeli.org X-Originating-IP: 91.166.131.130 Received: from localhost (91-166-131-130.subs.proxad.net [91.166.131.130]) (Authenticated sender: dodji@seketeli.org) by relay2-d.mail.gandi.net (Postfix) with ESMTPSA id CA38040007; Wed, 18 Mar 2020 13:41:22 +0000 (UTC) Received: by localhost (Postfix, from userid 1000) id EE567581890; Wed, 18 Mar 2020 14:41:21 +0100 (CET) From: Dodji Seketeli To: Matthias Maennich Cc: libabigail@sourceware.org, kernel-team@android.com Subject: Re: [PATCH 2/2] abg-workers: guard bring_workers_down to avoid dead lock Organization: Me, myself and I References: <20200312113158.24055-1-maennich@google.com> <20200312113158.24055-2-maennich@google.com> X-Operating-System: Fedora 33 X-URL: http://www.seketeli.net/~dodji Date: Wed, 18 Mar 2020 14:41:21 +0100 In-Reply-To: <20200312113158.24055-2-maennich@google.com> (Matthias Maennich's message of "Thu, 12 Mar 2020 12:31:58 +0100") Message-ID: <871rppvkzi.fsf@seketeli.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.2 required=5.0 tests=JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libabigail mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Mar 2020 13:41:25 -0000 Hello Matthias, Matthias Maennich a =C3=A9crit: > Since bring_workers_down is not atomic, a worker thread can make a racy > read on it while do_bring_workers_down() writes it. That can lead to a > deadlock between the worker thread waiting for more work and > do_bring_workers_down() waiting for the worker to finish. > Address this by guarding all access to bring_workers_down with locking > tasks_todo_mutex. This is likely to be dropped after migrating to newer > C++ standards supporting std::atomic. > > * src/abg-workers.cc(do_bring_workers_down): keep > task_todo_mutex locked while writing bring_workers_down, > (wait_to_execute_a_task): rewrite the loop condition to ensure > safe access to bring_workers_down. Applied to master. Thanks! --=20 Dodji