Skip to content
Release v5.1.0
==============

New features
------------

+ Processes under PRoot now appear with their real names, that is,
  they are not renamed "ld-linux.so" or "prooted-..." anymore:

  before:

      $ proot-v4.0.3 ps
        PID TTY          TIME CMD
       7885 pts/11   00:00:00 bash
       8131 pts/11   00:00:00 proot-v4.0.3
       8132 pts/11   00:00:00 ld-2.17.so

      $ proot-v5.0.0 ps
        PID TTY          TIME CMD
       7885 pts/11   00:00:00 bash
       7916 pts/11   00:00:00 proot-v5.0.0
       7917 pts/11   00:00:00 prooted-7916-Jb

  now:

      $ proot-v5.1.0 ps
        PID TTY          TIME CMD
       7885 pts/11   00:00:00 bash
       8585 pts/11   00:00:00 proot-v5.1.0
       8586 pts/11   00:00:00 ps

Fixes
-----

+ It is now possible to use GDB against multi-threaded programs under
  PRoot x86_64 and x86.

+ It is possible to execute x86_64 programs from x86 programs again.

+ It is possible to use x86 ptrace-based programs (strace, gdb, ...)
  under PRoot x86_64 again.

+ The loader is now built with the "build-id" linker option explicitly
  disabled.  This special section might interfere with loaded
  programs.

+ The loader can now load relocatable objects that have a predefined
  base address.

Acknowledgements
----------------

Thanks to Erwan Gouriou, Sébastien Gandon, Christian milkylainen,
Henrik Wallin, and Frank Teo for their bug reports and tests.

Thanks to Jérôme Audu, Yann Droneaud, and Christophe Monat for their
precious help.

Validation
----------

====================  =================  ==============  =================  =========
testsuite                   host distro    guest distro     configurations   comments
====================  =================  ==============  =================  =========
proot-v5.1            Slack-14.1/x86_64            none                N/A          a
proot-v5.1/memcheck   Slack-14.1/x86_64            none                N/A          a
proot-v5.1/asan       Slack-14.1/x86_64            none                N/A          a
proot-v5.1/talleak    Slack-14.1/x86_64            none                N/A          a

proot-v5.1                 OBS */x86_64            none                N/A          b
proot-v5.1                    OBS */x86            none                N/A          c
proot-v5.1              STLinux-2.4/arm            none                N/A          d

libuv-0.10.27         Slack-14.1/x86_64    same as host               none          a
libuv-0.10.27         Slack-14.1/x86_64    same as host   kompat, fake_id0          l
libuv-0.10.27         Slack-14.1/x86_64  Slack-14.1/x86               none          a
libuv-0.10.27         Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          l

ltp-syscall-20130904  Slack-14.1/x86_64    same as host               none          f
ltp-syscall-20130904  Slack-14.1/x86_64    same as host   kompat, fake_id0          n
ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.1/x86               none          j
ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          t

ltp-opt-20130904      Slack-14.1/x86_64    same as host               none          g
ltp-opt-20130904      Slack-14.1/x86_64    same as host   kompat, fake_id0          m
ltp-opt-20130904      Slack-14.1/x86_64  Slack-14.1/x86               none          i
ltp-opt-20130904      Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          u

perl-5.18.1           Slack-14.1/x86_64    same as host               none          a
perl-5.18.1           Slack-14.1/x86_64    same as host   kompat, fake_id0          k
perl-5.18.1           Slack-14.1/x86_64  Slack-14.1/x86               none          a
perl-5.18.1           Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          k

gdb-7.6.1             Slack-14.1/x86_64    same as host               none       r, o
gdb-7.6.1             Slack-14.1/x86_64    same as host   kompat, fake_id0        N/A
gdb-7.6.1             Slack-14.1/x86_64  Slack-14.1/x86               none       r, p
gdb-7.6.1             Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0        N/A

coreutils-8.21        Slack-14.1/x86_64    same as host               none          e
coreutils-8.21        Slack-14.1/x86_64    same as host   kompat, fake_id0          q
coreutils-8.21        Slack-14.1/x86_64  Slack-14.1/x86               none          h
coreutils-8.21        Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          s

proot-v3.2.2          Slack-14.1/x86_64    same as host               none          a
proot-v3.2.2          Slack-14.1/x86_64    same as host           fake_id0         N/A
proot-v3.2.2          Slack-14.1/x86_64  Slack-14.1/x86               none       r, a
proot-v3.2.2          Slack-14.1/x86_64  Slack-14.1/x86           fake_id0         N/A

perl-5.18.1           Slack-14.1/x86_64  Slack-14.1/ARM         qemu-2.2.0          w
coreutils-8.21        Slack-14.1/x86_64  Slack-14.1/ARM         qemu-2.2.0          v

performance           Slack-14.1/x86_64            none               none          XXX
Coverity Scan         Travis-CI                     N/A                N/A          a
Clang 3.3             Slack-14.1/x86_64             N/A                N/A          a
====================  =================  ==============  =================  =========

a: is OK or nothing special to report.

b: test-ptrace01 fails sometimes on x86_64.

c: fails on some AMD CPUs.  No explanations yet.

d: ptrace emulation doesn't work.

e: failures = rm/deep-2, misc/cut-huge-to-eol-range, misc/csplit-heap,
              du/long-from-unreadable, install/basic-1, mkdir/p-3

f: failures = brk01, creat07, execve04, mremap03, msync03, pwrite03,
              pwrite03_64, rmdir02

g: failures = sigaction_4-40, getoverrun_2-3

h: failures = rm/deep-2, du/long-from-unreadable, install/basic-1,
              mkdir/p-3

i: failures = mmap_31-1, timer_getoverrun_2-3

j: failures = bdflush01, creat07, execve04, ftruncate04,
              ftruncate04_64, modify_ldt01, mremap03, msync03,
              pwrite03, pwrite03_64, rmdir02, socketcall01

k: failures = File-Path/Path, HTTP-Tiny/002_croakage,
              HTTP-Tiny/003_agent, Net-Ping/110_icmp_inst,
              Net-Ping/500_ping_icmp, Net-Ping/520_icmp_ttl.t

l: failures = signal_multiple_loops, fs_chown

m: failures = fork_1-1, sem_unlink_3-1, timer_getoverrun_2-3

n: failures = 153/1024

o: failures = break-interp, break, checkpoint.exp, foll-exec,
              foll-vfork.exp

p: failures = break-interp, call-sc, callfuncs, checkpoint,
              find-unmapped, finish, float, foll-exec, foll-vfork,
              hbreak2, interrupt

q: failures = chgrp/basic, chgrp/deref, chgrp/recurse,
              misc/cut-huge-to-eol-range, misc/csplit-heap,
              misc/id-setgid, misc/xattr, du/long-from-unreadable,
              ls/file-type, ls/no-cap, ls/stat-free-color,
              ls/stat-free-symlinks, mv/atomic, mv/atomic2,
              chown/basic, cp/special-bits, cp/preserve-gid,
              install/install-C-root, ls/capability, ls/nameless-uid,
              misc/chroot-credentials, mv/sticky-to-xpart,
              rm/fail-2eperm, rm/no-give-up

r: have to be run in -j1

s: failures = chgrp/basic, chgrp/deref, chgrp/recurse, misc/id-setgid,
              misc/xattr, du/long-from-unreadable, ls/file-type,
              ls/no-cap, ls/stat-free-color, ls/stat-free-symlinks,
              mv/atomic, mv/atomic2, chown/basic, cp/preserve-gid,
              cp/special-bits, install/install-C-root, ls/capability,
              ls/nameless-uid, misc/chroot-credentials,
              mv/sticky-to-xpart, rm/fail-2eperm, rm/no-give-up,

t: failures = 172/1024

u: failures = fork_1-1, mmap_31-1, sem_unlink_3-1, timer_getoverrun_2-3

v: failures = rm/deep-2, misc/env, misc/printenv, split/fail,
              dd/skip-seek, dd/skip-seek-past-file,
              du/long-from-unreadable, install/basic, mkdir/p-3

w: failures = HTTP-Tiny/002_croakage, HTTP-Tiny/003_agent, op/magic