Hallo zusammen,
... ich hoffe mal, ich bin hier richtig, und verstosse bei meinem ersten Posting hier nicht gleich gegen irgendwelche Forenregeln, die ich so nicht gesehen habe...
Worum es geht: ich bin (bzw. wir sind) dabei, eine Applikation zu entwickeln, die in einem OSGi-Framework unter Android laufen soll. Grundsätzlich arbeitet das OSGi-Framework bzw. die Frameworks auch prima (wir verwenden zum Testen parallel Apache Felix und ProSyst mBS Mobile); Bundle lassen sich installieren & starten, und registrieren ihre Services auch brav (also erstmal alles so, wie es sein soll). Einzige Ausnahme ist (wie könnte es andern sein) eine unserer Kernkomponenten (wiederum ein OSGi Bundle) - diese stellt einen Service zur Verfügung, bei dem in einigen Methodensignaturen javax.security.auth.Subjects mit übergeben werden (können). Wird die Klasse dieses Services instanziiert scheint es ein wie auch immer geartetes Problem mit dem Laden dieser Klasse geben - sie ist (natürlich) nicht Teil des OSGi-Framework, sondern wird von der Android API / der Dalvik VM geliefert. Das scheint aber *irgendwie* fehlzuschlagen, was dann dazu führt, dass (wie ich vermute) die Dalvik VM abstürzt - auf jeden Fall stürzt das OSGi-Framework ab, und es gibt einen Segmentation Fault.
Hier vielleicht mal ein kleiner Auszug aus dem Log, das ich bekomme:
++++++++++++++++++++++++++++++++++
05-09 13:20:08.740: DEBUG/dalvikvm(13668): DEX prep './felix-cache/bundle10/version10.0/bundle.jar': unzip in 10ms, rewrite 153ms
05-09 13:20:19.819: DEBUG/dalvikvm(13668): DexOpt: --- BEGIN 'bundle.jar' (bootstrap=0) ---
05-09 13:20:19.929: DEBUG/dalvikvm(13750): DexOpt: load 10ms, verify0ms, opt 3ms
05-09 13:20:19.939: DEBUG/dalvikvm(13668): DexOpt: --- END'bundle.jar' (success) ---
05-09 13:20:19.939: DEBUG/dalvikvm(13668): DEX prep './felix-cache/bundle34/version0.0/bundle.jar': unzip in 1ms, rewrite 116ms
05-09 13:20:20.009: DEBUG/dalvikvm(13668): GC_FOR_MALLOC freed 10683 objects / 957840 bytes in 54ms
05-09 13:20:20.079: WARN/dalvikvm(13668): VFY: unable to find class referenced in signature (Ljavax/security/auth/Subject;)
05-09 13:20:20.379: INFO/DEBUG(31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-09 13:20:20.379: INFO/DEBUG(31): Build fingerprint: 'generic/sdk/generic/:2.2/FRF91/43546:eng/test-keys'
05-09 13:20:20.389: INFO/DEBUG(31): pid: 13668, tid: 13679 >>> /system/bin/dalvikvm <<<
05-09 13:20:20.389: INFO/DEBUG(31): signal 11 (SIGSEGV), fault addr 00000024
05-09 13:20:20.399: INFO/DEBUG(31): r0 00000000 r1 4013fc48 r2 00011074 r3 80087fc4
05-09 13:20:20.399: INFO/DEBUG(31): r4 80088d1c r5 400fb210 r6 00000000 r7 41f695f1
05-09 13:20:20.399: INFO/DEBUG(31): r8 80013b00 r9 400fb210 10 401abeb0 fp 0002e0c8
05-09 13:20:20.409: INFO/DEBUG(31): ip 80088098 sp 422e1d38 lr 8005ee23 pc 8005cdce cpsr 20000030
05-09 13:20:20.449: INFO/DEBUG(31): #00 pc 0005cdce /system/lib/libdvm.so
05-09 13:20:20.449: INFO/DEBUG(31): #01 pc 0005ee1e /system/lib/libdvm.so
05-09 13:20:20.449: INFO/DEBUG(31): #02 pc 0005ee8c /system/lib/libdvm.so
05-09 13:20:20.449: INFO/DEBUG(31): #03 pc 0005ef6c /system/lib/libdvm.so
05-09 13:20:20.459: INFO/DEBUG(31): #04 pc 0005f13e /system/lib/libdvm.so
05-09 13:20:20.459: INFO/DEBUG(31): #05 pc 00017c60 /system/lib/libdvm.so
05-09 13:20:20.459: INFO/DEBUG(31): #06 pc 0001e8c4 /system/lib/libdvm.so
05-09 13:20:20.469: INFO/DEBUG(31): #07 pc 0001d790 /system/lib/libdvm.so
05-09 13:20:20.469: INFO/DEBUG(31): #08 pc 00053eec /system/lib/libdvm.so
05-09 13:20:20.469: INFO/DEBUG(31): #09 pc 00054102 /system/lib/libdvm.so
05-09 13:20:20.479: INFO/DEBUG(31): #10 pc 0004825a /system/lib/libdvm.so
05-09 13:20:20.479: INFO/DEBUG(31): #11 pc 0001103c /system/lib/libc.so
05-09 13:20:20.479: INFO/DEBUG(31): #12 pc 00010b20 /system/lib/libc.so
05-09 13:20:20.479: INFO/DEBUG(31): code around pc:
05-09 13:20:20.489: INFO/DEBUG(31): 8005cdac 10831a98 43584803 46c04770 0002b228
05-09 13:20:20.489: INFO/DEBUG(31): 8005cdbc 00000374 aaaaaaab 4b12b510 2900447b
05-09 13:20:20.489: INFO/DEBUG(31): 8005cdcc 6a42d01e 062424b0 4c0f1912 4c0f591b
05-09 13:20:20.489: INFO/DEBUG(31): 8005cddc 681b3394 dc0442a2 d0022b00 181800d0
05-09 13:20:20.499: INFO/DEBUG(31): 8005cdec 3050e000 3b016843 e007009a 58a46804
05-09 13:20:20.499: INFO/DEBUG(31): code around lr:
05-09 13:20:20.499: INFO/DEBUG(31): 8005ee00 f7ff1c07 4c14ffe9 48141c06 5824447c
05-09 13:20:20.499: INFO/DEBUG(31): 8005ee10 6820348c f7b43014 6ce9e982 f7fd1c30
05-09 13:20:20.499: INFO/DEBUG(31): 8005ee20 9001ffd1 30146820 ec66f7b4 20019b01
05-09 13:20:20.499: INFO/DEBUG(31): 8005ee30 d10e2b00 1c386ce9 ffcef7ff d0011e04
05-09 13:20:20.509: INFO/DEBUG(31): 8005ee40 d1032e00 ff20f7e7 63012100 42501b32
05-09 13:20:20.509: INFO/DEBUG(31): stack:
05-09 13:20:20.509: INFO/DEBUG(31): 422e1cf8 401f1180 /dev/ashmem/mspace/dalvik-heap/0 (deleted)
05-09 13:20:20.509: INFO/DEBUG(31): 422e1cfc 8006caa4 /system/lib/libdvm.so
05-09 13:20:20.509: INFO/DEBUG(31): 422e1d00 00000002
05-09 13:20:20.519: INFO/DEBUG(31): 422e1d04 00000000
05-09 13:20:20.519: INFO/DEBUG(31): 422e1d08 401f1180 /dev/ashmem/mspace/dalvik-heap/0 (deleted)
05-09 13:20:20.519: INFO/DEBUG(31): 422e1d0c 0009eb00 [heap]
05-09 13:20:20.519: INFO/DEBUG(31): 422e1d10 41f695f1 /data/dalvik-cache/mnt@sdcard@test@felix-osgi@.@felix-cache@bundle10@[email protected]@classes.dex
05-09 13:20:20.519: INFO/DEBUG(31): 422e1d14 401692c8 /dev/ashmem/mspace/dalvik-heap/0 (deleted)
05-09 13:20:20.519: INFO/DEBUG(31): 422e1d18 00011074 [heap]
05-09 13:20:20.529: INFO/DEBUG(31): 422e1d1c afd10510 /system/lib/libc.so
05-09 13:20:20.529: INFO/DEBUG(31): 422e1d20 80088d1c /system/lib/libdvm.so
05-09 13:20:20.529: INFO/DEBUG(31): 422e1d24 400fb210 /dev/ashmem/mspace/dalvik-heap/0 (deleted)
05-09 13:20:20.529: INFO/DEBUG(31): 422e1d28 00000000
05-09 13:20:20.529: INFO/DEBUG(31): 422e1d2c 41f695f1 /data/dalvik-cache/mnt@sdcard@test@felix-osgi@.@felix-cache@bundle10@[email protected]@classes.dex
05-09 13:20:20.539: INFO/DEBUG(31): 422e1d30 df002777
05-09 13:20:20.539: INFO/DEBUG(31): 422e1d34 e3a070ad
05-09 13:20:20.539: INFO/DEBUG(31): #00 422e1d38 80088d1c /system/lib/libdvm.so
05-09 13:20:20.539: INFO/DEBUG(31): 422e1d3c 8005ee23 /system/lib/libdvm.so
05-09 13:20:20.549: INFO/DEBUG(31): #01 422e1d40 00028850 [heap]
05-09 13:20:20.549: INFO/DEBUG(31): 422e1d44 0004a340 [heap]
05-09 13:20:20.549: INFO/DEBUG(31): 422e1d48 00000000
05-09 13:20:20.549: INFO/DEBUG(31): 422e1d4c 400fb210 /dev/ashmem/mspace/dalvik-heap/0 (deleted)
05-09 13:20:20.549: INFO/DEBUG(31): 422e1d50 410ceefc /dev/ashmem/dalvik-LinearAlloc (deleted)
05-09 13:20:20.549: INFO/DEBUG(31): 422e1d54 401dcd08 /dev/ashmem/mspace/dalvik-heap/0 (deleted)
05-09 13:20:20.549: INFO/DEBUG(31): 422e1d58 400fb210 /dev/ashmem/mspace/dalvik-heap/0 (deleted)
05-09 13:20:20.559: INFO/DEBUG(31): 422e1d5c 8005ee91 /system/lib/libdvm.so
05-09 13:20:21.239: INFO/BootReceiver(59): Copying /data/tombstones/tombstone_09 to DropBox (SYSTEM_TOMBSTONE)
05-09 13:20:21.399: DEBUG/dalvikvm(59): GC_FOR_MALLOC freed 2764 objects / 477792 bytes in 155ms
++++++++++++++++++++++++++++++++++
Das Problem liegt bzw. beginnt m.E. nach in der 7. Zeile (timestamp 13:20:20.079). Ich hab da inzw. wild hin- und herdebug'ed, aber ich komme zu keiner Lösung. Die benötigte Klasse (javax.security.auth.Subject) ist unter Dalvik verfügbar (bestimmte javax.*-Sachen fehlen da AFAIK ja, diese aber nicht) - wenn ich z. B. ein einfaches Testbundle starte, das nichts anderes tut als ein solches Subject zu instanziieren, dann läuft das auch durch, d.h. stürzt nicht etwa ab oder so (da scheint das dann also zu funktioneren...). Betreibe ich unsere Bundles im identischen OSGi-Framework auf einem normalen PC (wirklich mit exakt dem gleichen Framework - es ist das gleiche JAR, dieses enthält sowohl die Dalvik- als auch ide Java-Klassen, und ist somit auf beiden Plattformen ausführbar...), dann funktioniert das alles exakt so, wie es soll...
Ich sitze da inzw. einige Tage an diesem Problem, ich komme aber partout nicht weiter. Falls hier also jemand eine Idee oder einen Lösungsvprschlag hat - gerne her damit!
Danke & viele Grüsse,
Jan