-
-
Notifications
You must be signed in to change notification settings - Fork 276
Description
I'm trying to build android NativeActivity application with ldc. And I have strange errors with GC
-mtriple=i686-none-linux-android
I/NativeActivity( 2948): _nativeInit
D/NativeActivity( 2948): _jni_nativeInit
D/NativeActivity( 2948): _jni_nativeInit 32 bit
D/NativeActivity( 2948): _android_app_thread
D/NativeActivity( 2948): core.runtime.rt_init
D/NativeActivity( 2948): initSections
D/NativeActivity( 2948): initSections LDC mbeg = 0xa16f96f0, mend = 0xa16faa40
D/NativeActivity( 2948): _jni_nativeInit ok
D/NativeActivity( 2948): initSections LDC pbeg = 0xa16a8a64, pend = 0xb7714658
D/NativeActivity( 2948): initSections LDC pbeg = 0xa16a8a64, pend = 0xb7714658
I/NativeActivity( 2948): _nativeInit ok
I/NativeActivity( 2948): WebViewNativeActivity.onCreate ok
D/NativeActivity( 2948): initTLSRanges
here i'm trying to allocate 25 bytes
char[1024] buf;
....
return buf[0 .. len].idup; // len = 25
on idup it crashes
D/NativeActivity( 2948): _d_newarrayU(length = x19, size = 1)
D/NativeActivity( 2948): __arrayAlloc size = 25
D/NativeActivity( 2948): __arrayAlloc typeInfoSize = 0
D/NativeActivity( 2948): __arrayAlloc padSize = 1
D/NativeActivity( 2948): __arrayAlloc padded_size = 26
D/NativeActivity( 2948): __arrayAlloc GC.qalloc padded_size = 26
D/NativeActivity( 2948): GC.qalloc sz = 26
D/NativeActivity( 2948): gc/proxy/gc_qalloc sz = 26
D/NativeActivity( 2948): gc/impl/proto/gc qalloc 26
D/NativeActivity( 2948): gc_init()
D/NativeActivity( 2948): gc_init() !isInstanceInit
D/NativeActivity( 2948): createGCInstance conservative
D/NativeActivity( 2948): createGCInstance entry.name = conservative ok
D/NativeActivity( 2948): gc/impl/conservative/gc private GC initialize()
D/NativeActivity( 2948): gc/impl/conservative/gc private GC initialize() 1
D/NativeActivity( 2948): gc/impl/conservative/gc private GC initialize() ok
D/NativeActivity( 2948): 0xb3d93f80.Gcx::addRange(0xa16a8a64, 0xb7714658)
D/NativeActivity( 2948): gc/impl/proto/gc qalloc 26
D/NativeActivity( 2948): gc/proxy/gc_qalloc sz = 26
D/NativeActivity( 2948): conservative/gc/qalloc 26
D/NativeActivity( 2948): GC::malloc(gcx = 0xb3d93f80, size = 26 bits = a, ti = TypeInfo_a)
D/NativeActivity( 2948): Gcx.fullcollect()
D/NativeActivity( 2948): startScanThreads: 1 threads per CPU
D/NativeActivity( 2948): preparing mark.
D/NativeActivity( 2948): collect stacks.
D/NativeActivity( 2948): collectRoots
D/NativeActivity( 2948): collectRoots pbot = 0xa0ff4050, ptop = 0xa0ff9000
D/NativeActivity( 2948): collectRoots minAddr = 0x0, memSize = 0
D/NativeActivity( 2948): scanTLSRanges
D/NativeActivity( 2948): collectRoots
D/NativeActivity( 2948): collectRoots pbot = 0xb3fc8100, ptop = 0xb3fc81f8
D/NativeActivity( 2948): collectRoots minAddr = 0x0, memSize = 0
D/NativeActivity( 2948): collect roots[]
D/NativeActivity( 2948): collect ranges[]
D/NativeActivity( 2948): 0xa16a8a64 .. 0xb7714658
D/NativeActivity( 2948): collectRoots
D/NativeActivity( 2948): collectRoots pbot = 0xa16a8a64, ptop = 0xb7714658
D/NativeActivity( 2948): collectRoots minAddr = 0x0, memSize = 0
--------- beginning of crash
and when I try to run with -mtriple=aarch64-none-linux-android the result is more strange:
the size of memory 25 changed to 26 (it is ok), bun then it changed to 10???, and then size = -309990416 (in function conservative/gc/qalloc). Why???
D/NativeActivity: _d_newarrayU(length = x19, size = 1)
D/NativeActivity: __arrayAlloc size = 25
D/NativeActivity: __arrayAlloc typeInfoSize = 0
D/NativeActivity: __arrayAlloc padSize = 1
D/NativeActivity: __arrayAlloc padded_size = 26
D/NativeActivity: __arrayAlloc GC.qalloc padded_size = 26
D/NativeActivity: GC.qalloc sz = 26
D/NativeActivity: gc/proxy/gc_qalloc sz = 26
D/NativeActivity: gc/impl/proto/gc qalloc 10
D/NativeActivity: gc_init()
D/NativeActivity: gc_init() !isInstanceInit
D/NativeActivity: createGCInstance conservative
D/NativeActivity: createGCInstance entry.name = conservative ok
D/NativeActivity: gc/impl/conservative/gc private GC initialize()
D/NativeActivity: gc/impl/conservative/gc private GC initialize() ok
D/NativeActivity: gc/impl/proto/gc qalloc 10
D/NativeActivity: gc/proxy/gc_qalloc sz = 10
D/NativeActivity: conservative/gc/qalloc -309990416, _add = -320560320
With -mtriple=armv7-none-linux-androideabi all works good without errors.
If I turn off the GC by adding in code
extern(C) pragma(mangle, "rt_options") __gshared string[] rt_options = [ "gcopt=disable:1" ];
all works good on all android targets.
I test it in Android studio emulator, Android 7.0, API 24