19、APEX:开放概率程序分析器的工作原理

APEX:开放概率程序分析器的工作原理

1. 引言

在当今的软件开发和验证领域,随机性和不确定性是不可避免的因素。无论是处理随机算法还是分析安全协议中的匿名性,概率性程序的验证都显得尤为重要。传统的模型检查方法虽然强大,但在面对概率性程序时却显得力不从心。为了应对这一挑战,研究人员开发了多种工具和技术,其中APEX(开放概率程序分析器)以其独特的功能和高效的表现脱颖而出。

2. APEX的工作原理

APEX是一个用于分析开放概率性程序的工具,即那些变量甚至函数可以留待未指定的程序。APEX将程序转换为一个自动机,该自动机捕获了在所有未指定组件实例化下的程序概率行为。转换是组合性的,并且有效地利用了状态减少技术。然后,APEX可以进一步分析所产生的自动机;特别是,它可以检查两个自动机是否等价,这等价于在所有环境下相应程序的等价性。通过这种方式,APEX可以验证随机协议和其他开放程序的广泛匿名性和终止性属性,有时比竞争的最先进方法快上指数级。

2.1 自动机构造

自动机构造器使用游戏语义构建了一个概率自动机。该构造过程是在程序的抽象语法树(AST)层面上进行的。树的叶子节点对应变量和常量,而内部节点对应语言的语义操作,如算术表达式、概率选择、条件语句、命令的顺序组合以及循环。APEX为每个AST节点标记了一个捕获其语义的自动机,通过从下到上进行,并组合子节点的自动机。最终,为AST的根节点计算出的自动机给出了整个程序的语义。

2.2 等价性检查

为了检查输入程序的等价性,APEX只需检查相应的概率自动机是否语言等价。如果它们不是等价的,APEX提供了一个反例词,它对应于在两个程序中以不同概率执行的运行。APEX使用高效的基于线性代数的算法进行等价性检查和反例提取。

graph TD;
    A[程序] --> B[抽象语法树];
    B --> C[子节点自动机];
    C --> D[根节点自动机];
    D --> E[概率自动机];
    E --> F[等价性检查];
    F --> G[反例词];

3. APEX的应用场景

APEX适用于多种应用场景,特别是在随机算法和安全协议的分析中表现出色。以下是几个典型的应用场景:

3.1 随机算法分析

随机算法的验证是一个复杂的任务,因为它们的行为不仅取决于输入,还取决于随机事件的发生。APEX通过将程序转换为概率自动机,能够捕捉到随机事件的影响,从而提供更加准确的验证结果。

3.2 安全协议分析

在安全协议中,匿名性是一个重要的属性。APEX可以通过证明秘密信息不可外部观察来建立匿名性。这使得它成为分析安全协议的理想工具。

应用场景 描述
随机算法分析 捕捉随机事件的影响,提供准确的验证结果
安全协议分析 通过证明秘密信息不可外部观察来建立匿名性

4. APEX的技术特点

APEX之所以能够在概率程序分析中表现出色,得益于其独特的技术特点。以下是一些关键的技术特点:

4.1 组合性转换

APEX的转换过程是组合性的,这意味着它可以从程序的抽象语法树逐层构建自动机。这种组合性不仅提高了转换的效率,还使得生成的自动机更加紧凑和易于分析。

4.2 状态减少技术

为了减少自动机的状态空间,APEX采用了多种状态减少技术。这些技术可以显著降低自动机的复杂度,从而加快分析速度。

4.3 高效的等价性检查

APEX使用高效的基于线性代数的算法进行等价性检查。这些算法可以在多项式时间内完成复杂的等价性检查任务,大大提高了验证的效率。

4.4 变量绑定

变量绑定是APEX的一个重要特性。它通过可达性分析来绑定变量,从而减少了不必要的状态。具体来说,APEX通过枚举可达的状态值对来计算自动机,而不是简单地复制所有可能的状态值对。这使得生成的自动机更加紧凑和高效。

graph TD;
    A[变量绑定] --> B[可达性分析];
    B --> C[可达状态值对];
    C --> D[减少状态空间];

5. APEX与其他工具的比较

与其他概率模型检查工具相比,APEX在多个方面具有明显的优势。以下是与一些主流工具的比较:

5.1 与PRISM的比较

PRISM是领先的概率模型检查器,拥有大量的案例研究。然而,PRISM在处理匿名性问题时不如APEX方便。例如,在验证就餐密码学家协议时,PRISM需要考虑所有可能的可见行为,并证明每个行为发生的可能性对于支付者来说是相同的。这导致了指数级庞大的规格说明,相应地,模型检查任务变得难以处理。而APEX可以通过等价性检查快速验证协议的匿名性。

5.2 与Mage的比较

Mage是一个基于游戏语义的软件验证工具,适用于非概率性程序。据我们所知,APEX是唯一一个基于游戏语义的随机程序工具。这使得APEX在处理概率性程序时具有独特的优势。

工具 适用范围 特点
PRISM 概率模型检查 处理匿名性问题复杂
Mage 非概率性程序 不适用于概率性程序
APEX 概率性程序 快速验证匿名性,组合性转换

请继续阅读下一篇内容,了解更多关于APEX的技术细节和实际应用案例。

6. APEX的技术细节

6.1 变量绑定与可达性分析

变量绑定是APEX的一个关键技术点,它通过可达性分析来绑定变量,从而减少了不必要的状态。具体来说,APEX通过枚举可达的状态值对来计算自动机,而不是简单地复制所有可能的状态值对。这使得生成的自动机更加紧凑和高效。

流程说明
  1. 初始化 :为每个变量创建一个自动机,用于存储和响应读写请求。
  2. 可达性分析 :通过分析程序的控制流,确定变量在不同程序位置可能取到的值。
  3. 状态值对枚举 :仅枚举可达的状态值对,避免生成不必要的状态。
  4. 状态空间压缩 :移除不可达状态,减少自动机的复杂度。

6.2 高效的线性代数算法

为了进行等价性检查,APEX使用高效的线性代数算法。这些算法可以在多项式时间内完成复杂的等价性检查任务,大大提高了验证的效率。以下是线性代数算法的具体步骤:

  1. 矩阵表示 :将概率自动机的状态转移表示为矩阵。
  2. 特征值分解 :对矩阵进行特征值分解,提取关键信息。
  3. 等价性判定 :通过比较矩阵的特征值,判断两个自动机是否等价。

6.3 概率自动机的优化

为了提高概率自动机的性能,APEX采用了多种优化技术。这些技术可以显著减少自动机的状态空间,从而加快分析速度。

优化技术列表
  • 状态合并 :合并等价状态,减少冗余。
  • 路径剪枝 :剪除不可能执行的路径,减少状态空间。
  • 概率阈值 :忽略低概率路径,专注于高概率路径。

7. 实际应用案例

7.1 随机密码学家协议

随机密码学家协议(Dining Cryptographers Protocol)是一个经典的匿名性问题。传统的模型检查工具如PRISM在处理此类问题时面临巨大的状态空间爆炸问题。而APEX通过等价性检查,能够在短时间内验证协议的匿名性。

验证流程
  1. 模型构建 :使用APEX构建协议的概率自动机。
  2. 等价性检查 :检查不同支付者情况下协议的等价性。
  3. 结果输出 :输出验证结果,确认协议的匿名性。

7.2 随机算法性能分析

随机算法的性能分析是一个复杂的任务,因为它们的行为不仅取决于输入,还取决于随机事件的发生。APEX通过将程序转换为概率自动机,能够捕捉到随机事件的影响,从而提供更加准确的性能分析。

性能分析流程
  1. 模型构建 :将随机算法转换为概率自动机。
  2. 路径遍历 :遍历所有可能的执行路径,记录每条路径的概率。
  3. 性能指标计算 :计算平均执行时间、最大执行时间等性能指标。

7.3 概率实时系统的验证

概率实时系统(Probabilistic Real-Time Systems)在工业和科研领域有着广泛的应用。APEX通过组合性转换和高效的等价性检查,能够快速验证此类系统的正确性。

验证流程
  1. 模型构建 :将概率实时系统转换为概率自动机。
  2. 时间约束检查 :检查系统是否满足给定的时间约束。
  3. 结果输出 :输出验证结果,确认系统的行为是否符合预期。
graph TD;
    A[概率实时系统] --> B[模型构建];
    B --> C[时间约束检查];
    C --> D[结果输出];

8. 结论

通过以上介绍,可以看出APEX在概率程序分析中具有独特的优势。它不仅能够高效地处理随机算法和安全协议的验证,还能快速验证概率实时系统的正确性。APEX的成功应用离不开其独特的技术特点,如组合性转换、状态减少技术和高效的等价性检查算法。随着概率性程序在各个领域的广泛应用,APEX必将在未来的软件验证中发挥更大的作用。

技术特点 描述
组合性转换 提高转换效率,生成紧凑自动机
状态减少技术 减少自动机的复杂度,加快分析速度
高效的等价性检查 使用线性代数算法,快速完成等价性检查
变量绑定 通过可达性分析,减少不必要的状态

APEX的独特技术和广泛的应用场景使其成为概率程序分析领域的有力工具。无论是在学术研究还是工业应用中,APEX都展现出了强大的潜力和广阔的应用前景。

Line 756: 09-04 15:51:07.495407 656 671 I keystore2: system/security/keystore2/src/maintenance.rs:343 - apex modules += com.android.adbd version 360527520 Line 909: 09-04 15:51:07.885328 813 813 D aconfigd_mainline: aconfigd_rust::aconfigd: start initialize com.android.adbd flags Line 1059: 09-04 15:51:08.065497 817 817 D vold_prepare_subdirs: Setting up mode 771 uid 0 gid 1000 context u:object_r:apex_module_data_file:s0 on path: /data/misc_de/0/apexdata/com.android.adbd Line 23508: 09-04 15:51:18.085916 1754 1754 D CompatConfig: No directory /apex/com.android.adbd/etc/compatconfig, skipping Line 25057: 09-04 15:51:19.382368 1754 1754 W PackageManager: No package known for package restrictions com.google.android.adbd Line 25417: 09-04 15:51:19.503966 1754 1754 D PackageManager: Directories scanned as system partitions: [/system:0, /vendor:524288, /odm:4194304, /oem:262144, /product:1048576, /system_ext:2097152, /my_product/non_overlay:1048576, /my_stock/non_overlay:1048576, /mnt/opex/com.oplus.odmf@16000005:2097152, /mnt/opex/com.oplus.moduleservices@15000014:2097152, /mnt/opex/com.oplus.fancyIconLoader@1000000:2097152, /mnt/opex/com.oplus.NetworkAssistSys@16000021:2097152, /mnt/opex/com.oplus.CustCore@16000001:2097152, /my_company:1048576, /my_carrier:1048576, /my_bigball:1048576, /my_product/cust/IN:1048576, /apex/com.android.rkpd:41943040, /apex/com.android.tethering:41943040, /apex/com.android.crashrecovery:41943040, /apex/com.android.profiling:41943040, /apex/com.android.healthfitness:41943040, /apex/com.android.mediaprovider:41943040, /apex/com.android.virt:41943040, /apex/com.android.os.statsd:41943040, /apex/com.android.wifi:41943040, /apex/com.android.devicelock:41943040, /apex/com.android.ipsec:41943040, /apex/com.android.extservices:41943040, /apex/com.android.uprobestats:41943040, /apex/com.android.art:41943040, /apex/com.android.vndk.v33:44040192, /apex/com.android.resolv:41943040, /apex/com.android.cellbroadcast:41943040, /apex/com.android.sdkext:41943040, /apex/com.android.adbd:41943040, /apex/com.android.adservices:41943040, /apex/com.android.i18n:41943040, /apex/com.android.conscrypt:41943040, /apex/com.android.neuralnetworks:41943040, /apex/com.android.runtime:41943040, /apex/com.android.ondevicepersonalization:41943040, /apex/com.android.apex.cts.shim:41943040, /apex/com.android.media.swcodec:41943040, /apex/com.android.uwb:41943040, /apex/com.android.compos:44040192, /apex/com.android.tzdata:41943040, /apex/com.android.permission:41943040, /apex/com.android.configinfrastructure:41943040, /apex/com.android.scheduling:41943040, /apex/com.android.media:41943040, /apex/com.android.appsearch:41943040] Line 25450: 09-04 15:51:19.561963 1754 1754 I PackageManager: /data/apex/decompressed/com.android.adbd@360527520.decompressed.apex changed; collecting certs Line 25451: 09-04 15:51:19.563661 1754 1754 E PackageManagerServiceUtilsExtImpl: Fix up user restrict data of pkg: com.google.android.adbd Line 26299: 09-04 15:51:20.981292 1754 1754 D PackageManager: No files in app dir /apex/com.android.adbd/priv-app Line 26300: 09-04 15:51:20.981371 1754 1754 D PackageManager: No files in app dir /apex/com.android.adbd/app Line 27643: 09-04 15:51:22.158920 1754 1754 D OverlayManager: -> Updating overlay: target=com.google.android.adbd overlays=[OverlayPaths { resourceDirs = [/product/overlay/NavigationBarModeGestural/NavigationBarModeGesturalOverlay.apk], overlayPaths = [/product/overlay/NavigationBarModeGestural/NavigationBarModeGesturalOverlay.apk, /data/resource-cache/com.android.systemui-neutral-siVV.frro, /data/resource-cache/com.android.systemui-accent-tejr.frro, /data/resource-cache/com.android.systemui-dynamic-ysNR.frro] }] userId=0 Line 36832: 09-04 15:51:24.145889 1754 1976 I UsbDeviceManager: failed to write to /sys/class/android_usb/android0/f_rndis/ethaddr Line 36833: 09-04 15:51:24.146098 1754 1976 D UsbPortManager: Querying USB Gadget HAL version Line 36856: 09-04 15:51:24.151901 1754 1976 I UsbPortManager: USB Gadget HAL HIDL present Line 36867: 09-04 15:51:24.154788 1754 1928 I UsbDeviceManager: Usb gadget hal service started android.hardware.usb.gadget@1.0::IUsbGadget default Line 36873: 09-04 15:51:24.156186 1754 1976 D UsbDeviceManager: getInstance done Line 36893: 09-04 15:51:24.161777 1754 1875 I UsbDeviceManager: USB Gadget HAL HIDL version: 11 Line 36896: 09-04 15:51:24.162098 1754 1976 I UsbDeviceManager: mResetUsbGadgetDisableDebounce:false connected:1configured:1 Line 36897: 09-04 15:51:24.162260 1754 1875 I UsbDeviceManager: handleMessage MSG_UPDATE_STATE mConnected:true mConfigured:true Line 36902: 09-04 15:51:24.163208 1754 1875 I UsbDeviceManager: processing MSG_GET_CURRENT_USB_FUNCTIONS Line 36904: 09-04 15:51:24.163264 1754 1875 I UsbDeviceManager: updating mCurrentFunctions Line 36905: 09-04 15:51:24.163293 1754 1875 I UsbDeviceManager: mCurrentFunctions:4applied:1 Line 36908: 09-04 15:51:24.163397 1754 1875 D UsbDeviceManager: UsbBootInfo: [mSystemReady: false, mBootCompleted: false, mConnected: true, mConfigured: true, mCurrentUsbFunctionsReceived: true, mPendingBootBroadcast: true, mScreenLocked: true, screenUnlockedFunctions: mtp, isAdbEnabled: false] Line 36931: 09-04 15:51:24.166970 1754 1976 D UsbPortManager: Querying USB HAL version Line 36939: 09-04 15:51:24.168834 1754 1976 I UsbPortManager: USB HAL AIDL present Line 36947: 09-04 15:51:24.171554 1754 1976 D UsbPortManager: getInstance done Line 36962: 09-04 15:51:24.173683 1754 1966 I UsbPortManager: all: opID:1 successful Line 53160: 09-04 15:51:26.574846 1754 1963 D UsbDeviceManager: systemReady Line 53178: 09-04 15:51:26.579173 1754 1875 D UsbDeviceManager: UsbBootInfo: [mSystemReady: true, mBootCompleted: false, mConnected: true, mConfigured: true, mCurrentUsbFunctionsReceived: true, mPendingBootBroadcast: true, mScreenLocked: true, screenUnlockedFunctions: mtp, isAdbEnabled: true] Line 53187: 09-04 15:51:26.580817 1754 1843 I UsbPortManager: AIDL UsbDataStatus:1 Line 53188: 09-04 15:51:26.580934 1754 1843 I UsbPortManager: ClientCallback AIDL V1: port0 Line 53197: 09-04 15:51:26.582173 1754 1875 I UsbPortManager: USB port added: port=UsbPort{id=port0, supportedModes=dual, supportedContaminantProtectionModes=0, supportsEnableContaminantPresenceProtection=false, supportsEnableContaminantPresenceDetection=false, supportsComplianceWarnings=false, status=UsbPortStatus{connected=true, currentMode=ufp, currentPowerRole=sink, currentDataRole=device, supportedRoleCombinations=[source:host, sink:device], contaminantDetectionStatus=0, contaminantProtectionStatus=0, usbDataStatus=enabled, isPowerTransferLimited=false, powerBrickConnectionStatus=unknown, complianceWarnings=[], plugState=0, displayPortAltModeInfo=null}, canChangeMode=true, canChangePowerRole=false, canChangeDataRole=false, connectedAtMillis=24070, lastConnectDurationMillis=0 Line 53253: 09-04 15:51:26.591677 1754 1843 I UsbPortManager: all: opID:1 successful Line 69468: 09-04 15:51:29.851905 1754 1878 V UsbDeviceManager: onKeyguardStateChanged: isShowing:false secure:false user:0 Line 75381: 09-04 15:51:31.033122 1754 1754 I UsbDeviceManager: updateHostState UsbPort{id=port0, supportedModes=dual, supportedContaminantProtectionModes=0, supportsEnableContaminantPresenceProtection=false, supportsEnableContaminantPresenceDetection=false, supportsComplianceWarnings=false status=UsbPortStatus{connected=true, currentMode=ufp, currentPowerRole=sink, currentDataRole=device, supportedRoleCombinations=[source:host, sink:device], contaminantDetectionStatus=0, contaminantProtectionStatus=0, usbDataStatus=enabled, isPowerTransferLimited=false, powerBrickConnectionStatus=unknown, complianceWarnings=[], plugState=0, displayPortAltModeInfo=null} Line 88057: 09-04 15:51:33.353751 1754 1878 D UsbDeviceManager: boot completed Line 88169: 09-04 15:51:33.380805 1754 1875 D UsbDeviceManager: MSG_BOOT_COMPLETED Line 88170: 09-04 15:51:33.380953 1754 1875 D UsbDeviceManager: UsbBootInfo: [mSystemReady: true, mBootCompleted: true, mConnected: true, mConfigured: true, mCurrentUsbFunctionsReceived: true, mPendingBootBroadcast: true, mScreenLocked: false, screenUnlockedFunctions: mtp, isAdbEnabled: true] Line 88171: 09-04 15:51:33.380990 1754 1875 D UsbDeviceManager: finishBoot all flags true Line 88173: 09-04 15:51:33.381324 1754 1875 D UsbDeviceManager: broadcasting Intent { act=android.hardware.usb.action.USB_STATE flg=0x31100000 (has extras) } extras: Bundle[{host_connected=false, connected=true, unlocked=true, adb=true, mtp=true, configured=true}] Line 88207: 09-04 15:51:33.391465 1754 1875 D UsbDeviceManager: UsbFunc: [functions: mtp, forceRestart: false, mCurrentFunctionsApplied: true, mCurrentFunctions: mtp] Line 88208: 09-04 15:51:33.391681 1754 1875 D UsbDeviceManager: updateMtpFunction , mtpEnabled: true, ptpEnabled: false, mIsMtpServiceBound: false Line 88209: 09-04 15:51:33.391763 1754 1875 D UsbDeviceManager: Binding to MtpService Line 88440: 09-04 15:51:33.433186 1754 1875 D UsbDeviceManager: Unbinding from MtpService Line 88635: 09-04 15:51:33.450666 1754 1875 E UsbDeviceManager: Binding to MtpService failed Line 88664: 09-04 15:51:33.460049 1754 1875 W AdbDebuggingManager: Ignoring tag 'keyStore'. Not recognized. Line 88714: 09-04 15:51:33.466588 1754 1875 I AdbDebuggingManager: startAdbDebuggingThread ref=1 Line 88714: 09-04 15:51:33.466588 1754 1875 I AdbDebuggingManager: startAdbDebuggingThread ref=1 Line 88735: 09-04 15:51:33.473686 1754 3618 D AdbDebuggingManager: Entering thread Line 88736: 09-04 15:51:33.473788 1754 3618 D AdbDebuggingManager: Creating socket Line 88744: 09-04 15:51:33.474221 1754 3618 E AdbDebuggingManager: Caught an exception opening the socket: java.io.IOException: No such file or directory Line 88745: 09-04 15:51:33.474269 1754 3618 D AdbDebuggingManager: Closing socket Line 88773: 09-04 15:51:33.478547 1754 1875 D AdbDebuggingManager: adbd socket disconnected Line 88773: 09-04 15:51:33.478547 1754 1875 D AdbDebuggingManager: adbd socket disconnected Line 94028: 09-04 15:51:34.205634 3688 3688 D vold_prepare_subdirs: Setting up mode 771 uid 0 gid 1000 context u:object_r:apex_module_data_file:s0 on path: /data/misc_ce/0/apexdata/com.android.adbd Line 94690: 09-04 15:51:34.457411 1754 3674 W PackageManager: Skipping preparing app data for com.google.android.adbd Line 95349: 09-04 15:51:34.505920 1754 3618 D AdbDebuggingManager: Closing socket Line 95351: 09-04 15:51:34.506252 1754 1875 D AdbDebuggingManager: adbd socket disconnected Line 95351: 09-04 15:51:34.506252 1754 1875 D AdbDebuggingManager: adbd socket disconnected Line 95870: 09-04 15:51:34.565537 1754 1895 V UsbDeviceManager: onKeyguardStateChanged: isShowing:false secure:false user:0 Line 99064: 09-04 15:51:35.506385 1754 3618 D AdbDebuggingManager: Creating socket Line 99065: 09-04 15:51:35.508371 1754 3618 E AdbDebuggingManager: Caught an exception opening the socket: java.io.IOException: No such file or directory Line 99066: 09-04 15:51:35.508403 1754 3618 D AdbDebuggingManager: Closing socket解析log
09-05
11-04 16:26:21.880934 349 349 F DEBUG : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr -------- 11-04 16:26:21.880962 349 349 F DEBUG : Abort message: 'TimeCheck timeout for IAudioPolicyService::registerPolicyMixes scheduled 16:26:07.600 on thread 13258 Timeout ms 13000.00 (8000.00 + 5000.00) elapsed steady ms 13000.6270 elapsed system ms 13000.6289 HAL pids [ 2047 ] now 16:26:21.636 secondChanceCount 65 analysis [ ] timeout [ { IAudioPolicyService::registerPolicyMixes scheduled 16:26:07.600 deadline :15.600 tid 13258 } ] pending [ { IAudioPolicyService::setForceUse scheduled 16:26:07.928 deadline :15.928 tid 8207 } { IAudioPolicyService::isStreamActive scheduled 16:26:08.236 deadline :16.236 tid 7206 } { IAudioPolicyService::getDevicesForAttributes scheduled 16:26:08.345 deadline :16.345 tid 11663 } { IAudioPolicyService::isStreamActive scheduled 16:26:09.455 deadline :17.455 tid 2315 } { IAudioPolicyService::setA11yServicesUids scheduled 16:26:09.496 deadline :17.496 tid 16797 } { IAudioPolicyService::isStreamActive scheduled 16:26:11.082 deadline :19.082 tid 29854 } { IAudioPolicyService::listAudioProductStrategies scheduled 16:26:11.654 deadline :19.654 tid 641 } { IAudioPolicyService::isStreamActive scheduled 16:26:12.246 deadline :20.246 tid 9091 } { IAudioPolicyService::isStreamActive scheduled 16:26:16.038 deadline :24.038 tid 2451 } { StreamOutHalHidl::updateSourceMetadata scheduled 16:26:19.597 deadline tid 3677 } { IAudioPolicyService::109 scheduled 16:26:20.290 deadline :28.290 tid 8708 } ] retired [ { DeviceHalHidl::getParameters scheduled 16:26:20.538 deadline tid 16630 } { DeviceHalHidl::getParameters scheduled 16:26:20.539 deadline tid 16630 } { DeviceHalHidl::getParameters scheduled 16:26:20.539 deadline tid 16630 } { IAudioFlinger::getParameters scheduled 16:26:20.537 deadline :28.537 tid 16630 } ] timeout(13258) callstack [ #00 pc 00000000000aff64 /apex/com.android.runtime/lib64/bionic/libc.so (syscall+36) (BuildId: 729ca2eb4fb5ce36e0058b2742c0e097) #01 pc 000000000008b75c /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex(void volatile*, bool, int, bool, timespec const*)+148) (BuildId: 729ca2eb4fb5ce36e0058b2742c0e097) #02 pc 00000000000996bc /apex/com.android.runtime/lib64/bionic/libc.so (pthread_cond_clockwait+180) (BuildId: 729ca2eb4fb5ce36e0058b2742c0e097) #03 pc 00000000000778ac /system/lib64/libaudiopolicyservice.so (std::__1::cv_status std::__1::condition_variable::wait_for<long long, std::__1::ratio<1l, 1000000000l>>(std::__1::unique_lock<std::__1::mutex>&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>> const&)+192) (BuildId: bb529c12fed0ad894e0fad271ff7c0ce) #04 pc 0000000000077528 /system/lib64/libaudiopolicyservice.so (std::__1::cv_status android::audio_utils::condition_variable::wait_for<android::audio_utils::mutex_impl<android::audio_utils::AudioMutexAttributes>, long long, std::__1::ratio<1l, 1000000000l>>(android::audio_utils::unique_lock<android::audio_utils::mutex_impl<android::audio_utils::AudioMutexAttributes>>&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>> const&, int)+80) (BuildId: bb529c12fed0ad894e0fad271ff7c0ce) #05 pc 0000000000075d38 /system/lib64/libaudiopolicyservice.so (android::AudioPolicyService::AudioCommandThread::sendCommand(android::sp<android::AudioPolicyService::AudioCommandThread::AudioCommand>&, int)+316) (BuildId: bb529c12fed0ad894e0fad271ff7c0ce) #06 pc 000000000008bfc8 /system/lib64/libaudiopolicyservice.so (android::AudioPolicyService::AudioCommandThread::createAudioPatchCommand(audio_patch const*, int*, int)+428) (BuildId: bb529c12fed0ad894e0fad271ff7c0ce) #07 pc 00000000000440c0 /system/lib64/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::installPatch(char const*, long, int*, audio_patch const*, int, unsigned int, android::sp<android::AudioPatch>*, bool)+236) (BuildId: 12aca022714682ed7eba9623053ec28e) 11-04 16:26:21.880969 349 349 F DEBUG : #08 pc 0000000000043e78 /system/lib64/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::installPatch(char const*, int*, android::AudioIODescriptorInterface*, audio_patch const*, int, bool)+356) (BuildId: 12aca022714682ed7eba9623053ec28e) #09 pc 0000000000038cc0 /system/lib64/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::setOutputDevices(char const*, android::sp<android::SwAudioOutputDescriptor> const&, android::DeviceVector const&, bool, int, int*, bool, bool, bool, bool)+9588) (BuildId: 12aca022714682ed7eba9623053ec28e) #10 pc 000000000002ef14 /system/lib64/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::setDeviceConnectionStateInt(android::sp<android::DeviceDescriptor> const&, audio_policy_dev_state_t, bool)+5948) (BuildId: 12aca022714682ed7eba9623053ec28e) #11 pc 000000000002d0f0 /system/lib64/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::setDeviceConnectionStateInt(audio_policy_dev_state_t, android::media::audio::common::AudioPort const&, audio_format_t, bool)+688) (BuildId: 12aca022714682ed7eba9623053ec28e) #12 pc 00000000000656bc /system/lib64/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::setDeviceConnectionStateInt(audio_devices_t, audio_policy_dev_state_t, char const*, char const*, audio_format_t, bool)+548) (BuildId: 12aca022714682ed7eba9623053ec28e) #13 pc 000000000008d1a8 /system/lib64/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::unregisterPolicyMixes(android::Vector<android::AudioMix>)+1008) (BuildId: 12aca022714682ed7eba9623053ec28e) #14 pc 000000000005d4dc /system/lib64/libaudiopolicyservice.so (android::AudioPolicyService::registerPolicyMixes(std::__1::vector<android::media::AudioMix, std::__1::allocator<android::media::AudioMix>> const&, bool)+2432) (BuildId: bb529c12fed0ad894e0fad271ff7c0ce) #15 pc 00000000000400fc /system/lib64/audiopolicy-aidl-cpp.so (android::media::BnAudioPolicyService::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+22652) (BuildId: 32e17e3b33a8b9259524807e5076cd3f) #16 pc 0000000000072cb0 /system/lib64/libaudiopolicyservice.so (android::AudioPolicyService::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+1240) (BuildId: bb529c12fed0ad894e0fad271ff7c0ce) #17 pc 000000000004d2bc /system/lib64/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+324) (BuildId: 0abb3e8891888472809ad5cc54c106d7) #18 pc 000000000004da54 /system/lib64/libbinder.so (android::IPCThreadState::executeCommand(int)+1136) (BuildId: 0abb3e8891888472809ad5cc54c106d7) #19 pc 0000000000077108 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+456) (BuildId: 0abb3e8891888472809ad5cc54c106d7) #20 pc 0000000000076ca0 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+100) (BuildId: 0abb3e8891888472809ad5cc54c106d7) #21 pc 0000000000017464 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+252) (BuildId: cd6fe1a2f106f83ac0868f825dfc8390) #22 pc 0000000000019bd0 /system/lib64/libutils.so (libutil_thread_trampoline(void*) (.__uniq.226528677032898775202282855395389835431)+24) (BuildId: cd6fe1a2f106f83ac0868f825dfc8390) #23 pc 000000000009a1ac /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+184) (BuildId: 729ca2eb4fb5ce36e0058b2742c0e097) #24 pc 000000000008c9c8 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 729ca2eb4fb5ce36e0058b2742c0e097)详细分析一下
11-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值