Skip to content

VS 16.2.0 regression: failed DllImport on the libdl system library. #3388

@plynkus

Description

@plynkus

Steps to Reproduce

  1. Update to the initial VS 16.2.0 release (which includes Xamarin.Android 9.4.0.51).
  2. Create a blank Xamarin.Android application via the appropriate template.
  3. Atop MainActivity.cs, add usings for System and System.Runtime.InteropServices.
  4. To the MainActivity class, add:
        [DllImport("libdl", EntryPoint = "dlopen")]
        private static extern IntPtr DLLOpen(string fileName, int flags);
  1. To MainActivity.OnCreate(Bundle), add a dummy invocation of the above (DLLOpen("foo", 0)).

  2. Build and run.

Expected Behavior

Proper lookup / load of the library, appropriate output pane notification (e.g., the logging reports a series of load errors in search path locations followed by a DllImport loaded library '/system/lib/libdl.so' success indication.

Actual Behavior

The application throws System.DllNotFoundException for libdl and the output logging shows suspicious E/Linker errors:

07-24 18:03:43.058 D/Mono    (20858): DllImport attempting to load: 'libdl'.
07-24 18:03:43.067 D/Mono    (20858): DllImport error loading library '/storage/emulated/0/Android/data/com.companyname.dllimporttest/files/.__override__/libdl': '(null)'.
07-24 18:03:43.073 D/Mono    (20858): DllImport error loading library '/storage/emulated/0/Android/data/com.companyname.dllimporttest/files/.__override__/libdl.so': '(null)'.
07-24 18:03:43.080 D/Mono    (20858): DllImport error loading library '/storage/emulated/0/Android/data/com.companyname.dllimporttest/files/.__override__/libdl.so': '(null)'.
07-24 18:03:43.082 D/Mono    (20858): DllImport error loading library '/system/lib/libdl': '(null)'.
07-24 18:03:43.086 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/Mono.Android.DebugRuntime-1/lib/arm/libmonosgen-32bit-2.0.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.090 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.092 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.095 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.098 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.100 D/Mono    (20858): DllImport error loading library '/system/lib/libdl.so': 'dlopen failed: library "/system/lib/libdl.so" needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace "classloader-namespace"'.
07-24 18:03:43.102 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/Mono.Android.DebugRuntime-1/lib/arm/libmonosgen-32bit-2.0.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.105 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.107 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.109 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.111 E/linker  (20858): library "/system/lib/libdl.so" ("/system/lib/libdl.so") needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.companyname.dllimporttest-1/lib/arm:/data/app/com.companyname.dllimporttest-1/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/com.companyname.dllimporttest"]
07-24 18:03:43.111 D/Mono    (20858): DllImport error loading library '/system/lib/libdl.so': 'dlopen failed: library "/system/lib/libdl.so" needed or dlopened by "/data/app/com.companyname.dllimporttest-1/lib/arm/libmonodroid.so" is not accessible for the namespace "classloader-namespace"'.
07-24 18:03:43.112 D/Mono    (20858): DllImport error loading library 'libdl': '(null)'.
07-24 18:03:43.113 D/Mono    (20858): DllImport error loading library 'libdl.so': '(null)'.
07-24 18:03:43.114 D/Mono    (20858): DllImport error loading library 'libdl.so': '(null)'.
07-24 18:03:43.115 D/Mono    (20858): DllImport error loading library 'libdl': '(null)'.
07-24 18:03:43.115 W/Mono    (20858): DllImport unable to load library '(null)'.
Loaded assembly: System.Runtime.Serialization.dll [External]
**System.DllNotFoundException:** 'libdl'

Version Information

Xamarin.Android SDK 9.4.0.51 (d16-2/9fa7775)
Xamarin.Android Reference Assemblies and MSBuild support.
Mono: mono/mono@e6f5369c2d2
Java.Interop: xamarin/java.interop/d16-2@d64ada5
LibZipSharp: grendello/LibZipSharp/d16-2@caa0c74
LibZip: nih-at/libzip@b95cf3f
ProGuard: xamarin/proguard@905836d
SQLite: xamarin/sqlite@8212a2d
Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-2@6f6c969

VS bug #972238

Metadata

Metadata

Assignees

Labels

vs-syncFor internal use only; creates a VSTS "mirror" issue.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions