diff options
Diffstat (limited to 'results/classifier/deepseek-2-tmp/output/files/829')
| -rw-r--r-- | results/classifier/deepseek-2-tmp/output/files/829 | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/results/classifier/deepseek-2-tmp/output/files/829 b/results/classifier/deepseek-2-tmp/output/files/829 new file mode 100644 index 000000000..d80c5e9c5 --- /dev/null +++ b/results/classifier/deepseek-2-tmp/output/files/829 @@ -0,0 +1,15 @@ + +user space emulation: openat() seems to defeat sysroot path translation +Description of problem: +It appears that the user space emulation code is doing some path manipulation of some syscalls to sometimes prefix them with the sysroot. This seems to be interacting badly sometimes with certain usage patterns. This was noticed because a test suite of various libc calls was failing under `qemu-arm`, and a `strace` of the qemu-arm process revealed that the translated paths were being inconsistently applied. + +In particular, the sequence which fails is: +* create a file in `/tmp/`. +* open `/tmp` itself. This succeeds, but `strace` reveals that it actually opened `SYSROOT/tmp/`. +* `openat(tmpfd, tmpfile_name)` then fails, as the fd provided to openat is actually inside the sysroot, not at `/tmp` as expected. +Steps to reproduce: +1. Get toolchain https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--bleeding-edge-2021.11-1.tar.bz2 +2. Compile attached test program [test_openat.c](/uploads/69eb997256ff29d2178be85531c6b3c6/test_openat.c) +3. Try to run under `qemu-arm`. + +This code passes in non-emulated situations, but fails under user-space emulation. Presumably it would also pass under full system emulation. |