/proc/sysrq-trigger文件的功能
来源:互联网 发布:南京浦口星甸网络问政 编辑:程序博客网 时间:2024/06/05 19:32
立即重启计算机 echo "b" > /proc/sysrq-trigger
立即关闭计算机 echo "o" > /proc/sysrq-trigger
导出内存分配的信息 echo "m" > proc/sysrq-trigger (可以用/var/log/message查看)Outputs memory statistics to the console
导出当前CPU寄存器信息和标志位的信息 echo "p" > proc/sysrq-trigger (outputs all flags and registers to the console)
导出线程状态信息 echo "t" > proc/sysrq-trigger (outputs a list of processes to the console)
故意让系统崩溃 echo "c" > proc/sysrq-trigger (crashes the system without first unmounting file systems or syncing disks attached to the system)
立即重新挂载所有的文件系统 echo "s" > proc/sysrq-trigger (attempts to sync disks attached to the system)
立即重新挂载所有的文件系统为只读 echo "u" > proc/sysrq-trigger (attempts to unmount and remount all file systems as read-only)
此外,还有两个类似于强制注销的功能
e ---- kills all processes except init using SIGTERM
i ---- kills all processes except init using SIGKILL
Question:When I meet a phone hang issue, how to handle it? how to raise case to Qualcomm?
Answer:
For a phone hang issue, since it is not reboot, there are some possibility:
1. In kernel, there some dead lock between process, while android service also be blocked, but time interrupt and dog kick worker can still running, so phone does not reboot
2. There are deadlock happen in android userspace server, like service manager or serviceflinger
There are also 2 scenario:
1. adb shell can still work
then could login and retrive some information, like adb bugreport
As bugreport may hang if there are some android framework dead lock, so need to get some simple log first, dmesg and logcat log
After get dmesg log, try to trigger more information by sysrq interface
kernel/Documentation/sysrq.txt
show stack for all active CPU
echo l > /proc/sysrq-trigger
show hold lock
echo d > /proc/sysrq-trigger
show hrtimer
echo q > /proc/sysrq-trigger
show tasks that are in disk sleep(uninterruptable sleep), which are like blocked in mutex or hardware register access
echo w > /proc/sysrq-trigger
after trigger, get more dmesg log for each to avoid overwrite.
Then trigger a crash dump
First enable download mode in different platform has different sysfs entry to enable download mode
May one of the following
echo 1 >/sys/module/restart/parameters/download_mode
echo 1 >/sys/module/msm_restart/parameters/download_mode
echo 1 >/sys/module/msm_poweroff/parameters/download_mode
if adb bugreport done without block, then trigger crash at last
echo c> /proc/sysrq-trigger
2.no adb port enumerate or adb shell does not work
Then we need to trigger dump by long press power key or RESET_IN pin that generally connect to powerkey+volumn-
make sure s2-type is 1 warm reset, not 7 hard reset.
pon_1 is for power key, pon_3 is for RESET_IN pin
take 8994 as example, kernel/arch/arm64/boot/dts/qcom/msm-pm8994.dtsi
qcom,pon_1 {
qcom,pon-type = <0>;
qcom,pull-up = <1>;
linux,code = <116>;
qcom,support-reset = <1>;
qcom,s1-timer = <10256>;
qcom,s2-timer = <2000>;
qcom,s2-type = <1>;
};
qcom,pon_3 {
qcom,pull-up = <1>;
qcom,s1-timer = <6720>;
qcom,s2-timer = <2000>;
qcom,s2-type = <7>;
qcom,use-bark;
};
If it does not work, then try pull down PS_HOLD in 200ms.
Android常见suspend时file system sync(sys_sync())超时,导致watchdog超时问题:
frameworks/base/services/core/java/com/android/server/Watchdog.java //android op code
systemserver WDT log :
native: #00 pc 000169b8 /system/lib/libc.so (syscall+28)
native: #01 pc 0001bd79 /system/lib/libc.so (sem_wait+62)
native: #02 pc 000016ab /system/lib/libsuspend.so (???)
native: #03 pc 00000e2d /system/lib/libsuspend.so (autosuspend_disable+24)
native: #04 pc 00014ed7 /system/lib/libandroid_servers.so (???)
native: #05 pc 00087ee1 /system/framework/oat/arm/services.odex (Java_com_android_server_power_PowerManagerService_nativeSetAutoSuspend__Z+76)
at com.android.server.power.PowerManagerService.nativeSetAutoSuspend(Native method)
at com.android.server.power.PowerManagerService.setHalAutoSuspendModeLocked(PowerManagerService.java:2369)
at com.android.server.power.PowerManagerService.access$1800(PowerManagerService.java:94)
at com.android.server.power.PowerManagerService$2.onDisplayStateChange(PowerManagerService.java:2244)
kernel/kernel/power/suspend.c //kernel code
//kernel log
03-20 12:57:44.042 0 0 I [26238.079199,4] PM: Syncing filesystems ...
03-20 12:57:44.042 0 0 I [26358.606528,4] SysRq: Show Blocked State
解决方法:
static int enter_state(suspend_state_t state)
{
int error;
if (state == PM_SUSPEND_FREEZE) {
} else if (!valid_state(state)) {
return -EINVAL;
}
if (!mutex_trylock(&pm_mutex))
return -EBUSY;
if (state == PM_SUSPEND_FREEZE)
freeze_begin();
#ifdef CONFIG_PM_SYNC_BEFORE_SUSPEND
printk(KERN_INFO "PM: Syncing filesystems ... ");
sys_sync();
printk("done.\n");
#endif
pr_debug("PM: Preparing system for %s sleep\n", pm_states[state].label);
- /proc/sysrq-trigger文件的强大功能
- /proc/sysrq-trigger文件的强大功能
- /proc/sysrq-trigger文件的强大功能
- /proc/sysrq-trigger文件的功能
- /proc/sysrq-trigger文件的强大功能
- /proc/sysrq-trigger文件的强大功能
- /proc/sysrq-trigger文件的功能
- /proc/sysrq-trigger文件的功能
- /proc/sysrq-trigger文件的功能
- /proc/sysrq-trigger文件的强大功能
- /proc/sysrq-trigger文件的功能
- /proc/sysrq-trigger文件
- /proc/sysrq-trigger说明
- /proc/sysrq-trigger使用说明
- /proc/sysrq-trigger详解
- /proc/sysrq-trigger详解
- 轻松搞死linux,介绍/proc/sysrq-trigger的强大功能
- 使用reboot命令失败的处理方法(/proc/sys/kernel/sysrq 和 /proc/sysrq-trigger )
- Qt Quick实现的涂鸦程序
- numpy 学习,里面有converters参数的使用方法
- GDB 反向调试(Reverse Debugging)
- SQLServer设置大小写敏感
- Android酷炫实用的开源框架(UI框架)
- /proc/sysrq-trigger文件的功能
- 七种排序方法介绍
- 基于Http协议的Android网络编程
- [MUI框架]-滑动侧边栏-webview模式
- mongoDB window平台安装MongoDB
- 字符串反转输出的实现
- android greenDao SQLite数据库操作工具类使用
- notifyDataSetChanged() 和 notifyDataSetInvalidated()
- 策略模式