Msensor-Hal-crash

Source: Internet
Author: User

[Symptom]
Install version 4.5, and wait for the login interface (Earth Interface) to stop 3-5 seconds to restart the mobile phone

[Analysis]
D/sensors (223): sensorbase: setenable: menabled [0] = 1, menabled [1] = 0, menabled [2] = 0
D/sensors (223): Activate: handle = 2; DRV =-22, enable = 1
E/sensorservice (223): Error activating sensor 2 (unknown error:-1)
D/sensors (223): setdelay: handle = 0; DRV = 0
I/debug (143 ): **************************************** ********
I/debug (143): Build fingerprint: 'sprd/sprdroid_base/hsdroid: 2.3.5/mocordroid2.3.5/android2.3.5 _ hy_v01: User/test-keys'
I/debug (143): PID: 223, TID: 223 >>> system_server <
I/debug (143): Signal 11 (SIGSEGV), Code 1 (segv_maperr), fault ADDR 00000000
I/debug (143): R0 00000000 R1 00000002 R2 0bebc200 R3 8110464c
I/debug (143): R4 00000002 R5 ffffffea R6 001f1800 R7 0bebc200
I/debug (143): R8 00000000 R9 00000006 10 000003e8 FP 00000000
I/debug (143): IP afa03118 SP bed42118 LR 81104049 PC 81104054 CPSR 80800030
I/debug (143): D0 6168203a79616c3b D1 312d203a424f7220
I/debug (143): D2 0073006e00650064 D3 0076004500720072
I/debug (143): D4 0000001900000000 D5 0000000000000000
I/debug (143): D6 0000000000000001 D7 0000000000000019
I/debug (143): D8 000000000bebc200 D9 0000000000000000
I/debug (143): D10 0000000000000000 D11 0000000000000000
I/debug (143): D12 0000000000000000 D13 0000000000000000
I/debug (143): D14 0000000000000000 D15 0000000000000000
I/debug (143): D16 running bc2000000001 d17 running 3f800000
I/debug (143): d18 0000000100000000 d19 0068007a00000002
I/debug (143): d20 0000000200000000 D21 201710000004e0043
I/debug (143): D22 0000000000000000 d23 0000000300000000
I/debug (143): d24 3fc74721cad6b0ed D25 3fc39a09d078c69f
I/debug (143): d26 0000000000000000 d27 0000000000000000
I/debug (143): d28 0000000000000000 D29 0000000000000000
I/debug (143): d30 0000000000000000 d31 0000000000000000
I/debug (143): SCR 80000010
I/debug (143 ):
I/debug (143): #00 PC 00004054/system/lib/HW/sensors. sprdbp. So
I/debug (143): #01 PC restart 40f6/system/lib/HW/sensors. sprdbp. So
I/debug (143 ):
I/debug (143): code around PC:
I/debug (143): 81104034 0000061c 4ff7e92d 4606460c 46984617
I/debug (143): 81104044 ffecf7ff f1004621 4605091c 0029f856
I/debug (143): 81104054 6a5a6803 46834790 0029f856 69cb6801
I/debug (143): 81104064 47984621 46234a13 447a9500 49124689
I/debug (143): 81104074 20034682 f7fd4479 f1bbef5c dc040f01
I/debug (143 ):
I/debug (143): code around LR:
I/debug (143): 81104028 4b02d803 f853447b 47700021 0000061c
I/debug (143): 81104038 4ff7e92d 4606460c 46984617 ffecf7ff
I/debug (143): 81104048 f1004621 4605091c 0029f856 6a5a6803
I/debug (143): 81104058 46834790 0029f856 69cb6801 47984621
I/debug (143): 81104068 46234a13 447a9500 49124689 20034682
I/debug (143 ):
I/debug (143): Stack:
I/debug (143): bed420d8 81104839/system/lib/HW/sensors. sprdbp. So
I/debug (143): bed420dc 00000001
I/debug (143): bed420e0 00000000
I/debug (143): bed420e4 00000000
I/debug (143): bed420e8 00000031
I/debug (143): bed420ec 002055d4
I/debug (143): bed420f0 000003e8
I/debug (143): bed420f4 d082ea70
I/debug (143): bed420f8 001f1880
I/debug (143): bed420fc 00000000
I/debug (143): bed42100 00000000
I/debug (143): bed42104 001f1800
I/debug (143): bed42108 0bebc200
I/debug (143): bed4210c 8110407f/system/lib/HW/sensors. sprdbp. So
I/debug (143): bed42110 df002777
I/debug (143): bed42114 e3a070ad
I/debug (143): #00 bed42118 001f1800
I/debug (143): bed4211c 00000002
I/debug (143): bed42120 0bebc200
I/debug (143): bed42124 00000002
I/debug (143): bed42128 001f1800
I/debug (143): bed4212c 002055d0
I/debug (143): bed42130 001f17d0
I/debug (143): bed42134 001f17d0
I/debug (143): bed42138 002055d4
I/debug (143): bed4213c 000003e8
I/debug (143): bed42140 00000000
I/debug (143): bed42144 811040fb/system/lib/HW/sensors. sprdbp. So
I/debug (143): #01 bed42148 00000000
I/debug (143): bed4214c 00000000
I/debug (143): bed42150 00000001
I/debug (143): bed42154 81104101/system/lib/HW/sensors. sprdbp. So
I/debug (143): bed42158 002055d0
I/debug (143): bed4215c 81104107/system/lib/HW/sensors. sprdbp. So
I/debug (143): bed42160 00000001
I/debug (143): bed42164 8050d3d3/system/lib/libsensorservice. So
I/debug (143): bed42168 afd471ec
I/debug (143): bed4216c 00000000
I/debug (143): bed42170 00000000
I/debug (143): bed42174 00000002
I/debug (143): bed42178 00000000
I/debug (143): bed4217c 00000000
I/debug (143): bed42180 00000000
I/debug (143): bed42184 00000000
I/debug (143): bed42188 00249900
I/debug (143): bed4218c 0018fb68
D/keyguardupdatemonitor (223): received broadcast Android. Intent. Action. battery_changed
D/keyguardupdatemonitor (223): handlebatteryupdate
I/statusbarpolicy (298): receive intent = Android. Intent. Action. battery_changed
I/bootreceiver (223): copying/data/tombstones/tombstone_01 to Dropbox (system_tombstone)
I/debug (143): debugadh committing suicide to free the zombie!
I/debug (809): debugadh: Mar 17 2013 16:50:50
D/zygote (145): Process 223 terminated by signal (11)
I/zygote (145): Exit zygote because system server (223) has terminated
E/installd (148): EOF
E/installd (148): failed to read size
I/installd (148): Closing connection
E/inputqueue-JNI (298): Channel '40713b48 statusbar (client )'~ Publisher closed input channel or an error occurred. Events = 0x8
E/inputqueue-JNI (298): Channel '406c71d0 statusbarexpanded (client )'~ Publisher closed input channel or an error occurred. Events = 0x8
E/inputqueue-JNI (298): Channel '407170a8 trackingview (client )'~ Publisher closed input channel or an error occurred. Events = 0x8
D/androidruntime (554): Shutting Down VM
W/dalvikvm (554): threadid = 1: thread exiting with uncaught exception (group = 0x4001d578)
I/servicemanager (137): Service 'usagestats' died
I/servicemanager (137): Service 'telephony. registry1 'died
I/servicemanager (137): Service 'surfaceflinger 'died
I/servicemanager (137): Service 'batterinfo' died
I/servicemanager (137): Service 'telephony. registry0' died
I/servicemanager (137): Service 'sensorservice' died
I/servicemanager (137): Service 'permission' died
I/servicemanager (137): Service 'active' died
I/servicemanager (137): Service 'entropy' died
I/servicemanager (137): Service 'power' died
I/servicemanager (137): Service 'telephony. Registry 'died
I/servicemanager (137): Service 'account' died
I/servicemanager (137): Service 'appwidget 'died
I/servicemanager (137): Service 'audio' died
I/servicemanager (137): Service 'meminfo' died
I/servicemanager (137): Service 'package' died
I/servicemanager (137): Service 'uimode' died
I/servicemanager (137): Service 'cpuinfo' died
I/servicemanager (137): Service 'usb 'died
I/servicemanager (137): Service 'content' died
I/servicemanager (137): Service 'hardware' died
I/servicemanager (137): Service 'vibrator' died
I/servicemanager (137): Service 'battery' died
I/servicemanager (137): Service 'arm' died
I/servicemanager (137): Service 'window' died
I/servicemanager (137): Service 'bluetooth 'died
I/servicemanager (137): Service 'bluetooth _ a2dp 'died
I/servicemanager (137): Service 'device _ policy' died
I/servicemanager (137): Service 'statusbar' died
I/servicemanager (137): Service 'clipboard' died
I/servicemanager (137): Service 'diskstats' died
I/servicemanager (137): Service 'another _ watchdog 'died
I/servicemanager (137): Service 'backup 'died
I/servicemanager (137): Service 'network _ management' died
I/servicemanager (137): Service 'input _ method' died
I/servicemanager (137): Service 'netstat' died
I/servicemanager (137): Service 'mount' died
I/servicemanager (137): Service 'wifi 'died
I/servicemanager (137): Service 'connection' died
I/servicemanager (137): Service 'throttle' died
I/servicemanager (137): Service 'accesssibility 'died
I/servicemanager (137): Service 'notification' died
I/servicemanager (137): Service 'devicestoragemonitor 'died
I/servicemanager (137): Service 'dropbox' died
I/servicemanager (137): Service 'search' died
I/servicemanager (137): Service 'location' died
I/servicemanager (137): Service 'wallpaper' died
V/audioflinger (138): removenotificationclient () 0x32618, PID 223

1. Which process is crash?
>>> System_server <
2. Process PID
PID: 236
3. What is the value of PC?
PC 81104054
4. Cause of death
Signal 11 (SIGSEGV), Code 1 (segv_maperr), fault ADDR 00000000
Segment Error
5. Collect the following information to find the location of the Dead Code:
1) contact the customer to reach sensors. sprdbp. So.
$ Sourcebuild/envsetup. Sh
$ Lunch
$ Arm-Eabi-objdump-d-s sensors. sprdbp. So | tee sensor. Dump
2) Ask the customer to perform the following actions
# Cat/proc/<pid>/maps | grep sensors. sprdbp. So
81100000-81106000 R-XP 00000000 1f: 0b 566/system/lib/HW/sensors. sprdbp. So
81106000-81107000 RW-P 00006000 1f: 0b 566/system/lib/HW/sensors. sprdbp. So

PC value minus sensors. sprdbp. So Base Value: 81104054-81100000 = 4054

Search for the lock offset "4054" in sensor. Dump to locate the faulty function.
<_ Zn22sensors_poll_context_t12setdelay_subeix + 0x80>)
4054: 6803
LDR R3, [r0, #0]

In the setdelay_sub function of sensors. cpp, print the information to see where it is.

Int sensors_poll_context_t: setdelay_sub (INT handle, int64_t NS)
{
Int DRV = handletodriver (handle );

Logd ("Yue >>> setdelay: handle = % d; DRV = % d", handle, DRV );
Int en = msensors [DRV]-> getenable (handle

Logd ("Yue >>> crash abve line \ n ");

Int64_t cur = msensors [DRV]-> getdelay (handle );
Int err = 0;

If (EN <= 1)
{
/* No dependencies */
If (cur! = NS)
{
If (DRV> = 0)
Err = msensors [DRV]-> setdelay (handle, NS );
}
}
......
}

Then track handletodriver

Int sensors_poll_context_t: handletodriver (INT handle)
{
Switch (handle)
{
Case id_a:
Return ACC;
// Case id_m:
// Case id_o:
// Return mag;
Case id_l:
Return light;
Case id_p:
Return proximity;
}
Return-einval;
}
Handle = 2, that is, id_o. Therefore, return-einval is returned, while einval = 22.
Let's look at the ssensorlist. There is no msensor on the board, but it defines ensor_type_orientation.

/* The sensors module */
Static const struct sensor_t ssensorlist [] =
{
.....
# Ifdef sensorhal_acc_kxtj9 // This defines
{
"Kionix kxtj9 3-axis accelerometer ",
"Kionix ",
1, sensors_acceleration_handle,
Sensor_type_accelerometer, (gravity_earth * 4.0f ),
(Gravity_earth)/1024366f, 0.145f, 10000 ,{}
},
// Added by YUE 20130319 // added later
# If 0
{
"Ak8975 orientation sensor ",
"Asahi kasei Microdevices ",
1, sensors_orientation_handle,
Sensor_type_orientation, 360.0f,
Convert_o, 0.495f, 10000 ,{}
},
# Endif
# Endif
.....
}

[Summary]
The root cause of this is the typical case where removing msensor code from the sensor Hal does not completely cause crash.
Note:
When the system defines the several sensor, the following points must be consistent:"
1) ssensorlist Array
2) sensors_poll_context_t
Struct sensors_poll_context_t
{

PRIVATE:
Enum {
ACC
= 0,
// Mag
= 1,
Light = 1,
Proximity = 2,
Numsensordrivers, // poll is based on this value, so the enumerated values above must be consistent and increase sequentially
Numfds,
};

}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.