`cat` ведет себя странно в смонтированном каталоге virtio

Мне удалось решить проблему. При компиляции Gitlab -Runner встраивает в себя набор готовых образов докеров для каждой архитектуры, которую он поддерживает, используя go -bindata. Когда вы впервые запускаете gitlab -runner, он извлекает встроенный двоичный файл, подходящий для вашей системы, и пытается использовать его для выполнения своих задач. Поскольку я нацеливался на исполняющую программу docker на машине x86, она загружала то, что считала образом x86, мой патч предоставил ему образ AMD64. В результате docker выдавал ошибку, а gitlab -runner отбрасывал сборку и жаловался. Хитрость заключалась в том, чтобы вернуться к чертежной доске и скомпилировать готовый образ x86. Я только понял, как это сделать, вызвав готовый образ непосредственно из докера, что можно сделать только после того, как gitlab -runner уже установлен и запущен хотя бы один раз.

1
25.04.2019, 15:27
1 ответ

Фактически catне зависит от $TMPDIR, но перенаправление оболочки <<зависит.

В этом случае кажется, что catпытается выполнить fstat()наstdin(fd 0 ), и по какой-то причине это не удается (из strace):

fstat(0, 0x7ffe16cc1ec0)                = -1 ENOENT (No such file or directory)

В обычных условиях это не проблема:

strace -f cat <<FOO
> bar
> FOO
execve("/usr/bin/cat", ["cat"], [/* 91 vars */]) = 0

...

fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0),...}) = 0
fstat(0, {st_mode=S_IFREG|0600, st_size=4,...}) = 0
fadvise64(0, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
mmap(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4844156000
read(0, "bar\n", 131072)                = 4
write(1, "bar\n", 4bar
)                    = 4
read(0, "", 131072)                     = 0
munmap(0x7f4844156000, 139264)          = 0
close(0)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

Итак, еще раз :Это не ошибка в cat, а какая-то ошибка в виртуальной среде.

1
27.01.2020, 23:41

Теги

Похожие вопросы