From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B159BA0032; Wed, 14 Sep 2022 01:42:50 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5C97140151; Wed, 14 Sep 2022 01:42:50 +0200 (CEST) Received: from inbox.dpdk.org (inbox.dpdk.org [95.142.172.178]) by mails.dpdk.org (Postfix) with ESMTP id 76C7D400D5 for ; Wed, 14 Sep 2022 01:42:48 +0200 (CEST) Received: by inbox.dpdk.org (Postfix, from userid 33) id 5E25FA00C3; Wed, 14 Sep 2022 01:42:48 +0200 (CEST) From: bugzilla@dpdk.org To: dev@dpdk.org Subject: [Bug 1081] DPDK libraries (rib, lpm, ...) can't safely be used by shared libraries in application that are unloaded Date: Tue, 13 Sep 2022 23:42:48 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: DPDK X-Bugzilla-Component: core X-Bugzilla-Version: 22.03 X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: stephen@networkplumber.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: Normal X-Bugzilla-Assigned-To: dev@dpdk.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org https://bugs.dpdk.org/show_bug.cgi?id=3D1081 Bug ID: 1081 Summary: DPDK libraries (rib, lpm, ...) can't safely be used by shared libraries in application that are unloaded Product: DPDK Version: 22.03 Hardware: All OS: All Status: UNCONFIRMED Severity: major Priority: Normal Component: core Assignee: dev@dpdk.org Reporter: stephen@networkplumber.org Target Milestone: --- Our application has base program and plugins. The plugins are loaded at run time with dlopen() and can be updated by doing dlclose() to replace the library with a new version. Libraries that are only used by these plugins will crash when reloaded. The sequences is: 1. Program is started 2. Plugin is loaded with dlopen() 3. dlopen will auto load the dependent shared library (for example rte_r= ib) 4. Later plugin is unloaded by calling cleanup code and then dlclose() 5. dlcose() will unload the dependent no longer used shared library 6. Reloading with dlopen causes crash because the tailq list has entry for already freed memory from the previous instance. The problem is that some DPDK libraries use EAL_REGISTER_TAILQ as a constru= ctor bu have no destructor. This problem applies to all libraries using EAL_REGISTER_TAILQ. The best fix is to add destructor/unregister logic to the eal tailq. Workaround is to load the dependent library during DPDK startup in main program. --=20 You are receiving this mail because: You are the assignee for the bug.=