-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
FATAL: attempted to create non-posix thread; clone_flags == 00004111 #16
Comments
This comment was marked as duplicate.
This comment was marked as duplicate.
Which distribution do you use ? Debian 11? The problem seems to be closely related to the operating system. |
No useing termux |
And also facing problem when i creat ExaGear.obb ExaGear app opening but when i run the application.. not happen anything.. help appreciate thank you |
How can I install Ubuntu can you help me? |
Only working debian i386 version? Aarch64 will not work? With another roofts getting this error every time |
It's normal
Yes. Because you use Exagear, not proot.
Last Ubuntu wont works, only Ubuntu 18, but it now not supported and not receive updates (End of life - EOL) |
Ohhh actually today i build wine 7.0 obb with this but when I installed it android.. GPU driver not available |
Compile LLVMpipe drivers |
LLVM Driver not good.. can i build turnip - zlink? But when i installed virtio-GPU driver copy from another obb and installed.. same GPU driver not available.. |
Can you add support experimental build for aarch64 chroot ? |
At your discretion, I suggested one of the options
Add support for aarch64 to what? To Exagear? There is a proot, use it
Wine has long been available for arm (aarch64, armhf), but it emulates Windows RT, i.e. you will not be able to run normal applications written for Intel processors. Understand this already, you need to use everything for i386, and Exagear performs as Intel processor emulator on top of arm
i386, because Exagear emulates i686 (yes, i686)
This is normal, the most important thing is that you decompress the tar archive with the command I wrote, then these errors will not affect anything
|
Thank you for your all answer Now i understand 😃.. |
@ZhymabekRoman one more time i am disturbing you sorry for that.. Help appreciate thank you 🙂 Every time getting error when i am running ninja.. FATAL: attempted to create non-posix thread; clone_flags == 00004111can't build |
|
Android 12 But yes really just awesome project appreciate your work... Just like real virtual machine.. |
Try to install Termux and run Exagear-For-Termux inside it, UserLand works differently although it is based on Termux. I can't understand what's wrong now - either Android 12 added new restrictions, because of it |
Getting same error on android 8
|
UserLand? |
No userland not working.. with android 8 && termux-exagear And also tried to mount -t /dev exagear-fs/dev Also tried to rootlocalhost:/# ls dev permission denied |
Thanks for all informations ! |
Android 8 && 12 showing GNU/LINUX |
Code example, that reproduce error: #include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <spawn.h>
#include <sys/wait.h>
int main(void) {
pid_t pid;
extern char **environ;
char *spawn_argv[] = {"/bin/date", "--utc", NULL};
if (posix_spawn(&pid, "/bin/date", NULL, NULL,
spawn_argv, environ) != 0) {
perror("spawn");
return 1;
}
int exit_status;
if (waitpid(pid, &exit_status, 0) != 0) {
perror("waitpid");
return 1;
}
printf("date exit status was %d\n", exit_status);
} Idk how solve this error |
What should I do with this code?
|
Just write this example into
|
I have a question from you.. |
Unpack obb with unzip (obb is just zip archive) to any ext* based fs, and using Exagear-For-Termux, or proot, or even chroot (if you have PC/Laptop on linux inside with full root permissions) loggin into your unpacked rootfs image |
No actually i compiled my GPU driver with aarch64-linux-gnu .. where i should place my GPU driver? Or what i should replace? Actually exagear for i386-linux-gnu but my GPU driver is aarch64-linux-gnu that's why asking.. It will work if i place my GPU driver in |
Ahhhh, it's not possible. Compile inside Exagear-For-Termux, or if hangs on errors use proot-distro with QEMU user mode inside i386 environment |
Okay understood.. driver also need with |
What is your GPU, and SoC (Processor, Snapdragon, MediaTek) |
Mediatek 8100 |
Did you try VirGL Overlay? |
Yeah, old syntax is deprecated. New syntax: |
I want to disable |
|
Some findings:
The value 00004111 is a hexadecimal representation of the clone_flags parameter for the clone() system call in Linux. In binary, If we break this binary value down into its bits, and use the meaning of each bit, we can interpret the clone_flags parameter as follows:
So the
Can we fix the problem? I think - probably yes. Why probably - because I don't think we can just fix this problem by patching |
Workaround fix, works only if executable is dynamic linked.
#define _GNU_SOURCE
#include <dlfcn.h>
#include <sys/types.h>
#include <sched.h>
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ...)
{
/* Call the original clone function */
int (*original_clone)(int (*)(void *), void *, int, void *, ...) = dlsym(RTLD_NEXT, "clone");
return original_clone(fn, child_stack, 0, arg);
} Compile: gcc -shared -fPIC -o override.so override.c -ldl And set LD_PRELOAD variable: export LD_PRELOAD=$(pwd)/override.so This workaround fixes the problem by resetting all |
I will give you update |
|
|
Hmmm, yeah, I need more time to debug |
Mey be documents can help for pthread https://eli.thegreenplace.net/2018/launching-linux-threads-and-processes-with-clone/ I am not sure but i found something.. |
|
#define _GNU_SOURCE
#include <signal.h>
#include <sched.h>
static int child_func(void* arg) {
char* buf = (char*)arg;
printf("Child sees buf = \"%s\"\n", buf);
strcpy(buf, "hello from child");
return 0;
}
int main(int argc, char** argv) {
// Allocate stack for child task.
const int STACK_SIZE = 65536;
char* stack = malloc(STACK_SIZE);
if (!stack) {
perror("malloc");
exit(1);
}
// When called with the command-line argument "vm", set the CLONE_VM flag on.
unsigned long flags = 0;
if (argc > 1 && !strcmp(argv[1], "vm")) {
flags |= CLONE_VM;
}
char buf[100];
strcpy(buf, "hello from parent");
if (clone(child_func, stack + STACK_SIZE, CLONE_VM | SIGCHLD, buf) == -1) {
perror("clone");
exit(1);
}
int status;
if (wait(&status) == -1) {
perror("wait");
exit(1);
}
printf("Child exited with status %d. buf = \"%s\"\n", status, buf);
return 0;
} |
I should create Found more information |
No, it's a |
|
|
The text was updated successfully, but these errors were encountered: