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
Take your Go skills to the next level by learning how to design, develop, and deploy a distributed service. Start from the bare essential...
New
Stop developing web apps with yesterday’s tools. Today, developers are increasingly adopting Clojure as a web-development platform. See f...
New
Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With Seven Languages in Seven Weeks, by Bruce A. Tate, you’ll go beyond the syntax—and...
New
Write Elixir tests that you can be proud of. Dive into Elixir’s test philosophy and gain mastery over the terminology and concepts that u...
New
Bought the Moonlander mechanical keyboard. Cherry Brown MX switches. Arms and wrists have been hurting enough that it’s time I did someth...
New
There’s a whole world of custom keycaps out there that I didn’t know existed!
Check out all of our Keycaps threads here:
https://forum....
New
Continuing the discussion from Thinking about learning Crystal, let’s discuss - I was wondering which languages don’t GC - maybe we can c...
New
Will Swifties’ war on AI fakes spark a deepfake porn reckoning?
New
Node.js v22.14.0 has been released.
Link: Release 2025-02-11, Version 22.14.0 'Jod' (LTS), @aduh95 · nodejs/node · GitHub
New
Open-source implementation of the classic GTA engine now running directly in your browser. Experience the reVC technology demo on DOS.Zon...
New
Categories:
Sub Categories:
Popular Portals
- /elixir
- /rust
- /wasm
- /ruby
- /erlang
- /phoenix
- /keyboards
- /python
- /js
- /rails
- /security
- /go
- /swift
- /vim
- /java
- /clojure
- /emacs
- /haskell
- /typescript
- /svelte
- /onivim
- /kotlin
- /c-plus-plus
- /crystal
- /tailwind
- /react
- /gleam
- /ocaml
- /elm
- /vscode
- /flutter
- /ash
- /html
- /deepseek
- /zig
- /opensuse
- /centos
- /php
- /scala
- /react-native
- /lisp
- /textmate
- /sublime-text
- /nixos
- /debian
- /agda
- /deno
- /django
- /kubuntu
- /arch-linux
- /nodejs
- /ubuntu
- /spring
- /revery
- /manjaro
- /julia
- /diversity
- /lua
- /quarkus
- /markdown









