为什么Google hwbinder基准测试无法在Android8.1中以用户模式编译运行?

时间:2018-07-12 07:46:59

标签: android performance performance-testing android-8.1-oreo

我正在使用Google本机代码在android 8.1中测试hwbinder的性能。这里是the link of google performance test

我选择用户模式来编译源代码。运行此测试时,没有得到有用的答复和NE错误,我看到了逻辑删除日志,这表明原因是因为客户端使用空指针获取服务。但是,服务器还可以。我得到领事的答复。

***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.

这是墓碑日志。

...
pid: 7778, tid: 7778, name: libhwbinder_ben  >>> libhwbinder_benchmark64 <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
Cause: null pointer dereference
...
backtrace:
    #00 pc 0000000000005b1c  /system/bin/libhwbinder_benchmark64 (BM_sendVec_binderize(benchmark::State&)+80)
    #01 pc 00000000000083c4  /system/bin/libhwbinder_benchmark64 (benchmark::internal::(anonymous namespace)::RunInThread(benchmark::internal::Benchmark::Instance const*, unsigned long, int, benchmark::internal::ThreadManager*)+108)
    #02 pc 0000000000007004  /system/bin/libhwbinder_benchmark64 (benchmark::RunSpecifiedBenchmarks(benchmark::BenchmarkReporter*, benchmark::BenchmarkReporter*)+2588)
    #03 pc 0000000000005a60  /system/bin/libhwbinder_benchmark64 (main+792)
    #04 pc 00000000000c0a94  /system/lib64/libc.so (__libc_init+88)
    #05 pc 00000000000056a8  /system/bin/libhwbinder_benchmark64 (_start_main+80)

然后,我选择eng模式来编译相同的代码。我成功了,并得到了与Google性能测试相同的结果。

我发现密钥是/system/lib64/android.hardware.tests.libhwbinder@1.0.so。如果我以eng模式推送此文件,则编译成功。如果我以用户模式编译此文件,则会失败。

为什么我不能在用户模式下运行此测试?具有两种编译模式的.so文件之间有什么区别?

我用谷歌搜索这个问题。但是,关于hidl和hwbinder的事情太少了。

0 个答案:

没有答案