Index: libyang-0.14.53-2698bd6484526facbf82b1263810b938b82a2f23/src/extensions.c
===================================================================
--- libyang-0.14.53-2698bd6484526facbf82b1263810b938b82a2f23.orig/src/extensions.c
+++ libyang-0.14.53-2698bd6484526facbf82b1263810b938b82a2f23/src/extensions.c
@@ -123,11 +123,14 @@ lyext_load_plugins(void)
 
         /* and construct the filepath */
         asprintf(&str, "%s/%s", pluginsdir, file->d_name);
-
-        /* load the plugin - first, try if it is already loaded... */
-        dlhandler = dlopen(str, RTLD_NOW | RTLD_NOLOAD);
-        dlerror();    /* Clear any existing error */
-        if (dlhandler) {
+        /* load the plugin */
+        dlhandler = dlopen(str, RTLD_NOW);
+        if (!dlhandler) {
+            LOGERR(LY_ESYS, "Loading \"%s\" as a plugin failed (%s).", str, dlerror());
+            free(str);
+            continue;
+        }
+        if (ly_set_contains(&dlhandlers, dlhandler) != -1) {
             /* the plugin is already loaded */
             LOGVRB("Extension plugin \"%s\" already loaded.", str);
             free(str);
@@ -137,14 +140,6 @@ lyext_load_plugins(void)
             continue;
         }
 
-        /* ... and if not, load it */
-        dlhandler = dlopen(str, RTLD_NOW);
-        if (!dlhandler) {
-            LOGERR(LY_ESYS, "Loading \"%s\" as an extension plugin failed (%s).", str, dlerror());
-            free(str);
-            continue;
-        }
-        LOGVRB("Extension plugin \"%s\" successfully loaded.", str);
         free(str);
         dlerror();    /* Clear any existing error */
 
@@ -156,6 +151,7 @@ lyext_load_plugins(void)
             dlclose(dlhandler);
             continue;
         }
+        LOGVRB("Plugin \"%s\" successfully loaded.", str)
 
         for(u = 0; plugin[u].name; u++) {
             /* check extension implementations for collisions */
