0m3
The child process does not start with syscall(SYS_clone3, ...) + CLONE_VM
Hello, everyone.
It is necessary that the calling process and the child process are in the same memory space.
Therefore, I use the CLONE_VM flag.
But the child process does not start.
It looks like something is wrong with the allocation of memory for the stack.
Could you please explain the reason?
#define _DEFAULT_SOURCE /* syscall() */
#define _GNU_SOURCE
#define _FILE_OFFSET_BITS 64 /* getrlimit() */
#include <sched.h> /* CLONE_* constants */
#include <linux/sched.h> /* struct clone_args */
#include <sys/syscall.h> /* SYS_* constants */
#include <unistd.h>
#include <stdint.h> /* uintptr_t */
#include <stdio.h>
#include <stdlib.h>
#include <err.h> /* err() */
#include <string.h>
#include <unistd.h>
#include <sys/resource.h>
#include <sys/mman.h>
#include <signal.h>
void spawn(void)
{
struct rlimit rlim;
struct clone_args cl_args;
__u64 stack_size;
__u64 *stackBot;
__u64 *stackTop;
pid_t pid;
memset(&cl_args, 0, sizeof(cl_args));
if (getrlimit(RLIMIT_STACK, &rlim) == -1) {
err(EXIT_FAILURE, "getrlimit");
}
stack_size = rlim.rlim_cur;
stackBot = (__u64 *)
mmap(NULL, stack_size, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_GROWSDOWN |
MAP_STACK, -1, 0);
if (stackBot == MAP_FAILED) {
err(EXIT_FAILURE, "mmap");
}
stackTop = stackBot + (stack_size / sizeof(__u64));
cl_args.flags = CLONE_FILES | CLONE_IO | CLONE_VM;
cl_args.exit_signal = SIGCHLD;
cl_args.stack = (__u64) (uintptr_t) stackTop;
cl_args.stack_size = stack_size;
pid = syscall(SYS_clone3, &cl_args, sizeof(cl_args));
switch(pid) {
case -1:
munmap(stackBot, stack_size);
err(EXIT_FAILURE, "syscall");
case 0: /* Child */
printf("Hello from child!\n");
munmap(stackBot, stack_size);
break;
default: /* Parent */
printf("Hello from parent!\n");
break;
}
}
int
main(int argc, char *argv[])
{
spawn();
printf("Before last while\n");
while(1) {
}
return EXIT_SUCCESS;
}
Most Liked
0m3
Hello, everyone.
The solution is here The child process does not start with syscall(SYS_clone3, …) + CLONE_VM.
BR, Denis
1
Popular Linux topics
Hey everyone,
I am about to receive a work laptop: the Lenovo T490 (could be changed to T490s, unclear as of yet).
I am after the perfe...
New
I am thinking in building or buy a desktop computer for programing, both professionally and on my free time, and my choice of OS is Linux...
New
I am asking for any distro that only has the bare-bones to be able to get a shell in the server and then just install the packages as we ...
New
It is a bit late for RockyLinux to ship their official release, they are still in RC1.
I am ready using AlmaLinux 8.4.
New
Hello, everyone.
It is necessary that the calling process and the child process are in the same memory space.
Therefore, I use the CLON...
New
Can someone help me out? I have been trying to do the same thing as the “Homura Project” which is a game but i decided to make my own Hom...
New
I need help with creating another hacker toolkit like a power-scanner, which in it then starts scanning for open_ports and if it finds an...
New
Other popular topics
Hello Devtalk World!
Please let us know a little about who you are and where you’re from :nerd_face:
New
Algorithms and data structures are much more than abstract concepts. Mastering them enables you to write code that runs faster and more e...
New
Learn from the award-winning programming series that inspired the Elixir language, and go on a step-by-step journey through the most impo...
New
Tailwind CSS is an exciting new CSS framework that allows you to design your site by composing simple utility classes to create complex e...
New
In case anyone else is wondering why Ruby 3 doesn’t show when you do asdf list-all ruby :man_facepalming: do this first:
asdf plugin-upd...
New
Build highly interactive applications without ever leaving Elixir, the way the experts do. Let LiveView take care of performance, scalabi...
New
The V Programming Language
Simple language for building maintainable programs
V is already mentioned couple of times in the forum, but I...
New
zig/http.zig at 7cf2cbb33ef34c1d211135f56d30fe23b6cacd42 · ziglang/zig.
General-purpose programming language and toolchain for maintaini...
New
Use advanced functional programming principles, practical Domain-Driven Design techniques, and production-ready Elixir code to build scal...
New
As digital systems increasingly run the world, mastery of the recurring patterns of software development risk is the key to fast and effe...
New
Categories:
Sub Categories:
Popular Portals
- /elixir
- /rust
- /wasm
- /ruby
- /erlang
- /phoenix
- /keyboards
- /python
- /js
- /rails
- /security
- /go
- /swift
- /vim
- /clojure
- /java
- /emacs
- /haskell
- /typescript
- /svelte
- /onivim
- /kotlin
- /c-plus-plus
- /crystal
- /tailwind
- /react
- /gleam
- /ocaml
- /elm
- /flutter
- /vscode
- /ash
- /html
- /deepseek
- /opensuse
- /zig
- /centos
- /php
- /scala
- /react-native
- /lisp
- /sublime-text
- /textmate
- /nixos
- /debian
- /agda
- /deno
- /django
- /kubuntu
- /arch-linux
- /nodejs
- /ubuntu
- /spring
- /revery
- /manjaro
- /diversity
- /lua
- /julia
- /markdown
- /laravel









