GithubHelp home page GithubHelp logo

Comments (9)

lgeek avatar lgeek commented on May 23, 2024

Hi,

That sounds like an issue specific to your application. Any chance you could share the executable with us so we can debug it?

Thanks

from mambo.

whcjb avatar whcjb commented on May 23, 2024

hi,lgeek. it's not the application's error. the application runs well on android or linux. but it will hang when use dbm mt on android. it runs well on arm-linux using dbm mt, mt is the executable file name.

The application code is simple, just create two threads and use pthread_join to wait. the code here.

#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
void print_message_func(void *ptr);

int main()
{
int tmp1,tmp2;
void *retival;
pthread_t thread1;
pthread_t thread2;
char *message1 = "thread1";
char *message2 = "thread2";

int ret_thread1,ret_thread2;
ret_thread1 = pthread_create(&thread1,NULL,(void *)&print_message_func,(void *)message1);
ret_thread2 = pthread_create(&thread2,NULL,(void *)&print_message_func,(void *)message2);
tmp1 = pthread_join(thread1,&retival);
tmp2 = pthread_join(thread2,&retival);
}

void print_message_func(void *ptr)
{
    int i;
    sleep(10);
}

i use cross-compile gcc aaarch64-linux-android-gcc -o mt mt.c to compile the multi-threads appication mt.c, the ndk version is 20.
after several days' error location, i have found that when use strace to ngrab the syscalls strace -f dbm mt on an android shell terminal, the error section of the log is this

---------------------------------------------------------android-strace partion
[pid 4995] munmap(0x7bfd5b0000, 16777216) = 0
[pid 4995] munmap(0x7bfd429000, 1601536) = 0
[pid 4995] munmap(0x7bfe5b0000, 26034176) = 0
[pid 4995] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, NULL) = 0
[pid 4995] munmap(0x7c00ded000, 20480) = 0
[pid 4995] set_tid_address(0) = 4995
[pid 4995] rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1 RT_2 RT_3], ~[KILL STOP RT_1 RT_2 RT_3 RT_4 RT_5], 8) = 0
[pid 4995] munmap(0x7c00df2000, 20480) = 0
[pid 4995] munmap(0x7c00df7000, 28672) = 0
[pid 4995] exit(0) = ?
[pid 4995] +++ exited with 0 +++
mmap(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7c00df7000
mprotect(0x7c00df7000, 4096, PROT_NONE) = 0
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7c00df7000, 4096, "thread stack guard") = 0
mmap(NULL, 20480, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7c00df2000
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7c00df2000, 20480, "bionic TLS guard") = 0
mprotect(0x7c00df3000, 12288, PROT_READ|PROT_WRITE) = 0
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7c00df3000, 12288, "bionic TLS") = 0
clone(./strace: Process 4996 attached
<unfinished ...>
[pid 4996] futex(0x7c00dfd570, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid 4993] <... clone resumed> child_stack=0x7c00dfd4e0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7c00dfd500, tls=0x7c00dfd588, child_tidptr=0x7c00dfd500) = 4996
[pid 4993] sched_getscheduler(0) = 0 (SCHED_OTHER)
[pid 4993] futex(0x7c00dfd570, FUTEX_WAKE_PRIVATE, 1) = 1
[pid 4996] <... futex resumed> ) = 0
[pid 4996] mmap(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7c00ded000
[pid 4996] mprotect(0x7c00ded000, 4096, PROT_NONE) = 0
[pid 4996] sigaltstack({ss_sp=0x7c00dee000, ss_flags=0, ss_size=16384}, NULL) = 0
[pid 4996] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7c00dee000, 16384, "thread signal stack") = 0
[pid 4996] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7c00ded000, 4096, "thread signal stack guard") = 0
[pid 4996] gettid() = 4996
[pid 4996] set_tid_address(0x7bfd424d60) = 4996
[pid 4996] futex(0xa8099640, FUTEX_WAIT_BITSET_PRIVATE, 16386, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid 4993] <... write resumed> ) = 53
[pid 4993] futex(0xa8099640, FUTEX_WAKE_PRIVATE, 1) = 1
[pid 4996] <... futex resumed> ) = 0
[pid 4993] write(1, "syscall pre syscall number: 98 "..., 56 <unfinished ...>
[pid 4996] futex(0xa8099640, FUTEX_WAIT_BITSET_PRIVATE, 16386, NULL, FUTEX_BITSET_MATCH_ANYsyscall pre syscall number: 98 thread_data: 0x31a5000
<unfinished ...>
[pid 4993] <... write resumed> ) = 56
[pid 4993] futex(0xa8099640, FUTEX_WAKE_PRIVATE, 1) = 1
[pid 4996] <... futex resumed> ) = 0
[pid 4993] futex(0x7bfd424dd8, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 4993] futex(0xa8099640, FUTEX_WAIT_BITSET_PRIVATE, 16386, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid 4996] <... write resumed> ) = 57
[pid 4996] futex(0xa8099640, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 4996] futex(0x7bfd424dd8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Try again)
[pid 4993] <... futex resumed> ) = -1 EAGAIN (Try again)
[pid 4993] futex(0xa8099640, FUTEX_WAIT_BITSET_PRIVATE, 16386, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid 4996] futex(0xa8099640, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 4993] <... futex resumed> ) = 0
[pid 4996] <... futex resumed> ) = 1
[pid 4996] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7c00dc4000
[pid 4996] futex(0xa8099640, FUTEX_WAIT_BITSET_PRIVATE, 16386, NULL, FUTEX_BITSET_MATCH_ANYsyscall pre syscall number: 98 thread_data: 0x31a5000
<unfinished ...>
[pid 4993] <... write resumed> ) = 56
[pid 4993] futex(0xa8099640, FUTEX_WAKE_PRIVATE, 1) = 1
[pid 4996] <... futex resumed> ) = 0
[pid 4993] futex(0x7bfff7cd60, FUTEX_WAIT, 4995, NULL <unfinished ...>
[pid 4996] futex(0xa8099640, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 4996] mprotect(0x7c00dc4000, 4096, PROT_NONE) = 0
[pid 4996] sigaltstack({ss_sp=0x7c00dc5000, ss_flags=0, ss_size=32768}, NULL) = 0
[pid 4996] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7c00dc5000, 32768, "thread signal stack") = 0
[pid 4996] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7bfee84000
[pid 4996] mprotect(0x7bff8bc000, 8192, PROT_READ|PROT_WRITE) = 0
[pid 4996] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, NULL) = 0
[pid 4996] munmap(0x7c00dc4000, 36864) = 0
[pid 4996] rt_sigprocmask(SIG_BLOCK, ~[RT_1 RT_2 RT_3 RT_4 RT_5], [RTMIN], 8) = 0
[pid 4996] munmap(0x7bfee84000, 16777216) = 0
[pid 4996] write(1, "Exit*** thread exit, thread_data"..., 44Exit*** thread exit, thread_data 0xfba58000
) = 44
[pid 4996] munmap(0x7bfaa58000, 16777216) = 0
[pid 4996] munmap(0x7bfa8d1000, 1601536) = 0
[pid 4996] munmap(0x7bfba58000, 26034176) = 0
[pid 4996] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, NULL) = 0
[pid 4996] munmap(0x7c00ded000, 20480) = 0
[pid 4996] set_tid_address(0) = 4996
[pid 4996] rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1 RT_2 RT_3], ~[KILL STOP RT_1 RT_2 RT_3 RT_4 RT_5], 8) = 0
[pid 4996] munmap(0x7c00df2000, 20480) = 0
[pid 4996] munmap(0x7c00df7000, 28672) = 0
[pid 4996] exit(0) = ?
[pid 4996] +++ exited with 0 +++
---------------------------------------------------------------------------android-strace-partion

from the log, i found that when the tid 4995 exit, the thread 4993 give a syscall [pid 4993] futex(0x7bfff7cd60, FUTEX_WAIT, 4995, NULL <unfinished ...>
and it's the last record of pid 4993, so i guess the tid 4993 isn's noticed when 4995 exiting, the 4993 pending all the time.

the same application compiled runing in arm-linux is well with no error, dbm mt, the syscall strace is like this.

------------------------------------------------------------------------------------------arm-linux-strace
[pid 24801] futex(0xffff963312c0, FUTEX_WAIT, 24803, NULL <unfinished ...>
[pid 24803] madvise(0xffff95b31000, 8253440, MADV_DONTNEED) = 0
[pid 24803] write(1, "Exit*** thread exit\n", 20Exit*** thread exit
) = 20
[pid 24803] munmap(0xffff928b5000, 16777216) = 0
[pid 24803] munmap(0xffff940d6000, 1601536) = 0
[pid 24803] munmap(0xffff9425d000, 26034176) = 0
[pid 24803] exit(0) = ?
-----------------------------------------------------------------------------------------------arm-linux-strace

sorry that the binary file can't be uploaded, but you can compile the .c file, it;s the same.
i have no idea how to debug next, it's good on arm-linux, but the error above on android.
Thanks a lot.

from mambo.

whcjb avatar whcjb commented on May 23, 2024

it is the same error when run dbm geekbench_aarch64, the strace is the same that the main thread wait for the first child thread to exit which has already exited.
the test is on android.

from mambo.

whcjb avatar whcjb commented on May 23, 2024

i tested that the dbm runs well when comment the line
tmp1 = pthread_join(thread1,&retival);


prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba7d000, 12288, "bionic TLS") = 0
clone(child_stack=0x76cba874e0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x76cba87500, tls=0x76cba87588, child_tidptr=0x76cba87500) = 13932
./strace: Process 13932 attached
[pid 13931] sched_getscheduler(0 <unfinished ...>
[pid 13932] futex(0x76cba87570, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid 13931] <... sched_getscheduler resumed> ) = 0 (SCHED_OTHER)
[pid 13931] futex(0x76cba87570, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 13932] <... futex resumed> ) = -1 EAGAIN (Try again)
[pid 13932] mmap(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76cba77000
[pid 13932] mprotect(0x76cba77000, 4096, PROT_NONE) = 0
[pid 13932] sigaltstack({ss_sp=0x76cba78000, ss_flags=0, ss_size=16384}, NULL) = 0
[pid 13932] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba78000, 16384, "thread signal stack" <unfinished ...>
[pid 13931] <... futex resumed> ) = 0
[pid 13932] <... prctl resumed> ) = 0
[pid 13932] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba77000, 4096, "thread signal stack guard") = 0
[pid 13932] gettid() = 13932
[pid 13932] set_tid_address(0x76cac3fd60) = 13932
[pid 13932] futex(0x76cac3fdd8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY <unfinished ...>
[pid 13931] futex(0x76cac3fdd8, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 13932] <... futex resumed> ) = -1 EAGAIN (Try again)
[pid 13931] <... futex resumed> ) = 0
[pid 13932] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 <unfinished ...>
[pid 13931] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 <unfinished ...>
[pid 13932] <... mmap resumed> ) = 0x76cba6e000
[pid 13932] mprotect(0x76cba6e000, 4096, PROT_NONE) = 0
[pid 13932] sigaltstack({ss_sp=0x76cba6f000, ss_flags=0, ss_size=32768}, NULL) = 0
[pid 13932] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba6f000, 32768, "thread signal stack" <unfinished ...>
[pid 13931] <... mmap resumed> ) = 0x76c7fef000
[pid 13931] mprotect(0x76c7ff0000, 1028096, PROT_READ|PROT_WRITE) = 0
[pid 13931] rt_sigprocmask(SIG_BLOCK, ~[RT_1 RT_2 RT_3 RT_4 RT_5], [RTMIN], 8) = 0
[pid 13931] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
[pid 13932] <... prctl resumed> ) = 0
[pid 13931] mmap(NULL, 26033312, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 <unfinished ...>
[pid 13932] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 <unfinished ...>
[pid 13931] <... mmap resumed> ) = 0x76c671b000
[pid 13932] <... mmap resumed> ) = 0x76c571b000
[pid 13931] mmap(NULL, 16777216, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76c471b000
[pid 13932] mprotect(0x76c5d44000, 8192, PROT_READ|PROT_WRITE) = 0
[pid 13931] mmap(NULL, 1600016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76c4594000
[pid 13932] fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0
[pid 13932] mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76c4394000
[pid 13932] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76c4394000, 2097152, "libc_malloc") = 0
[pid 13932] munmap(0x76c4394000, 2097152) = 0
[pid 13932] mmap(NULL, 4190208, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76c4195000
[pid 13932] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76c4195000, 4190208, "libc_malloc") = 0
[pid 13932] munmap(0x76c4195000, 438272) = 0
[pid 13932] munmap(0x76c4400000, 1654784) = 0
[pid 13932] mprotect(0x76c4200000, 4096, PROT_NONE) = 0
[pid 13932] mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76c4000000
[pid 13932] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76c4000000, 2097152, "libc_malloc") = 0
[pid 13932] ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
[pid 13932] write(1, "sleep..........................."..., 64sleep..........................................................
) = 64
[pid 13932] nanosleep({tv_sec=10, tv_nsec=0}, <unfinished ...>
[pid 13931] mmap(NULL, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x76cba67000
[pid 13931] mprotect(0x76cba67000, 4096, PROT_NONE) = 0
[pid 13931] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba67000, 4096, "thread stack guard") = 0
[pid 13931] mmap(NULL, 20480, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76cba62000
[pid 13931] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba62000, 20480, "bionic TLS guard") = 0
[pid 13931] mprotect(0x76cba63000, 12288, PROT_READ|PROT_WRITE) = 0
[pid 13931] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba63000, 12288, "bionic TLS") = 0
[pid 13931] clone(child_stack=0x76cba6d4e0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x76cba6d500, tls=0x76cba6d588, child_tidptr=0x76cba6d500) = 13933
./strace: Process 13933 attached
[pid 13931] sched_getscheduler(0) = 0 (SCHED_OTHER)
[pid 13933] mmap(NULL, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76cba5d000
[pid 13933] mprotect(0x76cba5d000, 4096, PROT_NONE) = 0
[pid 13933] sigaltstack({ss_sp=0x76cba5e000, ss_flags=0, ss_size=16384}, NULL) = 0
[pid 13933] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba5e000, 16384, "thread signal stack") = 0
[pid 13933] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba5d000, 4096, "thread signal stack guard") = 0
[pid 13933] gettid() = 13933
[pid 13933] set_tid_address(0x76c80e7d60) = 13933
[pid 13933] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 <unfinished ...>
[pid 13931] mprotect(0x76cfc26000, 4096, PROT_READ|PROT_WRITE <unfinished ...>
[pid 13933] <... mmap resumed> ) = 0x76cba54000
[pid 13931] <... mprotect resumed> ) = 0
[pid 13931] mprotect(0x76cfc26000, 4096, PROT_READ <unfinished ...>
[pid 13933] mprotect(0x76cba54000, 4096, PROT_NONE <unfinished ...>
[pid 13931] <... mprotect resumed> ) = 0
[pid 13933] <... mprotect resumed> ) = 0
[pid 13931] mprotect(0x76cfc26000, 4096, PROT_READ|PROT_WRITE <unfinished ...>
[pid 13933] sigaltstack({ss_sp=0x76cba55000, ss_flags=0, ss_size=32768}, <unfinished ...>
[pid 13931] <... mprotect resumed> ) = 0
[pid 13933] <... sigaltstack resumed> NULL) = 0
[pid 13931] mprotect(0x76cfc26000, 4096, PROT_READ <unfinished ...>
[pid 13933] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76cba55000, 32768, "thread signal stack" <unfinished ...>
[pid 13931] <... mprotect resumed> ) = 0
[pid 13933] <... prctl resumed> ) = 0
[pid 13933] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76c3000000
[pid 13931] munmap(0x76cfc26000, 4096 <unfinished ...>
[pid 13933] mprotect(0x76c36d4000, 8192, PROT_READ|PROT_WRITE) = 0
[pid 13933] write(1, "sleep..........................."..., 64 <unfinished ...>
sleep..........................................................
[pid 13931] <... munmap resumed> ) = 0
[pid 13933] <... write resumed> ) = 64
[pid 13931] write(2, "We're done; exiting with status:"..., 35 <unfinished ...>
We're done; exiting with status: 0
[pid 13933] nanosleep({tv_sec=10, tv_nsec=0}, <unfinished ...>
[pid 13931] <... write resumed> ) = 35
[pid 13931] mprotect(0x76cfdc5000, 4096, PROT_READ|PROT_WRITE) = 0
[pid 13931] mprotect(0x76cfdc5000, 4096, PROT_READ) = 0
[pid 13931] munmap(0x76cfdc5000, 4096) = 0
[pid 13931] exit_group(0) = ?
[pid 13933] <... nanosleep resumed> <unfinished ...>) = ?
[pid 13932] <... nanosleep resumed> <unfinished ...>) = ?
[pid 13933] +++ exited with 0 +++
[pid 13932] +++ exited with 0 +++
+++ exited with 0 +++


so the error come from the futex(wait), or the inconnection between the futex(wake) and futex(wait).
please help.

from mambo.

amimo avatar amimo commented on May 23, 2024

@whcjb @lgeek I have the same issue. After some investigation, I think the problem may be at this line, we can't join a thread if it is not attachable?

from mambo.

lgeek avatar lgeek commented on May 23, 2024

Thanks both of you. @amimo that makes sense, but nevertheless I can't reproduce the behavior described here on GNU/Linux. I suspect it's a difference in Android's pthreads implementation compared to glibc, I'll take a closer look.

from mambo.

lgeek avatar lgeek commented on May 23, 2024

Since MAMBO is linked statically, it will be using the standard library of the system it's compiled on, not of the host machine. This zip archive contains the master head I've built on an Arch Linux ARM system. This executable is running the example provided by @whcjb (also compiled on Arch and linked statically) correctly on an Android device.

It would be useful to know if this MAMBO binary can run @whcjb's example compiled with the Android toolchain without hanging.

from mambo.

amimo avatar amimo commented on May 23, 2024

It would be useful to know if this MAMBO binary can run @whcjb's example compiled with the Android toolchain without hanging.

This MAMBO built can exit normally running @whcjb's example compiled with the Android toolchain.

from mambo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.