<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:49:41 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[CSHARP-4889] Support Linux distros using libdl.so.2</title>
                <link>https://jira.mongodb.org/browse/CSHARP-4889</link>
                <project id="10041" key="CSHARP">C# Driver</project>
                    <description>&lt;p&gt;CSFLE with the .NET driver doesn&apos;t work on Linux distros such as Debian 11 due to a dependency on &lt;tt&gt;libdl.so&lt;/tt&gt; for loading the &lt;tt&gt;libmongocrypt.so&lt;/tt&gt; library. On Debian 11 (and several other distros), the &lt;tt&gt;dlopen&lt;/tt&gt; and &lt;tt&gt;dlsym&lt;/tt&gt; functions reside in &lt;tt&gt;libdl.so.2&lt;/tt&gt;. The dependency is in the &lt;tt&gt;LinuxLibrary&lt;/tt&gt; class in &lt;tt&gt;bindings/cs/MongoDB.Libmongocrypt/LibraryLoader.cs&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;At runtime, the library throws an exception such as:&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;System.DllNotFoundException: Unable to load shared library &apos;libdl&apos; or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibdl: cannot open shared object file: No such file or directory&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at MongoDB.Libmongocrypt.LibraryLoader.LinuxLibrary.dlopen(String filename, Int32 flags)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at MongoDB.Libmongocrypt.LibraryLoader.LinuxLibrary..ctor(String path)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at MongoDB.Libmongocrypt.LibraryLoader..ctor()&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at MongoDB.Libmongocrypt.Library.&amp;lt;&amp;gt;c.&amp;lt;.cctor&amp;gt;b__0_65()&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at System.Lazy`1.CreateValue()&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at System.Lazy`1.get_Value()&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at MongoDB.Libmongocrypt.Library.&amp;lt;&amp;gt;c.&amp;lt;.cctor&amp;gt;b__0_1()&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at System.Lazy`1.CreateValue()&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at MongoDB.Libmongocrypt.CryptClientFactory.Create(CryptOptions options)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at MongoDB.Driver.Core.Clusters.CryptClientCreator.CreateCryptClient(CryptOptions options)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at MongoDB.Driver.Core.Clusters.CryptClientCreator.CreateCryptClient(CryptClientSettings cryptClientSettings)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;   at MongoDB.Driver.Encryption.ClientEncryption..ctor(ClientEncryptionOptions clientEncryptionOptions)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;
&lt;p&gt;The &lt;a href=&quot;https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.nativelibrary&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;NativeLibrary&lt;/a&gt; class might help, but can&apos;t be used since &lt;tt&gt;libmongocrypt&lt;/tt&gt; targets .NET Standard and that library is not available on .NET Standard.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/mellinoe/nativelibraryloader&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mellinoe/nativelibraryloader&lt;/a&gt; package might be a viable alternative since it supports .NET Standard 2.0 and supports systems that use &lt;tt&gt;libdl.so&lt;/tt&gt; as well as ones that use &lt;tt&gt;libdl.so.2&lt;/tt&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="2254839">CSHARP-4889</key>
            <summary>Support Linux distros using libdl.so.2</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="eric_rosenquist@cysiv.com">Eric Rosenquist</reporter>
                        <labels>
                            <label>rp-track</label>
                    </labels>
                <created>Tue, 7 Feb 2023 13:56:11 +0000</created>
                <updated>Fri, 26 Jan 2024 18:02:10 +0000</updated>
                                                                                                <votes>1</votes>
                                    <watches>11</watches>
                                                                                                                <comments>
                            <comment id="5958408" author="JIRAUSER1276606" created="Mon, 18 Dec 2023 20:03:46 +0000"  >&lt;p&gt;We&apos;ve been using Atlas + CSFLE for the last 2 years and have constantly been struggling with this issue. Now with Net8, even though libdl.so.2 is available in the containers out of the box we&apos;re having to do various hacks to get this working. Given FLE is an enterprise feature, this should just work with the official dotnet docker images. There is absolutely no documentation around this and all documentation, if any, is dated and buried deep inside.&lt;/p&gt;</comment>
                            <comment id="5899371" author="james.kovacs" created="Wed, 22 Nov 2023 17:51:39 +0000"  >&lt;p&gt;Given that our current &lt;tt&gt;dlopen&lt;/tt&gt; dynamic loading technique fails on certain Linux distros such as Debian 11 and Alpine, we are going to investigate options for dynamic loading that are more cross-Linux compatible. Please follow this ticket for updates.&lt;/p&gt;</comment>
                            <comment id="5881737" author="JIRAUSER1275821" created="Wed, 15 Nov 2023 12:56:45 +0000"  >&lt;p&gt;Hi Team, Do we have any updates on this? It looks like this feature is still in an unstable state. I recently got the chance to adopt this feature with one of our works but ended up with a dead-end sort of status. Because this is not stable enough in &lt;b&gt;.NET 6&lt;/b&gt; container images. We have created a support ticket related to this &lt;a href=&quot;https://support.mongodb.com/case/01221814&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://support.mongodb.com/case/01221814&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5386223" author="dmitry.lukyanov" created="Fri, 28 Apr 2023 20:56:02 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=james.kovacs%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;james.kovacs@mongodb.com&quot;&gt;james.kovacs@mongodb.com&lt;/a&gt; I&apos;ve reassigned this on you to not lose this ticket&lt;/p&gt;</comment>
                            <comment id="5386217" author="dmitry.lukyanov" created="Fri, 28 Apr 2023 20:54:25 +0000"  >&lt;p&gt;The easier solution I see is to create different &quot;ISharedLibraryLoader&quot;s &lt;a href=&quot;https://github.com/mongodb/libmongocrypt/blob/master/bindings/cs/MongoDB.Libmongocrypt/LibraryLoader.cs#L180&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;impls&lt;/a&gt; on OSs where methods &quot;dlopen&quot;, &quot;dlsym&quot; can be placed into different libraries. So, for linux we will need at least 2 with &quot;libdl&quot; impl and &quot;&lt;tt&gt;libdl.so.2&lt;/tt&gt;&quot;. And then &lt;a href=&quot;https://github.com/mongodb/libmongocrypt/blob/master/bindings/cs/MongoDB.Libmongocrypt/LibraryLoader.cs#L119&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt; we will need to validate whether underlying library loader call succeeded or no. If no and if we have a different loader, try creating it.&lt;/p&gt;

&lt;p&gt;The problem here is configuring EG env. Given that Debian11 doesn&apos;t have .net installed, we need to prepare it beforehand. The easiest way is to add cake scripts from the driver, but it didn&apos;t work well for me (see my &lt;a href=&quot;https://github.com/DmitryLukyanov/libmongocrypt/commits/install_dotnet_with_cake&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;branch&lt;/a&gt;).&lt;/p&gt;</comment>
                            <comment id="5201945" author="JIRAUSER1272770" created="Wed, 15 Feb 2023 20:28:06 +0000"  >&lt;p&gt;That would be a reference to &lt;tt&gt;libdl.so.2&lt;/tt&gt; that was automatically added during linking. If you do &lt;tt&gt;nm -g libmongocrypt.so | grep dl&lt;/tt&gt; you can see that symbols like &lt;tt&gt;dlopen&lt;/tt&gt; actually come from GLIBC. That&apos;s expected since &lt;tt&gt;libdl.so*&lt;/tt&gt; is now basically an empty stub library and the routines are in libc.&lt;/p&gt;

&lt;p&gt;Regardless of that, this bug is because the C# code uses &lt;tt&gt;DllImport&lt;/tt&gt; in &lt;tt&gt;bindings/cs/MongoDB.Libmongocrypt/LibraryLoader.cs&lt;/tt&gt; to find the &lt;tt&gt;dlopen&lt;/tt&gt; and &lt;tt&gt;dlsym&lt;/tt&gt; functions around line 206. The .NET &lt;tt&gt;DllImport&lt;/tt&gt; implementation will add &lt;tt&gt;lib&lt;/tt&gt; as a prefix and &lt;tt&gt;.so&lt;/tt&gt; as a suffix if necessary, but it&#160;doesn&apos;t know that some Linux distros use &lt;tt&gt;libdl.so&lt;/tt&gt; and others use &lt;tt&gt;libdl.so.2&lt;/tt&gt; - so in this case it just looks for &lt;tt&gt;libdl.so&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;I&apos;m running code in a Debian 11.6 container based on&#160;&lt;tt&gt;mcr.microsoft.com/dotnet/aspnet:6.0&lt;/tt&gt;, which is based on &lt;tt&gt;amd64/debian:bullseye-slim&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;For what it&apos;s worth, using &lt;tt&gt;DllImport&lt;/tt&gt; to find &lt;tt&gt;dlopen&lt;/tt&gt; and &lt;tt&gt;dlsym&lt;/tt&gt; to bind functions is normally not needed in .NET, which is why other libraries don&apos;t run into similar issues. If you have a native library and you want to use it in .NET, you typically just declare a .NET function for each entry point using &lt;tt&gt;DllImport&lt;/tt&gt; and you specify the library name to &lt;tt&gt;DllImport&lt;/tt&gt;. An entry point like &lt;tt&gt;mongocrypt_status_new&lt;/tt&gt; would have a C# binding that looks something like:&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    [DllImport(&quot;mongocrypt&quot;, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;    internal static extern StatusSafeHandle mongocrypt_status_new();&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;
&lt;p&gt;The paths that &lt;tt&gt;DllImport&lt;/tt&gt; searches can be controlled with the &lt;tt&gt;DefaultDllImportSearchPaths&lt;/tt&gt; attribute, but I doubt you even need that.&lt;/p&gt;</comment>
                            <comment id="5201753" author="roberto.sanchez" created="Wed, 15 Feb 2023 19:33:23 +0000"  >&lt;p&gt;I have looked at the &lt;tt&gt;libmongocrypt.so&lt;/tt&gt; runtime library at the link you provided.  According to &lt;tt&gt;readelf -a ./libmongocrypt.so&lt;/tt&gt; it wants &lt;tt&gt;libdl.so.2&lt;/tt&gt;:&lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;When I run &lt;tt&gt;ldd&lt;/tt&gt; on the shared library it always finds &lt;tt&gt;libdl.so.2&lt;/tt&gt;.  I verified this in Debian environments from Debian 7 all the way to a current Debian unstable.&lt;/p&gt;

&lt;p&gt;Can you provide a specific case, including OS version, and steps to reproduce the fault you are experiencing?&lt;/p&gt;</comment>
                            <comment id="5196920" author="JIRAUSER1272770" created="Tue, 14 Feb 2023 14:21:26 +0000"  >&lt;p&gt;It&apos;s bundled with the .NET driver. The main .NET driver is &lt;a href=&quot;https://www.nuget.org/packages/MongoDB.Driver#dependencies-body-tab&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;MongoDB.Driver&lt;/a&gt; which depends on &lt;a href=&quot;https://www.nuget.org/packages/MongoDB.Libmongocrypt/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;MongoDB.Libmongocrypt.&lt;/a&gt;. The latter bundles Windows, Linux, and macOS copies of libmongocrypt which you can see under the &lt;tt&gt;runtimes&lt;/tt&gt; folder at &lt;a href=&quot;https://nuget.info/packages/MongoDB.Libmongocrypt/1.7.0&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://nuget.info/packages/MongoDB.Libmongocrypt/1.7.0&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="5195072" author="roberto.sanchez" created="Mon, 13 Feb 2023 22:56:31 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=eric_rosenquist%40cysiv.com&quot; class=&quot;user-hover&quot; rel=&quot;eric_rosenquist@cysiv.com&quot;&gt;eric_rosenquist@cysiv.com&lt;/a&gt;, can you provide some information about how you are building libmongocrypt, or where you are obtaining packages (in the case that you are using binary packages)?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1392736">SERVER-49140</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="2158740">CSHARP-4363</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_14266" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Documentation Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;1.  What would you like to communicate to the user about this feature?&lt;br/&gt;
2.  Would you like the user to see examples of the syntax and/or executable code and its output?&lt;br/&gt;
3.  Which versions of the driver/connector does this apply to?&lt;/p&gt;</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_21553" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Quarter</customfieldname>
                        <customfieldvalues>
                                        <label>FY25Q1</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i1cs88:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>