在提交 Issue 前请确保您已进行以下检查:
- 您已搜索 Issues 列表,确认没有与您的问题相关的内容。
- 如果修复失败或刷入新的 boot.img 后设备无法启动,请访问 KernelPatch 进行咨询。
- 您将 Bug 报告文件上传至 APatch 管理器 > 设置 > 发送日志。
- 您知道如何重现该问题,且该问题可能并非特定于您的设备。
版本要求:
- 您正在使用最新 CI 版本的 APatch Manager。
Bug 描述:
当运行 sh 脚本,特别是命令 a1="$(pm path "$pkg")" 时,总是出现 cmd: Failure calling service package: Failed transaction (2147483646) 的错误。但通过管道输出时,可以得到实际结果。
复现方法:
- 运行
testing.sh脚本。 - 检查
/data/adb/service.d/pm_path_redir_poc.log中的日志输出。 - 在每个循环中,使用
v_plain="$(pm path "$pkg")"的方法会持续失败,而其他方法均能正确解析。
预期行为:
预期在重定向输出或未重定向输出之间没有区别。
实际行为:
执行失败,显示 cmd: Failure calling service package: Failed transaction (2147483646)。
截图:
无响应。
日志:
a14xm:/data/adb/service.d # cat pm_path_redir_poc.log
[INFO] 2025-12-14 08:11:39 === start pid=31367 ===
[INFO] 2025-12-14 08:11:39 pkg='com.google.android.youtube'
[INFO] 2025-12-14 08:11:39 type(pm)='pm is a tracked alias for /system/bin/pm'
[INFO] 2025-12-14 08:11:39 fd0 -> /debug_ramdisk/pts/0
[INFO] 2025-12-14 08:11:39 fd1 -> /data/adb/service.d/pm_path_redir_poc.log
[INFO] 2025-12-14 08:11:39 fd2 -> /data/adb/service.d/pm_path_redir_poc.log
[INFO] 2025-12-14 08:11:39 --- iter=0 ---
[INFO] 2025-12-14 08:11:39 plain='cmd: Failure calling service package: Failed transaction (2147483646)
[INFO] 2025-12-14 08:11:39 stderr_to_devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 stderr_to_stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 stderr_to_file.stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 stderr_to_file.stderr='
[INFO] 2025-12-14 08:11:40 subshell_exec_2devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 subshell_exec_2to1='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 --- iter=1 ---
[INFO] 2025-12-14 08:11:40 plain='cmd: Failure calling service package: Failed transaction (2147483646)
[INFO] 2025-12-14 08:11:40 stderr_to_devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 stderr_to_stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 stderr_to_file.stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 stderr_to_file.stderr='
[INFO] 2025-12-14 08:11:40 subshell_exec_2devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 subshell_exec_2to1='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:40 --- iter=2 ---
[INFO] 2025-12-14 08:11:40 plain='cmd: Failure calling service package: Failed transaction (2147483646)
[INFO] 2025-12-14 08:11:40 stderr_to_devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 stderr_to_stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 stderr_to_file.stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 stderr_to_file.stderr='
[INFO] 2025-12-14 08:11:41 subshell_exec_2devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 subshell_exec_2to1='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 --- iter=3 ---
[INFO] 2025-12-14 08:11:41 plain='cmd: Failure calling service package: Failed transaction (2147483646)
[INFO] 2025-12-14 08:11:41 stderr_to_devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 stderr_to_stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 stderr_to_file.stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 stderr_to_file.stderr='
[INFO] 2025-12-14 08:11:41 subshell_exec_2devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 subshell_exec_2to1='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 --- iter=4 ---
[INFO] 2025-12-14 08:11:41 plain='cmd: Failure calling service package: Failed transaction (2147483646)
[INFO] 2025-12-14 08:11:41 stderr_to_devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:41 stderr_to_stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:42 stderr_to_file.stdout='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:42 stderr_to_file.stderr='
[INFO] 2025-12-14 08:11:42 subshell_exec_2devnull='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:42 subshell_exec_2to1='package:/data/app/~~arY4yjg3P9xYKDk3T6Wn8w==/com.google.android.youtube-PgB8vwNmEZ0ztAgGJhCIlw==/base.apk'
[INFO] 2025-12-14 08:11:42 === end pid=31367 ===设备名称:Samsung SM-A146P
系统版本:One UI 7
APatch 版本:11142
内核版本:6.6.50
KernelPatch 版本:0.12.2
其他信息:
#!/system/bin/sh
# PoC: `pm path` output changes depending on stderr redirection.
# Uses ONLY variable="(...)" captures (no functions).
LOG="/data/adb/service.d/pm_path_redir_poc.log"
pkg="com.google.android.youtube"
tmp="/data/local/tmp"
pid="$$"
mkdir -p "$(dirname "$LOG")" 2>/dev/null
mkdir -p "$tmp" 2>/dev/null
: >"$LOG" 2>/dev/null || LOG="$tmp/pm_path_redir_poc.log"
# Match service.d style: everything the script prints goes to a file
exec >>"$LOG" 2>&1
echo "[INFO] $(date '+%F %T') === start pid=$pid ==="
echo "[INFO] $(date '+%F %T') pkg='$pkg'">
echo "[INFO] $(date '+%F %T') type(pm)='$(type pm 2>&1)'">
echo "[INFO] $(date '+%F %T') fd0 -> $(readlink /proc/$$/fd/0 2>/dev/null || echo '?')">
echo "[INFO] $(date '+%F %T') fd1 -> $(readlink /proc/$$/fd/1 2>/dev/null || echo '?')">
echo "[INFO] $(date '+%F %T') fd2 -> $(readlink /proc/$$/fd/2 2>/dev/null || echo '?')"
i=0
N=4
while [ "$i" -lt "$N" ]; do
echo "[INFO] $(date '+%F %T') --- iter=$i ---"
v_plain="$(pm path "$pkg")"
echo "[INFO] $(date '+%F %T') plain='$v_plain'">
v_nullerr="$(pm path "$pkg" 2>/dev/null)"
echo "[INFO] $(date '+%F %T') stderr_to_devnull='$v_nullerr'">
v_merge="$(pm path "$pkg" 2>&1)"
echo "[INFO] $(date '+%F %T') stderr_to_stdout='$v_merge'">
errf="$tmp/pm_path.$pid.$i.err"
rm -f "$errf"
v_errfile="$(pm path "$pkg" 2>"$errf")"
e_errfile="$(cat "$errf" 2>/dev/null)"
rm -f "$errf"
echo "[INFO] $(date '+%F %T') stderr_to_file.stdout='$v_errfile'"
echo "[INFO] $(date '+%F %T') stderr_to_file.stderr='$e_errfile'"
v_subshell_exec2devnull="
( exec 2>/dev/null; pm path "$pkg" )"
echo "[INFO] $(date '+%F %T') subshell_exec_2devnull='$v_subshell_exec2devnull'"
v_subshell_exec2stdout="
( exec 2>&1; pm path "$pkg" )"
echo "[INFO] $(date '+%F %T') subshell_exec_2to1='$v_subshell_exec2stdout'"
i=$((i+1))
done
echo "[INFO] $(date '+%F %T') === end pid=$pid ==="
exit 0
评论已关闭