ChainsDD/su-binary — Issue #6: Fails to run app_process on ICS
Author: miracle2k
Created: 2011-12-05 02:16:40+00:00
State: open

Android ships with a number of scripts, like pm or svc, which are implemented in Java, and are run via app_process:

$ cat /system/bin/pm
base=/system
export CLASSPATH=$base/framework/pm.jar
exec app_process $base/bin com.android.commands.pm.Pm "$@"

Using su 3.0.3 (Superuser.apk 3.0.7) I cannot run these scripts as root:

$ /system/bin/su -c "pm"
[1] Segmentation fault pm

Logcat meanwhile says:

I/ActivityManager( 75): Displayed com.noshufou.android.su/.SuRequestActivity: +777ms
E/su ( 1083): sudb - Opening database
E/su ( 1083): sudb - Database opened
E/su ( 1083): sudb - Database closed
D/su ( 1083): 10045 /system/bin/ash executing 0 pm using shell /system/bin/sh : sh
D/AndroidRuntime( 1085):
D/AndroidRuntime( 1085): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
D/AndroidRuntime( 1085): CheckJNI is ON
W/dalvikvm( 1085): Exception Ljava/lang/NullPointerException; thrown while initializing Ljava/lang/System;
W/dalvikvm( 1085): Exception Ljava/lang/ExceptionInInitializerError; thrown while initializing Ljava/lang/ClassLoader$SystemClassLoader;
W/dalvikvm( 1085): WARNING: system class loader is NULL (setting main ctxt)
W/dalvikvm( 1085): Warning: tracked references remain post-initialization
W/dalvikvm( 1085): MAIN reference table (0x13250) dump:
W/dalvikvm( 1085): Last 1 entries (of 1):
E/dalvikvm( 1085): Class lookup Ljava/lang/Daemons; attempted with exception pending
W/dalvikvm( 1085): Pending exception is:
I/dalvikvm( 1085): java.lang.ExceptionInInitializerError:
I/dalvikvm( 1085):	at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:125)
I/dalvikvm( 1085):	at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm( 1085): Caused by:
I/dalvikvm( 1085): java.lang.ExceptionInInitializerError:
I/dalvikvm( 1085):	at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:100)
I/dalvikvm( 1085):	at java.lang.ClassLoader.access$000(ClassLoader.java:65)
I/dalvikvm( 1085):	at java.lang.ClassLoader$SystemClassLoader.(ClassLoader.java:81)
I/dalvikvm( 1085):	at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:125)
I/dalvikvm( 1085):	at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm( 1085): Caused by:
I/dalvikvm( 1085): java.lang.NullPointerException:
I/dalvikvm( 1085):	at java.util.Hashtable.put(Hashtable.java:365)
I/dalvikvm( 1085):	at java.lang.System.initSystemProperties(System.java:286)
I/dalvikvm( 1085):	at java.lang.System.getProperties(System.java:260)
I/dalvikvm( 1085):	at java.lang.System.getProperty(System.java:425)
I/dalvikvm( 1085):	at java.lang.System.getProperty(System.java:406)
I/dalvikvm( 1085):	at java.lang.System.(System.java:90)
I/dalvikvm( 1085):	at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:100)
I/dalvikvm( 1085):	at java.lang.ClassLoader.access$000(ClassLoader.java:65)
I/dalvikvm( 1085):	at java.lang.ClassLoader$SystemClassLoader.(ClassLoader.java:81)
I/dalvikvm( 1085):	at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:125)
I/dalvikvm( 1085):	at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm( 1085): DALVIK THREADS:
I/dalvikvm( 1085): (mutexes: tll=0 tsl=0 tscl=0 ghl=0)
I/dalvikvm( 1085): "main" prio=5 tid=1 RUNNABLE
I/dalvikvm( 1085): | group="main" sCount=0 dsCount=0 obj=0x40996460 self=0x127f0
I/dalvikvm( 1085): | sysTid=1085 nice=0 sched=0/0 cgrp=default handle=1074082952
I/dalvikvm( 1085): | schedstat=( 431595141 778421862 60 ) utm=30 stm=13 core=0
I/dalvikvm( 1085): at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm( 1085):
E/dalvikvm( 1085): VM aborting
F/libc ( 1085): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1)
I/DEBUG ( 32): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 32): Build fingerprint: 'generic/google_sdk/generic:4.0.1/ICS_MR0/202595:eng/test-keys'
I/DEBUG ( 32): pid: 1085, tid: 1085 >>> app_process <<<
I/DEBUG ( 32): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
I/DEBUG ( 32): r0 00000000 r1 00000000 r2 4004d1ac r3 00000000
I/DEBUG ( 32): r4 deadd00d r5 4086bc58 r6 0000020c r7 40178ebc
I/DEBUG ( 32): r8 00000000 r9 40866f90 10 40849b81 fp 00000000
I/DEBUG ( 32): ip 40867068 sp be8c71e0 lr 40804da3 pc 40804da2 cpsr 60000030
I/DEBUG ( 32): d0 3f4000003f400000 d1 0000000000000000
I/DEBUG ( 32): d2 0000000000000000 d3 0000000000000000
I/DEBUG ( 32): d4 0000000000000000 d5 41c73737d9000000
I/DEBUG ( 32): d6 3f50624dd2f1a9fc d7 c18af9679335d62e
I/DEBUG ( 32): d8 0000000000000000 d9 0000000000000000
I/DEBUG ( 32): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 32): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 32): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 32): scr 60000010
I/DEBUG ( 32):
I/DEBUG ( 32): #00 pc 00050da2 /system/lib/libdvm.so (dvmAbort)
I/DEBUG ( 32): #01 pc 00076014 /system/lib/libdvm.so
I/DEBUG ( 32): #02 pc 000767b2 /system/lib/libdvm.so (_Z24dvmFindSystemClassNoInitPKc)
I/DEBUG ( 32): #03 pc 00076ff2 /system/lib/libdvm.so (_Z18dvmFindSystemClassPKc)
I/DEBUG ( 32): #04 pc 00060822 /system/lib/libdvm.so (_Z19dvmGcStartupClassesv)
I/DEBUG ( 32): #05 pc 00052cae /system/lib/libdvm.so (_Z10dvmStartupiPKPKcbP7_JNIEnv)
I/DEBUG ( 32): #06 pc 000546a6 /system/lib/libdvm.so (JNI_CreateJavaVM)
I/DEBUG ( 32): #07 pc 00041252 /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime7startVmEPP7_JavaVMPP7_JNIEnv)
I/DEBUG ( 32): #08 pc 00041634 /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime5startEPKcS2_)
I/DEBUG ( 32): #09 pc 00008f0a /system/bin/app_process
I/DEBUG ( 32): #10 pc 00016700 /system/lib/libc.so (__libc_init)
I/DEBUG ( 32):
I/DEBUG ( 32): code around pc:
I/DEBUG ( 32): 40804d80 34bcf8d3 ebf6f7cd 26001e73 2f01f813
I/DEBUG ( 32): 40804d90 42abb152 d0074416 4798e7f8 f7ff4c0a
I/DEBUG ( 32): 40804da0 7026ffa7 ebecf7cd 2006490c 44794a0c
I/DEBUG ( 32): 40804db0 f7cd447a 2000eaae eb64f7cd 58e54b05
I/DEBUG ( 32): 40804dc0 2b006c6b e7e9d1e9 deadd00d 00062238
I/DEBUG ( 32):
I/DEBUG ( 32): code around lr:
I/DEBUG ( 32): 40804d80 34bcf8d3 ebf6f7cd 26001e73 2f01f813
I/DEBUG ( 32): 40804d90 42abb152 d0074416 4798e7f8 f7ff4c0a
I/DEBUG ( 32): 40804da0 7026ffa7 ebecf7cd 2006490c 44794a0c
I/DEBUG ( 32): 40804db0 f7cd447a 2000eaae eb64f7cd 58e54b05
I/DEBUG ( 32): 40804dc0 2b006c6b e7e9d1e9 deadd00d 00062238
I/DEBUG ( 32):
I/DEBUG ( 32): stack:
I/DEBUG ( 32): be8c71a0 00000000
I/DEBUG ( 32): be8c71a4 4001df07 /system/lib/libc.so
I/DEBUG ( 32): be8c71a8 40047720
I/DEBUG ( 32): be8c71ac 400476b0
I/DEBUG ( 32): be8c71b0 00000000
I/DEBUG ( 32): be8c71b4 4001f121 /system/lib/libc.so
I/DEBUG ( 32): be8c71b8 4004755c
I/DEBUG ( 32): be8c71bc 00000000
I/DEBUG ( 32): be8c71c0 0000020c
I/DEBUG ( 32): be8c71c4 40178ebc /system/lib/libandroid_runtime.so
I/DEBUG ( 32): be8c71c8 00000000
I/DEBUG ( 32): be8c71cc 4001df37 /system/lib/libc.so
I/DEBUG ( 32): be8c71d0 40866f90
I/DEBUG ( 32): be8c71d4 be8c73e3
I/DEBUG ( 32): be8c71d8 df0027ad
I/DEBUG ( 32): be8c71dc 00000000
I/DEBUG ( 32): #00 be8c71e0 be8c7374
I/DEBUG ( 32): be8c71e4 6c756e28
I/DEBUG ( 32): be8c71e8 0000296c
I/DEBUG ( 32): be8c71ec 00000000
I/DEBUG ( 32): be8c71f0 00000000
I/DEBUG ( 32): be8c71f4 00000000
I/DEBUG ( 32): be8c71f8 00000000
I/DEBUG ( 32): be8c71fc 00000000
I/DEBUG ( 32): be8c7200 00000000
I/DEBUG ( 32): be8c7204 00000000
I/DEBUG ( 32): be8c7208 00000000
I/DEBUG ( 32): be8c720c 00000000
I/DEBUG ( 32): be8c7210 00000000
I/DEBUG ( 32): be8c7214 00000000
I/DEBUG ( 32): be8c7218 00000000
I/DEBUG ( 32): be8c721c 00000000
I/DEBUG ( 32): be8c7220 00000000
I/DEBUG ( 32): be8c7224 00000000
I/DEBUG ( 32): be8c7228 00000000
I/DEBUG ( 32): be8c722c 00000000
I/DEBUG ( 32): be8c7230 00000000
I/DEBUG ( 32): be8c7234 00000000
I/DEBUG ( 32): be8c7238 00000000
I/DEBUG ( 32): be8c723c 00000000
I/DEBUG ( 32): be8c7240 00000000
I/DEBUG ( 32): be8c7244 00000000
I/DEBUG ( 32): be8c7248 00000000
I/DEBUG ( 32): be8c724c 00000000
I/DEBUG ( 32): be8c7250 00000000
I/DEBUG ( 32): be8c7254 00000000
I/DEBUG ( 32): be8c7258 00000000
I/DEBUG ( 32): be8c725c 00000000
I/DEBUG ( 32): be8c7260 00000000
I/DEBUG ( 32): be8c7264 00000000
I/DEBUG ( 32): be8c7268 00000000
I/DEBUG ( 32): be8c726c 00000000
I/DEBUG ( 32): be8c7270 00000000
I/DEBUG ( 32): be8c7274 00000000
I/DEBUG ( 32): be8c7278 00000000
I/DEBUG ( 32): be8c727c 00000000
I/DEBUG ( 32): be8c7280 00000000
I/DEBUG ( 32): be8c7284 00000000
I/DEBUG ( 32): be8c7288 00000000
I/DEBUG ( 32): be8c728c 00000000
I/DEBUG ( 32): be8c7290 00000000
I/DEBUG ( 32): be8c7294 00000000
I/DEBUG ( 32): be8c7298 00000000
I/DEBUG ( 32): be8c729c 00000000
I/DEBUG ( 32): be8c72a0 00000000
I/DEBUG ( 32): be8c72a4 00000000
I/DEBUG ( 32): be8c72a8 00000000
I/DEBUG ( 32): be8c72ac 00000000
I/DEBUG ( 32): be8c72b0 00000000
I/DEBUG ( 32): be8c72b4 00000000
I/DEBUG ( 32): be8c72b8 00000000
I/DEBUG ( 32): be8c72bc 00000000
I/DEBUG ( 32): be8c72c0 00000000
I/DEBUG ( 32): be8c72c4 00000000
I/DEBUG ( 32): be8c72c8 00000000
I/DEBUG ( 32): be8c72cc 00000000
I/DEBUG ( 32): be8c72d0 00000000
I/DEBUG ( 32): be8c72d4 00000000
I/DEBUG ( 32): be8c72d8 00000000
I/DEBUG ( 32): be8c72dc 00000000
I/DEBUG ( 32): be8c72e0 00000000
I/DEBUG ( 32): be8c72e4 00000000
I/DEBUG ( 32): be8c72e8 00000000
I/DEBUG ( 32): be8c72ec 00000000
I/DEBUG ( 32): be8c72f0 00000000
I/DEBUG ( 32): be8c72f4 00000000
I/DEBUG ( 32): be8c72f8 00000000
I/DEBUG ( 32): be8c72fc 00000000
I/DEBUG ( 32): be8c7300 00000000
I/DEBUG ( 32): be8c7304 00000000
I/DEBUG ( 32): be8c7308 00000000
I/DEBUG ( 32): be8c730c 00000000
I/DEBUG ( 32): be8c7310 00000000
I/DEBUG ( 32): be8c7314 00000000
I/DEBUG ( 32): be8c7318 00000000
I/DEBUG ( 32): be8c731c 00000000
I/DEBUG ( 32): be8c7320 00000000
I/DEBUG ( 32): be8c7324 00000000
I/DEBUG ( 32): be8c7328 00000000
I/DEBUG ( 32): be8c732c 00000000
I/DEBUG ( 32): be8c7330 00000000
I/DEBUG ( 32): be8c7334 00000000
I/DEBUG ( 32): be8c7338 00000000
I/DEBUG ( 32): be8c733c 00000000
I/DEBUG ( 32): be8c7340 00000000
I/DEBUG ( 32): be8c7344 00000000
I/DEBUG ( 32): be8c7348 00000000
I/DEBUG ( 32): be8c734c 00000000
I/DEBUG ( 32): be8c7350 00000000
I/DEBUG ( 32): be8c7354 00000000
I/DEBUG ( 32): be8c7358 00000000
I/DEBUG ( 32): be8c735c 00000000
I/DEBUG ( 32): be8c7360 00000000
I/DEBUG ( 32): be8c7364 00000000
I/DEBUG ( 32): be8c7368 00000000
I/DEBUG ( 32): be8c736c 00000000
I/DEBUG ( 32): be8c7370 00000000
I/DEBUG ( 32): be8c7374 00000000
I/DEBUG ( 32): be8c7378 00000000
I/DEBUG ( 32): be8c737c 00000000
I/DEBUG ( 32): be8c7380 00000000
I/DEBUG ( 32): be8c7384 00000000
I/DEBUG ( 32): be8c7388 00000000
I/DEBUG ( 32): be8c738c 00000000
I/DEBUG ( 32): be8c7390 00000000
I/DEBUG ( 32): be8c7394 00000000
I/DEBUG ( 32): be8c7398 00000000
I/DEBUG ( 32): be8c739c 00000000
I/DEBUG ( 32): be8c73a0 00000000
I/DEBUG ( 32): be8c73a4 00000000
I/DEBUG ( 32): be8c73a8 00000000
I/DEBUG ( 32): be8c73ac 00000000
I/DEBUG ( 32): be8c73b0 00000000
I/DEBUG ( 32): be8c73b4 00000000
I/DEBUG ( 32): be8c73b8 00000000
I/DEBUG ( 32): be8c73bc 00000000
I/DEBUG ( 32): be8c73c0 00000000
I/DEBUG ( 32): be8c73c4 00000000
I/DEBUG ( 32): be8c73c8 00000000
I/DEBUG ( 32): be8c73cc 00000000
I/DEBUG ( 32): be8c73d0 00000000
I/DEBUG ( 32): be8c73d4 00000000
I/DEBUG ( 32): be8c73d8 00000000
I/DEBUG ( 32): be8c73dc 00000000
I/DEBUG ( 32): be8c73e0 00000000
I/DEBUG ( 32): be8c73e4 ec14653b
I/DEBUG ( 32): be8c73e8 40847907 /system/lib/libdvm.so
I/DEBUG ( 32): be8c73ec be8c75ec
I/DEBUG ( 32): be8c73f0 000127f0
I/DEBUG ( 32): be8c73f4 4082a019 /system/lib/libdvm.so
I/DEBUG ( 32): #01 be8c73f8 40866f90
I/DEBUG ( 32): be8c73fc 40810c63 /system/lib/libdvm.so
I/DEBUG ( 32): be8c7400 00000001
I/DEBUG ( 32): be8c7404 42a82b68
I/DEBUG ( 32): be8c7408 be8c746c
I/DEBUG ( 32): be8c740c be8c7450
I/DEBUG ( 32): be8c7410 0000000c
I/DEBUG ( 32): be8c7414 000127f0
I/DEBUG ( 32): be8c7418 00012b60
I/DEBUG ( 32): be8c741c 4084e7ca /system/lib/libdvm.so
I/DEBUG ( 32): be8c7420 0000001b
I/DEBUG ( 32): be8c7424 4004c474
I/DEBUG ( 32): be8c7428 0000200b
I/DEBUG ( 32): be8c742c 0000b000
I/DEBUG ( 32): be8c7430 00097e28
I/DEBUG ( 32): be8c7434 00002000
I/DEBUG ( 32): be8c7438 0000fd00
I/DEBUG ( 32): be8c743c 00000000
I/DEBUG ( 32): be8c7440 40849b81 /system/lib/libdvm.so
I/DEBUG ( 32): be8c7444 40018bf9 /system/lib/libc.so
I/DEBUG ( 32): be8c7448 000127f0
I/DEBUG ( 32): be8c744c 40996460
I/DEBUG ( 32): be8c7450 00000000
I/DEBUG ( 32): be8c7454 000127f0
I/DEBUG ( 32): be8c7458 40996530
I/DEBUG ( 32): be8c745c 00000001
I/DEBUG ( 32): be8c7460 00000010
I/DEBUG ( 32): be8c7464 40866f90
I/DEBUG ( 32): be8c7468 be8c75ec
I/DEBUG ( 32): be8c746c 000127f0
I/DEBUG ( 32): be8c7470 40178ebc /system/lib/libandroid_runtime.so
I/DEBUG ( 32): be8c7474 0000fd00
I/DEBUG ( 32): be8c7478 be8c7564
I/DEBUG ( 32): be8c747c 40849b81 /system/lib/libdvm.so
I/DEBUG ( 32): be8c7480 40849bc6 /system/lib/libdvm.so
I/DEBUG ( 32): be8c7484 4082a7b7 /system/lib/libdvm.so

Notice the NullPointerException in Hashtable.put during loading of the system class loader; which is rather strange, isn't it.

I'm hoping someone here as an idea.