Я могу воспроизвести это в специальной установке Debian 12 и в дистрибутиве Debian WSL2.
Я сократил это до абсолютно минимального примера без какой-либо логики, которая все еще воспроизводит это:
Код: Выделить всё
using System.Runtime.InteropServices;
namespace NativeTest
{
public class Class1
{
[UnmanagedCallersOnly(EntryPoint = "BasicTest")]
public static void BasicTest()
{
Console.WriteLine("Hello from native");
}
}
}
Код: Выделить всё
net9.0
enable
enable
True
True
True
latest
Код: Выделить всё
import java.lang.foreign.*;
import java.lang.invoke.MethodHandle;
public class Main {
public static void main(String[] args) {
try (Arena arena = Arena.ofConfined()) {
Linker linker = Linker.nativeLinker();
SymbolLookup library = SymbolLookup.libraryLookup("./NativeTest.so", arena);
MethodHandle myMethod = linker.downcallHandle(library.find("BasicTest").orElseThrow(), FunctionDescriptor.ofVoid());
myMethod.invoke();
} catch (Throwable t) {
System.out.println("Error is " + t.getMessage());
}
}
}
Код: Выделить всё
dotnet publish -r linux-x64 -c Debug
javac Main.java
java --enable-native-access=ALL-UNNAMED Main
Код: Выделить всё
Hello from native
[1] 815 segmentation fault (core dumped) java --enable-native-access=ALL-UNNAMED Main
Код: Выделить всё
# java --version
java 23.0.1 2024-10-15
Java(TM) SE Runtime Environment (build 23.0.1+11-39)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)
# dotnet --version
9.0.101
Подробнее здесь: https://stackoverflow.com/questions/793 ... alled-from