question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Android: Clean mapped byte buffers fails

See original GitHub issue

On Android the clean of mapped byte buffers fails with:

Caused by: java.lang.RuntimeException: unable to unmap the mapped buffer
   at com.graphhopper.util.Helper.cleanMappedByteBuffer(Helper.java:426)
   at com.graphhopper.storage.MMapDataAccess.clean(MMapDataAccess.java:356)
   at com.graphhopper.storage.MMapDataAccess.close(MMapDataAccess.java:257)
   at com.graphhopper.storage.MMapDataAccess.close(MMapDataAccess.java:249)
   at com.graphhopper.storage.StorableProperties.close(StorableProperties.java:113)
   at com.graphhopper.storage.GraphHopperStorage.close(GraphHopperStorage.java:277)
   at com.graphhopper.GraphHopper.close(GraphHopper.java:1226)
   at com.graphhopper.android.MainActivity.onDestroy(MainActivity.java:170)
   at android.app.Activity.performDestroy(Activity.java:6881)
   at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1153)
   at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4190)
   at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4221) 
   at android.app.ActivityThread.-wrap6(ActivityThread.java) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:154) 
   at android.app.ActivityThread.main(ActivityThread.java:6119) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
Caused by: java.security.PrivilegedActionException: java.lang.NoSuchMethodException: free []
   at java.security.AccessController.doPrivileged(AccessController.java:71)
   at com.graphhopper.util.Helper.cleanMappedByteBuffer(Helper.java:370)
   at com.graphhopper.storage.MMapDataAccess.clean(MMapDataAccess.java:356) 
   at com.graphhopper.storage.MMapDataAccess.close(MMapDataAccess.java:257) 
   at com.graphhopper.storage.MMapDataAccess.close(MMapDataAccess.java:249) 
   at com.graphhopper.storage.StorableProperties.close(StorableProperties.java:113) 
   at com.graphhopper.storage.GraphHopperStorage.close(GraphHopperStorage.java:277) 
   at com.graphhopper.GraphHopper.close(GraphHopper.java:1226) 
   at com.graphhopper.android.MainActivity.onDestroy(MainActivity.java:170) 
   at android.app.Activity.performDestroy(Activity.java:6881) 
   at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1153) 
   at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4190) 
   at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4221) 
   at android.app.ActivityThread.-wrap6(ActivityThread.java) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:154) 
   at android.app.ActivityThread.main(ActivityThread.java:6119) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
Caused by: java.lang.NoSuchMethodException: free []
   at java.lang.Class.getMethod(Class.java:1981)
   at java.lang.Class.getMethod(Class.java:1637)
   at com.graphhopper.util.Helper$1.run(Helper.java:377)
   at java.security.AccessController.doPrivileged(AccessController.java:67)
   at com.graphhopper.util.Helper.cleanMappedByteBuffer(Helper.java:370) 
   at com.graphhopper.storage.MMapDataAccess.clean(MMapDataAccess.java:356) 
   at com.graphhopper.storage.MMapDataAccess.close(MMapDataAccess.java:257) 
   at com.graphhopper.storage.MMapDataAccess.close(MMapDataAccess.java:249) 
   at com.graphhopper.storage.StorableProperties.close(StorableProperties.java:113) 
   at com.graphhopper.storage.GraphHopperStorage.close(GraphHopperStorage.java:277) 
   at com.graphhopper.GraphHopper.close(GraphHopper.java:1226) 
   at com.graphhopper.android.MainActivity.onDestroy(MainActivity.java:170) 
   at android.app.Activity.performDestroy(Activity.java:6881) 
   at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1153) 
   at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4190) 
   at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4221) 
   at android.app.ActivityThread.-wrap6(ActivityThread.java) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:154) 
   at android.app.ActivityThread.main(ActivityThread.java:6119) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

As reported here.

Issue Analytics

  • State:closed
  • Created 7 years ago
  • Comments:17 (17 by maintainers)

github_iconTop GitHub Comments

1reaction
devemux86commented, Mar 13, 2017

Oh, I forgot again to change in build.gradle the repositories. So indeed with old code I see too the exception on 5.1.1, good finding! 🙂

1reaction
karussellcommented, Mar 10, 2017
Read more comments on GitHub >

github_iconTop Results From Across the Web

Unmapping or 'release' a MappedByteBuffer under Android
A mapped byte buffer and the file mapping that it represents remain valid until the buffer itself is garbage-collected. The content of a...
Read more >
MappedByteBuffer - Android Developers
Mapped byte buffers are created via the FileChannel.map method. This class extends the ByteBuffer class with operations that are specific to memory-mapped ......
Read more >
How to Fix java.lang.OufOfMemoryError: Direct Buffer Memory
2) You can use sun.misc.Cleaner class and Java reflection to call clean() method for freeing memory held by direct byte buffer. Since they...
Read more >
Buffer Object - OpenGL Wiki
Allows the user to read the buffer via mapping the buffer. Without this flag, attempting to map the buffer for reading will fail....
Read more >
Language Guide (proto3) | Protocol Buffers - Google Developers
When parsing a map from text format, parsing may fail if there are duplicate keys. If you provide a key but no value...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found