为什么在 Android/Intel 上libc
的全局变量的值environ
为零?
我有一段第三方本机代码,它无条件地取消引用environ
,如libc
. 它偶尔会在 Android Intel 设备上崩溃;上次在 Android 4.2.1 下使用 Intel Atom Z2420 的 ASUS ME371MG 平板电脑上观察到。我无法在具有相同 4.2.1 的模拟器上重现它。
有问题的代码位于共享对象 (SO) 启动代码中。根据崩溃堆栈判断,启动代码正在被调用到所述 SO 中的第一个方法调用(如从另一个 SO 执行的那样)。
我从未在 Android/ARM 系统上看到过这种崩溃。
我想知道是否可以通过environ
从调用者代码中强制设置为合理的值来解决这个问题。当多个 SO 加载到一个进程中时,它们是否共享 libc 数据?
与此有关。