Files
start-os/core
Aiden McClelland 2aa910a3e8 fix: replace stdio chown with prctl(PR_SET_DUMPABLE) and pipe-wrap
After setuid, the kernel clears the dumpable flag, making /proc/self/
entries owned by root. This broke open("/dev/stderr") for non-root
users inside subcontainers. The previous fix (chowning /proc/self/fd/*)
was dangerous because it chowned whatever file the FD pointed to (could
be the journal socket).

The proper fix is prctl(PR_SET_DUMPABLE, 1) after setuid, which restores
/proc/self/ ownership to the current uid.

Additionally, adds a `pipe-wrap` subcommand that wraps a child process
with piped stdout/stderr, relaying to the original FDs. This ensures all
descendants inherit pipes (which support re-opening via /proc/self/fd/N)
even when the outermost FDs are journal sockets. container-runtime.service
now uses this wrapper.

With pipe-wrap guaranteeing pipe-based FDs, the exec and launch non-TTY
paths no longer need their own pipe+relay threads, eliminating the bug
where exec would hang when a child daemonized (e.g. pg_ctl start).
2026-03-23 01:14:49 -06:00
..
2025-12-22 13:39:38 -07:00
2025-12-31 11:30:57 -07:00
2026-03-20 08:50:54 -06:00
2025-11-07 10:12:05 +00:00
2025-12-22 13:39:38 -07:00

StartOS Backend

Structure

  • startos: This contains the core library for StartOS that supports building startbox.
  • helpers: This contains utility functions used across both startos and js-engine
  • models: This contains types that are shared across startos, js-engine, and helpers

Artifacts

The StartOS backend is packed into a single binary startbox that is symlinked under several different names for different behavior:

  • startd: This is the main daemon of StartOS
  • start-cli: This is a CLI tool that will allow you to issue commands to startd and control it similarly to the UI
  • start-sdk: This is a CLI tool that aids in building and packaging services you wish to deploy to StartOS

Documentation