mapbox-gl-native-android icon indicating copy to clipboard operation
mapbox-gl-native-android copied to clipboard

NPE in JNI geojson converions

Open LukasPaczos opened this issue 5 years ago • 4 comments

While executing a navigation example I run into:

2020-01-18 18:50:16.076 18929-18929/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2020-01-18 18:50:16.076 18929-18929/? A/DEBUG: Build fingerprint: 'google/taimen/taimen:10/QQ1A.191205.008/5974827:user/release-keys'
2020-01-18 18:50:16.076 18929-18929/? A/DEBUG: Revision: 'rev_10'
2020-01-18 18:50:16.076 18929-18929/? A/DEBUG: ABI: 'arm64'
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG: Timestamp: 2020-01-18 16:50:16+0100
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG: pid: 17218, tid: 17359, name: Worker 1  >>> com.mapbox.logistics_example <<<
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG: uid: 10695
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG: signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG: Abort message: 'JNI DETECTED ERROR IN APPLICATION: can't call java.lang.String com.mapbox.geojson.GeoJson.type() on null object
        in call to CallObjectMethodV'
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG:     x0  0000000000000000  x1  00000000000043cf  x2  0000000000000006  x3  00000073f9b03cc0
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG:     x4  fefeff73e6189f97  x5  fefeff73e6189f97  x6  fefeff73e6189f97  x7  7f7f7f7fff7fffff
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG:     x8  00000000000000f0  x9  00000074e66c14e0  x10 0000000000000000  x11 0000000000000001
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG:     x12 00000000d196fbb8  x13 ffffffffffffffff  x14 0000000000000000  x15 ffffffffffffffff
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG:     x16 00000074e678d8c0  x17 00000074e676b060  x18 00000073d71de000  x19 00000000000000ac
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG:     x20 0000000000004342  x21 00000000000000b2  x22 00000000000043cf  x23 00000000ffffffff
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG:     x24 00000073f9b05020  x25 0000000000000012  x26 0000000000000005  x27 00000074638ba555
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG:     x28 00000074638dc012  x29 00000073f9b03d70
2020-01-18 18:50:16.078 18929-18929/? A/DEBUG:     sp  00000073f9b03ca0  lr  00000074e671f170  pc  00000074e671f1a0
2020-01-18 18:50:16.083 18929-18929/? A/DEBUG: backtrace:
2020-01-18 18:50:16.083 18929-18929/? A/DEBUG:       #00 pc 00000000000821a0  /apex/com.android.runtime/lib64/bionic/libc.so (abort+176) (BuildId: b58d049709674405423a8d8de1a37f56)
2020-01-18 18:50:16.083 18929-18929/? A/DEBUG:       #01 pc 00000000004b9224  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+2172) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
2020-01-18 18:50:16.083 18929-18929/? A/DEBUG:       #02 pc 000000000000c650  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608) (BuildId: c3c47739a59353da1b74002a20814c24)
2020-01-18 18:50:16.083 18929-18929/? A/DEBUG:       #03 pc 0000000000377c5c  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1604) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
2020-01-18 18:50:16.083 18929-18929/? A/DEBUG:       #04 pc 0000000000377e1c  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+108) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
2020-01-18 18:50:16.083 18929-18929/? A/DEBUG:       #05 pc 000000000036a1e0  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...)+136) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #06 pc 000000000036d730  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckMethodAndSig(art::ScopedObjectAccess&, _jobject*, _jclass*, _jmethodID*, art::Primitive::Type, art::InvokeType)+1384) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #07 pc 000000000036c020  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType)+736) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #08 pc 0000000000359bb0  /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallObjectMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+72) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #09 pc 000000000008936c  /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #10 pc 000000000026f110  /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #11 pc 0000000000297c9c  /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #12 pc 000000000029637c  /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #13 pc 0000000000121fec  /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #14 pc 0000000000259a38  /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #15 pc 00000000000e2364  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36) (BuildId: b58d049709674405423a8d8de1a37f56)
2020-01-18 18:50:16.084 18929-18929/? A/DEBUG:       #16 pc 0000000000083d98  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: b58d049709674405423a8d8de1a37f56)

on Maps version 8.5.2.

@pengdev I know you had no issues symbolicating the traces on your machine (I'm unable to do it) - could you try with the above tombstone to give us a clear stack trace? I'm going to guess that Navigation SDK is possibly is passing a null feature from somewhere, but if we have the stack, we can narrow down the investigation, or maybe patch up the Maps SDK.

/cc @mapbox/navigation-android

LukasPaczos avatar Jan 18 '20 16:01 LukasPaczos

@LukasPaczos Here it is:

********** Crash dump: **********
Build fingerprint: 'google/taimen/taimen:10/QQ1A.191205.008/5974827:user/release-keys'
Abort message: 'JNI DETECTED ERROR IN APPLICATION: can't call java.lang.String com.mapbox.geojson.GeoJson.type() on null object
#00 0x00000000000821a0 /apex/com.android.runtime/lib64/bionic/libc.so (abort+176) (BuildId: b58d049709674405423a8d8de1a37f56)
#01 0x00000000004b9224 /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+2172) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
#02 0x000000000000c650 /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608) (BuildId: c3c47739a59353da1b74002a20814c24)
#03 0x0000000000377c5c /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1604) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
#04 0x0000000000377e1c /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+108) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
#05 0x000000000036a1e0 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...)+136) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
#06 0x000000000036d730 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckMethodAndSig(art::ScopedObjectAccess&, _jobject*, _jclass*, _jmethodID*, art::Primitive::Type, art::InvokeType)+1384) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
#07 0x000000000036c020 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType)+736) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
#08 0x0000000000359bb0 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallObjectMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+72) (BuildId: a2d27163b21dccb407d00dc2f85709a8)
#09 0x000000000008936c /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
                                                                                                                  _JNIEnv::CallObjectMethod(_jobject*, _jmethodID*, ...)
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/jni.h:618:145
#10 0x000000000026f110 /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
                                                                                                                  std::__ndk1::enable_if<!(std::is_void<jni::jobject*>::value), jni::jobject*>::type jni::CallMethod<jni::jobject*>(_JNIEnv&, jni::jobject*, _jmethodID&)
                                                                                                                  /src/vendor/mapbox-gl-native/next/vendor/mapbox-base/mapbox/jni.hpp/include/jni/functions.hpp:271:21
                                                                                                                  std::__ndk1::enable_if<((!(IsPrimitive<jni::Object<jni::StringTag> >::value)) && (!(std::is_void<jni::Object<jni::StringTag> >::value))) && (Conjunction<>::value), jni::Unique<jni::Object<jni::StringTag>, jni::DefaultRefDeleter<&(_JNIEnv::DeleteLocalRef(_jobject*))> > >::type jni::Object<mbgl::android::geojson::Geometry>::Call<jni::Object<jni::StringTag> >(_JNIEnv&, jni::Method<mbgl::android::geojson::Geometry, jni::Object<jni::StringTag> ()> const&) const
                                                                                                                  /src/vendor/mapbox-gl-native/next/vendor/mapbox-base/mapbox/jni.hpp/include/jni/object.hpp:109:0
                                                                                                                  mbgl::android::geojson::Geometry::getType(_JNIEnv&, jni::Object<mbgl::android::geojson::Geometry> const&)
                                                                                                                  /src/vendor/mapbox-gl-native/platform/android/src/geojson/geometry.cpp:88:0
                                                                                                                  mbgl::android::geojson::Geometry::convert(_JNIEnv&, jni::Object<mbgl::android::geojson::Geometry> const&)
                                                                                                                  /src/vendor/mapbox-gl-native/platform/android/src/geojson/geometry.cpp:65:0
#11 0x0000000000297c9c /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
                                                                                                                  void mbgl::android::FeatureConverter::convertObject<mbgl::android::geojson::Geometry>(std::__ndk1::shared_ptr<jni::Unique<jni::Object<mbgl::android::geojson::Geometry>, jni::EnvAttachingDeleter<&(_JNIEnv::DeleteGlobalRef(_jobject*))> > >, mbgl::ActorRef<std::__ndk1::function<void (mapbox::util::variant<mapbox::geometry::geometry<double, std::__ndk1::vector>, mapbox::feature::feature<double>, mapbox::feature::feature_collection<double, std::__ndk1::vector> >)> >)
                                                                                                                  /src/vendor/mapbox-gl-native/platform/android/src/style/sources/geojson_source.cpp:256:25
#12 0x000000000029637c /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
                                                                                                                  void mbgl::MessageImpl<mbgl::android::FeatureConverter, void (mbgl::android::FeatureConverter::*)(std::__ndk1::shared_ptr<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, mbgl::ActorRef<std::__ndk1::function<void (mapbox::util::variant<mapbox::geometry::geometry<double, std::__ndk1::vector>, mapbox::feature::feature<double>, mapbox::feature::feature_collection<double, std::__ndk1::vector> >)> >), std::__ndk1::tuple<std::__ndk1::shared_ptr<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, mbgl::ActorRef<std::__ndk1::function<void (mapbox::util::variant<mapbox::geometry::geometry<double, std::__ndk1::vector>, mapbox::feature::feature<double>, mapbox::feature::feature_collection<double, std::__ndk1::vector> >)> > > >::invoke<0ul, 1ul>(std::__ndk1::integer_sequence<unsigned long, 0ul, 1ul>)
                                                                                                                  /src/vendor/mapbox-gl-native/next/../include/mbgl/actor/message.hpp:34:9
                                                                                                                  mbgl::MessageImpl<mbgl::android::FeatureConverter, void (mbgl::android::FeatureConverter::*)(std::__ndk1::shared_ptr<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, mbgl::ActorRef<std::__ndk1::function<void (mapbox::util::variant<mapbox::geometry::geometry<double, std::__ndk1::vector>, mapbox::feature::feature<double>, mapbox::feature::feature_collection<double, std::__ndk1::vector> >)> >), std::__ndk1::tuple<std::__ndk1::shared_ptr<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, mbgl::ActorRef<std::__ndk1::function<void (mapbox::util::variant<mapbox::geometry::geometry<double, std::__ndk1::vector>, mapbox::feature::feature<double>, mapbox::feature::feature_collection<double, std::__ndk1::vector> >)> > > >::operator()()
                                                                                                                  /src/vendor/mapbox-gl-native/next/../include/mbgl/actor/message.hpp:29:0
#13 0x0000000000121fec /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
                                                                                                                  mbgl::Mailbox::receive()
                                                                                                                  /src/vendor/mapbox-gl-native/src/mbgl/actor/mailbox.cpp:84:5
                                                                                                                  mbgl::Mailbox::maybeReceive(std::__ndk1::weak_ptr<mbgl::Mailbox>)
                                                                                                                  /src/vendor/mapbox-gl-native/src/mbgl/actor/mailbox.cpp:94:0
                                                                                                                  mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0::operator()() const
                                                                                                                  /src/vendor/mapbox-gl-native/src/mbgl/actor/mailbox.cpp:100:0
                                                                                                                  decltype(std::__ndk1::forward<mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0&>(fp)()) std::__ndk1::__invoke<mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0&>(mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0&)
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/type_traits:4353:0
                                                                                                                  void std::__ndk1::__invoke_void_return_wrapper<void>::__call<mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0&>(mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0&)
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/__functional_base:349:0
                                                                                                                  std::__ndk1::__function::__alloc_func<mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0, std::__ndk1::allocator<mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0>, void ()>::operator()()
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/functional:1527:0
                                                                                                                  std::__ndk1::__function::__func<mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0, std::__ndk1::allocator<mbgl::Mailbox::makeClosure(std::__ndk1::weak_ptr<mbgl::Mailbox>)::$_0>, void ()>::operator()()
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/functional:1651:0
#14 0x0000000000259a38 /data/app/com.mapbox.logistics_example-7bJCOhLgxjuKSJ-YgqHVXQ==/lib/arm64/libmapbox-gl.so (BuildId: 6fe1e2a2391d93dfcd25b63e1ab21bbd1db9246c)
                                                                                                                  std::__ndk1::__function::__value_func<void ()>::operator()() const
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/functional:1799:16
                                                                                                                  std::__ndk1::function<void ()>::operator()() const
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/functional:2347:0
                                                                                                                  mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0::operator()() const
                                                                                                                  /src/vendor/mapbox-gl-native/src/mbgl/util/thread_pool.cpp:37:0
                                                                                                                  decltype(std::__ndk1::forward<mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0>(fp)()) std::__ndk1::__invoke<mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0>(mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0&&)
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/type_traits:4353:0
                                                                                                                  void std::__ndk1::__thread_execute<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0>(std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0>&, std::__ndk1::__tuple_indices<>)
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/thread:342:0
                                                                                                                  void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, mbgl::ThreadedSchedulerBase::makeSchedulerThread(unsigned long)::$_0> >(void*)
                                                                                                                  /android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/thread:352:0
#15 0x00000000000e2364 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36) (BuildId: b58d049709674405423a8d8de1a37f56)
#16 0x0000000000083d98 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: b58d049709674405423a8d8de1a37f56)

pengdev avatar Jan 18 '20 16:01 pengdev

Awesome, thank you @pengdev!

LukasPaczos avatar Jan 18 '20 16:01 LukasPaczos

I was able to narrow it down and the Navigation SDK was indeed passing a null geometry. To make the usability of GeoJsonSource better, would we like to annotate with @NonNull or rather null-check the geometries to not break kotlin builds?

LukasPaczos avatar Jan 18 '20 16:01 LukasPaczos

This issue has been automatically detected as stale because it has not had recent activity and will be archived. Thank you for your contributions.

stale[bot] avatar Jul 18 '20 07:07 stale[bot]