2017-05-24 2 views
0

Ich benutze libgdx und box2d, um physikalische Welt zu simulieren. Aber es besteht eine große Chance, dass meine App beim Start und dem Log wie folgt abstürzt. Ich benutze normalerweise die API von box2d. Bitte helfenlibgdx nativer Absturz jni_create_fixture()

--------- beginning of crash 
05-24 07:13:25.755 F/libc (19459): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x58 in tid 19459 (lex.com.gdxdemo) 
05-24 07:13:25.756 W/  ( 255): debuggerd: handling request: pid=19459 uid=10087 gid=10087 tid=19459 
05-24 07:13:25.823 F/DEBUG (19496): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 
05-24 07:13:25.823 F/DEBUG (19496): Build fingerprint: 'android/aosp_shamu/shamu:7.1.2/N2G47O/ajdink05211137:userdebug/release-keys' 
05-24 07:13:25.823 F/DEBUG (19496): Revision: '0' 
05-24 07:13:25.823 F/DEBUG (19496): ABI: 'arm' 
05-24 07:13:25.823 F/DEBUG (19496): pid: 19459, tid: 19459, name: lex.com.gdxdemo >>> alex.com.gdxdemo <<< 
05-24 07:13:25.823 F/DEBUG (19496): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x58 
05-24 07:13:25.823 F/DEBUG (19496):  r0 00000000 r1 beac7490 r2 00000000 r3 00000000 
05-24 07:13:25.823 F/DEBUG (19496):  r4 00000000 r5 beac78a8 r6 beac7620 r7 beac75e0 
05-24 07:13:25.823 F/DEBUG (19496):  r8 000091d4 r9 b4285400 sl beac7500 fp beac7488 
05-24 07:13:25.823 F/DEBUG (19496):  ip 9aa6ba60 sp beac7470 lr 9aa61f2c pc 9aa4fe20 cpsr 60070010 
05-24 07:13:25.857 F/DEBUG (19496): 
05-24 07:13:25.857 F/DEBUG (19496): backtrace: 
05-24 07:13:25.857 F/DEBUG (19496):  #00 pc 0001ae20 /data/app/alex.com.gdxdemo-2/lib/arm/libgdx-box2d.so (_ZN6b2Body13CreateFixtureEPK12b2FixtureDef+16) 
05-24 07:13:25.857 F/DEBUG (19496):  #01 pc 0002cf28 /data/app/alex.com.gdxdemo-2/lib/arm/libgdx-box2d.so (Java_com_badlogic_gdx_physics_box2d_Body_jniCreateFixture__JJFFFZSSS+116) 
05-24 07:13:25.857 F/DEBUG (19496):  #02 pc 000af999 /system/lib/libart.so (art_quick_generic_jni_trampoline+40) 
05-24 07:13:25.857 F/DEBUG (19496):  #03 pc 000aafc1 /system/lib/libart.so (art_quick_invoke_stub_internal+64) 
05-24 07:13:25.857 F/DEBUG (19496):  #04 pc 00407d09 /system/lib/libart.so (art_quick_invoke_stub+232) 
05-24 07:13:25.857 F/DEBUG (19496):  #05 pc 000b2271 /system/lib/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+136) 
05-24 07:13:25.858 F/DEBUG (19496):  #06 pc 001ef52b /system/lib/libart.so (_ZN3art11interpreter34ArtInterpreterToCompiledCodeBridgeEPNS_6ThreadEPNS_9ArtMethodEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+198) 
05-24 07:13:25.858 F/DEBUG (19496):  #07 pc 001ea8bb /system/lib/libart.so (_ZN3art11interpreter6DoCallILb1ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+334) 
05-24 07:13:25.858 F/DEBUG (19496):  #08 pc 00401ba3 /system/lib/libart.so (MterpInvokeDirectRange+262) 
05-24 07:13:25.858 F/DEBUG (19496):  #09 pc 0009e214 /system/lib/libart.so (ExecuteMterpImpl+15252) 
05-24 07:13:25.858 F/DEBUG (19496):  #10 pc 001ccd3f /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+290) 
05-24 07:13:25.858 F/DEBUG (19496):  #11 pc 001d189f /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+114) 
05-24 07:13:25.858 F/DEBUG (19496):  #12 pc 001e9ad7 /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+450) 
05-24 07:13:25.858 F/DEBUG (19496):  #13 pc 003ff72f /system/lib/libart.so (MterpInvokeVirtual+422) 
05-24 07:13:25.858 F/DEBUG (19496):  #14 pc 0009de14 /system/lib/libart.so (ExecuteMterpImpl+14228) 
05-24 07:13:25.858 F/DEBUG (19496):  #15 pc 001ccd3f /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+290) 
05-24 07:13:25.859 F/DEBUG (19496):  #16 pc 001d189f /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+114) 
05-24 07:13:25.859 F/DEBUG (19496):  #17 pc 001e9ad7 /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+450) 
05-24 07:13:25.859 F/DEBUG (19496):  #18 pc 003ff72f /system/lib/libart.so (MterpInvokeVirtual+422) 
05-24 07:13:25.859 F/DEBUG (19496):  #19 pc 0009de14 /system/lib/libart.so (ExecuteMterpImpl+14228) 
05-24 07:13:25.859 F/DEBUG (19496):  #20 pc 001ccd3f /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+290) 
05-24 07:13:25.859 F/DEBUG (19496):  #21 pc 001d1809 /system/lib/libart.so (_ZN3art11interpreter30EnterInterpreterFromEntryPointEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameE+92) 
05-24 07:13:25.859 F/DEBUG (19496):  #22 pc 003f71f1 /system/lib/libart.so (artQuickToInterpreterBridge+716) 
05-24 07:13:25.859 F/DEBUG (19496):  #23 pc 000afa13 /system/lib/libart.so (art_quick_to_interpreter_bridge+34) 
05-24 07:13:25.859 F/DEBUG (19496):  #24 pc 745425f7 /data/dalvik-cache/arm/[email protected]@boot.oat (offset 0x2821000) 
05-24 07:13:26.264 W/  ( 255): debuggerd: resuming target 19459 
05-24 07:13:26.266 I/BootReceiver(1325): Copying /data/tombstones/tombstone_07 to DropBox (SYSTEM_TOMBSTONE) 
05-24 07:13:26.279 W/ActivityManager(1325): Force finishing activity alex.com.gdxdemo/.Box2dActivity 
05-24 07:13:26.288 W/ContextImpl(1325): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:877 com.android.server.am.AppErrors.crashApplicationInner:375 com.android.server.am.AppErrors.crashApplication:309 com.android.server.am.ActivityManagerService$19.run:13615 java.lang.Thread.run:761 

Es zeigt Absturz auf native Methode

`_ZN6b2Body13CreateFixtureEPK12b2FixtureDef` 

`Java_com_badlogic_gdx_physics_box2d_Body_jniCreateFixture__JJFFFZSSS` 

Mein Absturz Befestigung Code

FixtureDef fd = new FixtureDef(); 
    fd.shape = shape; 
    fd.density = 1.5f; 
    fd.friction = 0.3f; 
    fd.restitution = 0.5f; // Make it bounce a little bit 
    starBody.createFixture(fd); 

ein knowns warum?

+0

Geben Code ist nicht genug, um Ihren Fehler zu finden? – Aryan

Antwort

0

Die Create-Fixture-Methode des Körpers wird im Zusammenhang mit der Welt, die gesperrt wird, genannt. Das ist meine Annahme basierend auf dem Box2D 2.3.2 C++ - Quellcode mit der assert-Anweisung von b2Assert(m_world->IsLocked() == false);.

Wenn Sie zum Beispiel die Create Fixture-Methode von einem Kollisionsrückruf aufrufen, dann würden Sie auf dieses Problem stoßen. Create Fixture kann aufgerufen werden, wenn es nicht innerhalb der World-Step-Methode läuft.

+0

Ehrfürchtiger Mann, Sie haben Recht. Ich fand, dass ich den Welt ** obj während des Weltschritts benutze. Es ist nicht createFixture Methode, sondern World Destory Body Methode. Ich weiß nicht, warum es bei der Erstellung der Fixture hier abstürzt –