为什么dlopen在两个不同的调用中为同一共享库返回两个不同的句柄?

问题描述

在我们的应用程序中,其源代码是如此之大,以至于我无法确切知道正在发生什么,在logcat日志中,我看到一个dlopen()只是在其他返回不同的句柄之后才被调用。这是在相同的进程ID和相同的线程ID中发生的。

这是日志摘要

10-13 09:22:55.582 29607 29673 I SharedLibraryLoader: loadCommonLibrary. dlopen(c++_shared,1) successful. handle=0x1aeba53028b77b77

10-13 09:22:56.395 29607 29673 I SharedLibraryLoader: loadCommonLibrary. dlopen(c++_shared,1) successful. handle=0x92f02f27fcc7e8a1

dlopen()手册页https://www.man7.org/linux/man-pages/man3/dlopen.3.html中,提到 If the same shared object is opened again with dlopen(),the same object handle is returned.

我怀疑这两个日志语句之间正在发生某些事情,导致dlopen()返回不同的地址。如果以前有人遇到过类似情况,请告诉我是什么原因导致这种行为。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)