Directory.open crashes on android 6.0.1
Created by: volzhs
GDScript
extends Node2D
func _ready():
list_files_in_directory("res://")
pass
func list_files_in_directory(path):
var files = []
var dir = Directory.new()
dir.open(path) # crashes at here
dir.list_dir_begin()
while true:
var file = dir.get_next()
if file == "":
break
elif not file.begins_with("."):
files.append(file)
dir.list_dir_end()
return files
adb logs
JNI DETECTED ERROR IN APPLICATION: the return type of CallObjectMethodV does not match void org.godotengine.godot.GodotIO.dir_close(int)
in call to CallObjectMethodV
from void org.godotengine.godot.GodotLib.step()
"GLThread 159" prio=5 tid=10 Runnable
| group="main" sCount=0 dsCount=0 obj=0x12ca1c80 self=0xab5a75d8
| sysTid=17162 nice=0 cgrp=default sched=0/0 handle=0xf3bc9930
| state=R schedstat=( 178239410 64506338 389 ) utm=16 stm=1 core=1 HZ=100
| stack=0xf3ac7000-0xf3ac9000 stackSize=1038KB
| held mutexes= "mutator lock"(shared held)
native: #00 pc 00370a01 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::ArtMethod*, void*)+160)
native: #01 pc 0035006f /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+150)
native: #02 pc 0025a325 /system/lib/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+740)
native: #03 pc 0025a9fd /system/lib/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+64)
native: #04 pc 000fd241 /system/lib/libart.so (art::ScopedCheck::AbortF(char const*, ...)+32)
native: #05 pc 000fd3cf /system/lib/libart.so (art::ScopedCheck::CheckMethodAndSig(art::ScopedObjectAccess&, _jobject*, _jclass*, _jmethodID*, art::Primitive::Type, art::InvokeType)+190)
native: #06 pc 00110bff /system/lib/libart.so (art::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType)+562)
native: #07 pc 0011251b /system/lib/libart.so (art::CheckJNI::CallObjectMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+34)
native: #08 pc 00047568 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (_JNIEnv::CallObjectMethod(_jobject*, _jmethodID*, ...)+36)
native: #09 pc 00048a84 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (DirAccessJAndroid::change_dir(String)+420)
native: #10 pc 00907080 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (DirAccess::open(String const&, Error*)+80)
native: #11 pc 009b7394 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (_Directory::open(String const&)+20)
native: #12 pc 00279ebc /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (MethodBind1R<Error, String const&>::call(Object*, Variant const**, int, Variant::CallError&)+312)
native: #13 pc 008eef30 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Object::call(StringName const&, Variant const**, int, Variant::CallError&)+428)
native: #14 pc 00899584 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Variant::call(StringName const&, Variant const**, int, Variant::CallError&)+288)
native: #15 pc 00080bbc /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (GDFunction::call(GDInstance*, Variant const**, int, Variant::CallError&, GDFunction::CallState*)+5212)
native: #16 pc 0008461c /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (GDInstance::call(StringName const&, Variant const**, int, Variant::CallError&)+184)
native: #17 pc 008eee30 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Object::call(StringName const&, Variant const**, int, Variant::CallError&)+172)
native: #18 pc 00899584 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Variant::call(StringName const&, Variant const**, int, Variant::CallError&)+288)
native: #19 pc 00080bbc /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (GDFunction::call(GDInstance*, Variant const**, int, Variant::CallError&, GDFunction::CallState*)+5212)
native: #20 pc 000847f4 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (GDInstance::_ml_call_reversed(GDScript*, StringName const&, Variant const**, int)+204)
native: #21 pc 00084844 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (GDInstance::call_multilevel_reversed(StringName const&, Variant const**, int)+44)
native: #22 pc 002616a0 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Node::_notification(int)+608)
native: #23 pc 003ee320 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Node2D::_notificationv(int, bool)+112)
native: #24 pc 008ea590 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Object::notification(int, bool)+20)
native: #25 pc 00253660 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Node::_propagate_ready()+120)
native: #26 pc 0025fec4 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Node::_set_tree(SceneTree*)+56)
native: #27 pc 00289b70 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (SceneTree::init()+40)
native: #28 pc 00044974 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (OS_Android::main_loop_begin()+24)
native: #29 pc 000519b4 /data/app/org.godotengine.test-1/lib/arm/libgodot_android.so (Java_org_godotengine_godot_GodotLib_step+2516)
native: #30 pc 003c5925 /data/app/org.godotengine.test-1/oat/arm/base.odex (void org.godotengine.godot.GodotLib.step()+72)
native: #31 pc 003c8525 /data/app/org.godotengine.test-1/oat/arm/base.odex (void org.godotengine.godot.GodotView$Renderer.onDrawFrame(javax.microedition.khronos.opengles.GL10)+88)
native: #32 pc 00d69099 /data/dalvik-cache/arm/system@framework@boot.oat (???)
at org.godotengine.godot.GodotLib.step(Native method)
at org.godotengine.godot.GodotView$Renderer.onDrawFrame(GodotView.java:642)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1535)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
I compiled android templates with android-ndk-r10e
.
I don't know why, but it works on android 4.4.
This works with Godot 1.1 stable compiled with with android-ndk-r10d
on both android 4.4 and 6.0.1.