Index: /trunk/source/level-0/l0-cfm-support.lisp
===================================================================
--- /trunk/source/level-0/l0-cfm-support.lisp	(revision 14574)
+++ /trunk/source/level-0/l0-cfm-support.lisp	(revision 14575)
@@ -316,9 +316,9 @@
 (defun open-shared-library-internal (name)
   (let* ((handle (with-cstrs ((name name))
-                        (ff-call
-                         (%kernel-import target::kernel-import-GetSharedLibrary)
-                         :address name
-                         :unsigned-fullword *dlopen-flags*
-                         :address)))
+                   (ff-call
+                    (%kernel-import target::kernel-import-GetSharedLibrary)
+                    :address name
+                    :unsigned-fullword *dlopen-flags*
+                    :address)))
          (link-map #+(and linux-target (not android-target)) handle
                    #+(or freebsd-target solaris-target)
@@ -334,5 +334,7 @@
                          (pref p :address)
                          (%null-ptr))))
-                   #+android-target (pref handle :soinfo.linkmap)))
+                   #+android-target (if (%null-ptr-p handle)
+                                      handle
+                                      (pref handle :soinfo.linkmap))))
     (if (%null-ptr-p link-map)
       (values nil (dlerror))
@@ -343,8 +345,9 @@
 	(%walk-shared-libraries
 	 #'(lambda (map)
-	     (unless (shared-library-at
-		      (%int-to-ptr (pref map :link_map.l_addr)))
-	       (let* ((new (shlib-from-map-entry map)))
-		 (%dlopen-shlib new)))))))))
+             (let* ((addr (pref map :link_map.l_addr)))
+               (unless (or (eql addr 0)
+                           (shared-library-at (%int-to-ptr addr)))
+                 (let* ((new (shlib-from-map-entry map)))
+                   (%dlopen-shlib new))))))))))
 
 )
