--- /dev/null
+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 */