Release v3.2 ============ This release was mostly driven by the requirements of "CARE", a new project based on PRoot that will be released publicly soon on http://reproducible.io. For information, "CARE" is the short for "Comprehensive Archiver for Reproducible Execution". Highlights ---------- + Many bugs exposed by a couple of static code analyzers (Coverity, Clang, ...) and some test-suites (Linux Test Project, libuv, ...) are now fixed. + The "kompat" extension ("-k" option) can now emulate most of the kernel features that would be required by the guest system but that are not available on the host kernel. For example, it can now make programs from Ubuntu 13.04 64-bit run on RedHat 5 64-bit without any further tweaks: rh5-64$ proot -k 3.8 -R ubuntu-13.04-64bit/ ... + On ARM and x86_64, the heap segment is now emulated with a regular memory mapping to ensure this former always exists. This was required because some kernels might put a non-fixed memory mapping right after the regular heap when using some GNU ELF interpreters (ld.so) as loaders. Without the heap segment emulation, some programs like Bash would crash because the heap can't grow anymore: bash: xmalloc: locale.c:73: cannot allocate 2 bytes (0 bytes allocated) Miscellaneous ------------- + When using the "-R" option, the path to the guest rootfs is now bound into the guest rootfs itself. This is required to run programs that search for their DSOs in /proc/self/maps, like VLC for instance. + When using the "-v" option with a level greater than 2, syscalls are now printed as strings instead of numbers, à la strace: $ proot -v 3 true [...] proot info: pid 29847: sysenter start: mmap(0x0, 0x2d141, 0x1, 0x2, 0x3, 0x0) [...] [...] + The article about the migration from ScratchBox2 is now publicly available: https://github.com/cedric-vincent/PRoot/blob/v3.2/doc/articles/howto_migrate_from_scratchbox2.txt Internal changes ---------------- + Tools based on PRoot (CARE, DepsTracker, ATOS, ...) can now easily replace the original command-line interface with their own command-line interface. + It is now possible to chain forged syscalls to a regular syscall. Search for "register_chained_syscall" in the sources for details. + A couple of new helpers are now visible from the extensions. Thanks ------ + Bug reports and tests: Corbin Champion, Maxence Dalmais, and Nicolas Cornu. + Static code analysis: Antoine Moynault and Christophe Guillon. + Patches: Rémi Duraffort. + Unexpected hint: Christophe Monat :) Validation ---------- ==================== ================= ============== ================= ========= testsuite host distro guest distro features comments ==================== ================= ============== ================= ========= proot-v3.2 OBS */x86_64 none N/A a proot-v3.2 OBS */x86 none N/A a proot-v3.2 Ubuntu-10.10/arm none none a proot-v3.2 Slack-14.0/x86_64 none none a proot-v3.2 Slack-14.1/x86_64 none seccomp a proot-v3.2/memcheck Slack-14.1/x86_64 none none a proot-v3.2/memcheck Slack-14.1/x86_64 none seccomp a proot-v3.2/asan Slack-14.1/x86_64 none none a proot-v3.2/asan Slack-14.1/x86_64 none seccomp a proot-v3.2/talleak Slack-14.0/x86_64 none none a proot-v3.2/talleak Slack-14.1/x86_64 none seccomp a libuv-0.10.18 Slack-14.0/x86_64 same as host none b libuv-0.10.18 Slack-14.0/x86_64 same as host kompat b, c libuv-0.10.18 Slack-14.1/x86_64 same as host seccomp a libuv-0.10.18 Slack-14.1/x86_64 same as host seccomp/kompat b libuv-0.10.18 Slack-14.0/x86_64 Slack-14.0/x86 none b libuv-0.10.18 Slack-14.0/x86_64 Slack-14.0/x86 kompat b, c libuv-0.10.18 Slack-14.1/x86_64 Slack-14.0/x86 seccomp a libuv-0.10.18 Slack-14.1/x86_64 Slack-14.0/x86 seccomp/kompat b ltp-syscall-20130904 Slack-14.0/x86_64 same as host none d ltp-syscall-20130904 Slack-14.0/x86_64 same as host kompat d, e ltp-syscall-20130904 Slack-14.1/x86_64 same as host seccomp d ltp-syscall-20130904 Slack-14.1/x86_64 same as host seccomp/kompat e ltp-syscall-20130904 Slack-14.0/x86_64 Slack-14.0/x86 none d, f ltp-syscall-20130904 Slack-14.0/x86_64 Slack-14.0/x86 kompat d, e ,f ltp-syscall-20130904 Slack-14.1/x86_64 Slack-14.0/x86 seccomp d, f ltp-syscall-20130904 Slack-14.1/x86_64 Slack-14.0/x86 seccomp/kompat d, e, f perl-5.18.1 Slack-14.0/x86_64 same as host none h perl-5.18.1 Slack-14.0/x86_64 same as host kompat h, i perl-5.18.1 Slack-14.1/x86_64 same as host seccomp h perl-5.18.1 Slack-14.1/x86_64 same as host seccomp/kompat h perl-5.18.1 Slack-14.0/x86_64 Slack-14.0/x86 none h perl-5.18.1 Slack-14.0/x86_64 Slack-14.0/x86 kompat h, i perl-5.18.1 Slack-14.1/x86_64 Slack-14.0/x86 seccomp h perl-5.18.1 Slack-14.1/x86_64 Slack-14.0/x86 seccomp/kompat h posixtestsuite-1.5.2 Slack-14.0/x86_64 same as host none a posixtestsuite-1.5.2 Slack-14.0/x86_64 same as host kompat a posixtestsuite-1.5.2 Slack-14.1/x86_64 same as host seccomp a posixtestsuite-1.5.2 Slack-14.1/x86_64 same as host seccomp/kompat a posixtestsuite-1.5.2 Slack-14.0/x86_64 Slack-14.0/x86 none j posixtestsuite-1.5.2 Slack-14.0/x86_64 Slack-14.0/x86 kompat j posixtestsuite-1.5.2 Slack-14.1/x86_64 Slack-14.0/x86 seccomp j posixtestsuite-1.5.2 Slack-14.1/x86_64 Slack-14.0/x86 seccomp/kompat j perl-5.16.1 Slack-14.0/x86_64 Slack-14.0/ARM qemu-1.6.1 h coreutils-8.19 Slack-14.0/x86_64 Slack-14.0/ARM qemu-1.6.1 k performance Slack-14.0/x86_64 none none l ==================== ================= ============== ================= ========= Comments -------- a: everything is OK b: failures: - "signal_multiple_loops" (ptrace slowdown -> timeout) c: failures: - "threadpool_cancel_getaddrinfo" (need investigation) d: failures: - "creat07", "execve04" (due to the usage of a loader in PRoot) - "ptrace01", "ptrace02", "ptrace03", "ptrace05" (no ptrace emulation in PRoot) - "rmdir02" (reach the PATH_MAX limit in PRoot) - "mremap03", "msync05", "pwrite03", "pwrite03_64" (due to heap emulation in PRoot) - "msgctl10", "msgctl11", (ptrace slowdown -> timeout) e: failures: - "eventfd2_03", "pselect01", "pselect01_64" (known limitation of the "kompat" extension in PRoot) f: failures: - "modify_ldt01" (need investigation) h: failures: - "cpan/File-Path/t/Path.t", "dist/ExtUtils-Command/t/eu_command.t", "op/magic.t" (known failures due to PRoot) i: failures: - parallel build is broken (need investigation) j: failures: - "pthread_attr_setdetachstate", "pthread_attr_getdetachstate", "pthread_attr_init" (need investigation) k: failures: - "misc/ls-misc", "misc/printenv", "split/fail", "df/total-unprocessed", "dd/skip-seek", "dd/skip-seek-past-file" (due to QEMU user-mode) - "install/basic-1", "mkdir/p-3", "readlink/can-e", "readlink/can-f", "readlink/can-m" (known failures due to PRoot) l: performance regression introduced by commit 7863f562