diff --git a/main/libc0.9.32/APKBUILD b/main/libc0.9.32/APKBUILD
index da7d6e1..88fa0bf 100644
--- a/main/libc0.9.32/APKBUILD
+++ b/main/libc0.9.32/APKBUILD
@@ -4,7 +4,7 @@ pkgname=libc$_abiver
 _gitver=
 pkgver=0.9.33.2
 _ver=${pkgver/_/-}
-pkgrel=12
+pkgrel=13
 pkgdesc="C library for developing embedded Linux systems"
 url=http://uclibc.org
 license="LGPL-2"
@@ -54,6 +54,7 @@ librt-re-add-SIGCANCEL-to-the-list-of-blocked-signal-in-helper-thread.patch
 
 	0001-libc-sysdeps-get-make-set-swap-context-for-i386.patch
 	0002-libc-sysdeps-add-get-make-set-swap-context-for-x86_6.patch
+	uclibc-dlclose-fix.patch
 
 	uclibcconfig.x86
 	uclibcconfig.x86_64
@@ -191,6 +192,7 @@ f059f5e437ed4fe1b6973dd08972e583  0003-pread-pwrite-drop-fallback-funcs.patch
 f41ab6cf22545d2e629d4c7107ac6f85  0009-sys-quota.h-sync-with-glibc.patch
 e5aceb82bf4ffd5328113af5380fcdb6  0001-libc-sysdeps-get-make-set-swap-context-for-i386.patch
 da043a65003ac29ca8b96f416e7752ee  0002-libc-sysdeps-add-get-make-set-swap-context-for-x86_6.patch
+8374c98e769e603af4adad12e01cf358  uclibc-dlclose-fix.patch
 ce8a33a31f5a53031fbad8b1d1b66d44  uclibcconfig.x86
 e861a17baa541accf4d4d39a98d74c32  uclibcconfig.x86_64
 ce8a33a31f5a53031fbad8b1d1b66d44  uclibcconfig.i486
diff --git a/main/libc0.9.32/uclibc-dlclose-fix.patch b/main/libc0.9.32/uclibc-dlclose-fix.patch
new file mode 100644
index 0000000..c99cd25
--- /dev/null
+++ b/main/libc0.9.32/uclibc-dlclose-fix.patch
@@ -0,0 +1,14 @@
+--- ./ldso/libdl/libdl.c.orig
++++ ./ldso/libdl/libdl.c
+@@ -951,8 +951,8 @@
+ 
+ 					dtv_t *dtv = THREAD_DTV ();
+ 
+-					_dl_assert(!(dtv[tls_lmap->l_tls_modid].pointer.is_static));
+-					if (dtv[tls_lmap->l_tls_modid].pointer.val != TLS_DTV_UNALLOCATED) {
++					if (!(dtv[tls_lmap->l_tls_modid].pointer.is_static) &&
++					    dtv[tls_lmap->l_tls_modid].pointer.val != TLS_DTV_UNALLOCATED) {
+ 						/* Note that free is called for NULL is well.  We
+ 						deallocate even if it is this dtv entry we are
+ 						supposed to load.  The reason is that we call
+
