Start a new topic

Random ReferenceTable overflow crash on Android

Random ReferenceTable overflow crash on Android


Hello,

We're having some random crashes using the ArchitectView (Wikitude SDK 1.1.1) on the Milestone and Nexus S devices. Unfortunately no direct steps to reproduce but here is the log output:

 

10-16 12:29:55.264: W/dalvikvm(2769): ReferenceTable overflow (max=512)

10-16 12:29:55.264: W/dalvikvm(2769): Last 10 entries in JNI local reference table:

10-16 12:29:55.264: W/dalvikvm(2769):   502: 0x458e0150 cls=Ljava/lang/String; (28 bytes)

10-16 12:29:55.264: W/dalvikvm(2769):   503: 0x4593e3f0 cls=Ljava/lang/String; (28 bytes)

10-16 12:29:55.264: W/dalvikvm(2769):   504: 0x45909398 cls=Ljava/lang/String; (28 bytes)

10-16 12:29:55.272: W/dalvikvm(2769):   505: 0x45908c30 cls=Ljava/lang/String; (28 bytes)

10-16 12:29:55.272: W/dalvikvm(2769):   506: 0x45908c50 cls=Ljava/lang/String; (28 bytes)

10-16 12:29:55.272: W/dalvikvm(2769):   507: 0x45908488 cls=Ljava/lang/String; (28 bytes)

10-16 12:29:55.272: W/dalvikvm(2769):   508: 0x45907f28 cls=Ljava/lang/String; (28 bytes)

10-16 12:29:55.272: W/dalvikvm(2769):   509: 0x459064a8 cls=Ljava/lang/String; (28 bytes)

10-16 12:29:55.272: W/dalvikvm(2769):   510: 0x45924bf8 cls=Lcom/wikitude/architect/LabelInterface; (12 bytes)

10-16 12:29:55.272: W/dalvikvm(2769):   511: 0x459064c8 cls=Ljava/lang/String; (28 bytes)

10-16 12:29:55.272: W/dalvikvm(2769): JNI local reference table summary (512 entries):

10-16 12:29:55.272: W/dalvikvm(2769):   495 of Ljava/lang/String; 28B (495 unique)

10-16 12:29:55.272: W/dalvikvm(2769):    16 of Ljava/lang/String; 36B (16 unique)

10-16 12:29:55.272: W/dalvikvm(2769):     1 of Lcom/wikitude/architect/LabelInterface; 12B

10-16 12:29:55.272: W/dalvikvm(2769): Memory held directly by tracked refs is 14448 bytes

10-16 12:29:55.280: E/dalvikvm(2769): Failed adding to JNI local ref table (has 512 entries)

10-16 12:29:55.280: I/dalvikvm(2769): "WebViewCoreThread" prio=5 tid=11 RUNNABLE

10-16 12:29:55.280: I/dalvikvm(2769):   | group="main" sCount=0 dsCount=0 s=N obj=0x458efd38 self=0x1214b0

10-16 12:29:55.280: I/dalvikvm(2769):   | sysTid=2827 nice=0 sched=0/0 cgrp=default handle=1185264

10-16 12:29:55.303: I/dalvikvm(2769):   at android.webkit.BrowserFrame.stringByEvaluatingJavaScriptFromString(Native Method)

10-16 12:29:55.342: I/dalvikvm(2769):   at android.webkit.BrowserFrame.loadUrl(BrowserFrame.java:245)

10-16 12:29:55.342: I/dalvikvm(2769):   at android.webkit.WebViewCore.loadUrl(WebViewCore.java:1563)

10-16 12:29:55.342: I/dalvikvm(2769):   at android.webkit.WebViewCore.access$1400(WebViewCore.java:52)

10-16 12:29:55.342: I/dalvikvm(2769):   at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:949)

10-16 12:29:55.342: I/dalvikvm(2769):   at android.os.Handler.dispatchMessage(Handler.java:99)

10-16 12:29:55.381: I/dalvikvm(2769):   at android.os.Looper.loop(Looper.java:143)

10-16 12:29:55.381: I/dalvikvm(2769):   at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:622)

10-16 12:29:55.381: I/dalvikvm(2769):   at java.lang.Thread.run(Thread.java:1096)

 

Any thoughts on how we can prevent that from happening?

 

Hello! 

Especially on older devices like the milestone, the number of Architect objects in a world that can be shown is restricted and can vary depending on the current memory usage. What you can do on those devices is restrict the number of currently shown objects. Also it helps if you delete ARchitect objects as soon as you don't need them anymore in your ARchitect world.

Hope that helps

Markus

Hi Markus,

We're already limiting the objects number and destroy the old objects on refresh, so it looks like there's not much we can do here.
Login or Signup to post a comment