代码之家  ›  专栏  ›  技术社区  ›  hiddenbit

Userfaultfd不适用于Android应用程序?

  •  0
  • hiddenbit  · 技术社区  · 2 年前

    我正在试验 userfaultfd 以及跟踪存储器访问。

    我发现 用户故障fd 最近,我决定在桌面上写一个简单的C程序来熟悉这个机制。当我让它做我想做的事情时,我ndk构建了一个Android可执行文件,并在adb shell上试用了它,我看到它按预期工作。

    然后我介绍 用户故障fd 在我想跟踪页面错误的C++库中。这个库基本上是一个Vulkan层,在桌面和Android上运行。在Android上,当执行Vulkan应用程序并启用层时,它由Android Vulkan加载程序加载。

    我的问题是,虽然桌面C++库按预期工作,但在Android上,我看到 用户故障fd 机制并没有按预期工作。故障似乎未被检测到/捕获。出错的威胁不会停止,处理程序线程也不会收到文件描述符更改的通知(两者都尝试过 poll() ALooper )。

    我错过了什么?我怀疑有一些安卓的安全原因在起作用,基本上会禁用整个机制,但我没有证据,我只是猜测。

    我觉得共享任何代码都没有任何意义,因为简单的C应用程序正在adbshell上工作,所以我认为这部分我做对了。

    我正在安卓12的Pixel 6上试用。Android版C++库使用sdk版本26和ndk版本24.0.8215888编译

    0 回复  |  直到 2 年前