<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <p>Does this happen if LibraryLookup is replaced by System.load ?</p>
    <p>IIRC, the code that underlies LibraryLookup is fairly similar to
      the one already used by the JDK, so perhaps there might be a more
      general issue.</p>
    <p>Cheers<br>
      Maurizio<br>
    </p>
    <div class="moz-cite-prefix">On 13/08/2023 19:42, 刘希晨 wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:CABUmArSKrQfTq2SM9eOVeefHEt_kkfzW7tC3BjU28nrKuxgZrw@mail.gmail.com">
      
      <div dir="ltr"><br>
        <div>I have found a really strange problem when using
          project-panama on macos, and it might be a bug.</div>
        <div><br>
        </div>
        <div><b>Environment</b>: JDK-21 ea build 34, cpu : M1 Pro,
          operating system : Ventura 13.5</div>
        <div><br>
        </div>
        <div>Here are the minimal reproducible codes:</div>
        <div><br>
        </div>
        <div>
          <pre style="color:rgb(188,190,196);font-family:"JetBrains Mono",monospace;font-size:9.8pt"><span style="color:rgb(207,142,109)">public class </span>SimpleExample {
    <span style="color:rgb(207,142,109)">public static void </span><span style="color:rgb(86,168,245)">main</span>(String[] args) <span style="color:rgb(207,142,109)">throws </span>Throwable {
        SymbolLookup crypto = SymbolLookup.<span style="font-style:italic">libraryLookup</span>(<span style="color:rgb(106,171,115)">"/Users/liuxichen/workspace/tenet-lib/lib/libcrypto.dylib"</span>, Arena.<span style="font-style:italic">global</span>());
        Thread.<span style="font-style:italic">sleep</span>(Long.<span style="color:rgb(199,125,187);font-style:italic">MAX_VALUE</span>);
    }
}</pre>
        </div>
        <div>The libcrypto.dylib file is the OPENSSL dynamic library
          file, I think other libraries probably could cause the same
          problem.</div>
        <div><br>
        </div>
        <div><b>Problem description</b>: </div>
        <div>A normal java program would work fine with <b>jconsole</b>
          and <b>jmap</b>, if running the above code in macos, jconsole
          won't be able to connect to the target process, and jmap will
          give the following error:</div>
        <div><br>
        </div>
        <div> <b>~/Dow/jdk-21/C/H/bin  jps</b>                     </div>
        <div>
          <div style="background-color:rgb(30,31,34);color:rgb(188,190,196)">
            <pre style="font-family:"JetBrains Mono",monospace;font-size:9.8pt"><span style="color:rgb(42,172,184)">1665 </span>RemoteMavenServer36
<span style="color:rgb(42,172,184)">2673 </span>Jps
<span style="color:rgb(42,172,184)">532
</span><span style="color:rgb(42,172,184)">1671 </span>Launcher
<span style="color:rgb(42,172,184)">1672 </span>SimpleExample
<span style="color:rgb(42,172,184)">1211</span></pre>
          </div>
        </div>
        <div><br>
        </div>
        <div><b> ~/Dow/jdk-21/C/H/bin  ./jmap
            -histo:live,file=histo5.data 1672</b></div>
        <div>
          <div style="background-color:rgb(30,31,34);color:rgb(188,190,196)">
            <pre style="font-family:"JetBrains Mono",monospace;font-size:9.8pt">Exception in thread <span style="color:rgb(106,171,115)">"main" </span>com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file /var/folders/k4/j5wzcbnd3m96s5lmqw_8lh8r0000gn/T/.java_pid1672: target process <span style="color:rgb(42,172,184)">1672 </span>doesn<span style="color:rgb(106,171,115)">'t respond within 10500ms or HotSpot VM not loaded
</span><span style="color:rgb(106,171,115)">    </span>at jdk.attach/sun.tools.attach.VirtualMachineImpl.<init>(VirtualMachineImpl.java:<span style="color:rgb(42,172,184)">95</span>)
    at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:<span style="color:rgb(42,172,184)">58</span>)
    at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:<span style="color:rgb(42,172,184)">207</span>)
    at jdk.jcmd/sun.tools.jmap.JMap.executeCommandForPid(JMap.java:<span style="color:rgb(42,172,184)">127</span>)
    at jdk.jcmd/sun.tools.jmap.JMap.histo(JMap.java:<span style="color:rgb(42,172,184)">199</span>)
    at jdk.jcmd/sun.tools.jmap.JMap.main(JMap.java:<span style="color:rgb(42,172,184)">112</span>)</pre>
          </div>
        </div>
        <div><br>
        </div>
        <div>Several tests:</div>
        <div>1. The above code runs fine on windows and macos, and the
          process could be accessed by jconsole and jmap on windows,
          only fail on macos</div>
        <div>2. The problem could be solved by adding VM options, for
          jconsole usable, add <span style="font-family:"JetBrains
Mono",monospace;font-size:9.8pt;background-color:rgb(30,31,34);color:rgb(188,190,196)">-Dcom.sun.management.jmxremote</span> for
          jmap usable add <span style="font-family:"JetBrains
Mono",monospace;font-size:9.8pt;background-color:rgb(30,31,34);color:rgb(188,190,196)">-XX:+StartAttachListener</span> ,
          if there is no <b>SymbolLookup.libraryLookup</b>(), then
          jconsole and jmap would work well without these two arguments</div>
        <div><br>
        </div>
        <div>So, I guess there must be some internal logic that blocks
          the jconsole and jmap from entering java program inside <b>SymbolLookup.libraryLookup</b>(),
          please correct me if I am wrong</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
    </blockquote>
  </body>
</html>