Программа Go в определенном каталоге мгновенно убивается на моем macOS Big Sur

# #macos #go #macos-big-sur

Вопрос:

У меня в проекте есть программа go, которая показывает очень странное поведение. Он нормально запускается из любой папки, но не из той («распаковать»), которую распаковывает мой другой код. Я сделал «cp-R» из этого каталога в «unpack2» и переименовал «распаковать» в «распаковать 1» для ясности. Вот как это выглядит:

 $ ls -lR
total 0
drwxr-xr-x  3 michael  staff  96 23 сен 09:36 unpack1
drwxr-xr-x  3 michael  staff  96 23 сен 09:36 unpack2

./unpack1:
total 206760
-rwxr-xr-x  1 michael  staff  105859154 23 сен 09:23 install

./unpack2:
total 229504
-rwxr-xr-x  1 michael  staff  105859154 23 сен 00:28 install
$ unpack1/install
$ unpack2/install
[1]    34435 killed     unpack2/install
$ 
 

«распаковка1/установка» запускается без проблем
«распаковка1/установка» завершается сбоем

Я дважды проверил, что оба «установить» являются одним и тем же двоичным файлом

P.S. Я использую macbook M1

Комментарии:

1. Как вы проверили, что они являются одним и тем же двоичным файлом? Вы проверили, что они хэшируют (md5, sha1 и т.д.) С одинаковым значением? Кроме того, общая длина 3-й папки больше. Похоже, что существуют некоторые дополнительные файлы, которые вы удалили из выходных данных.

2. Я использовал команду cmp для сравнения файлов. Каталоги одинаковые (ls -lasR), показывают одинаковое содержимое. Я вижу, что «общее» число отличается, но я не могу понять, в чем эта разница. папка «распаковать» (перед переименованием в «распаковать 2» была создана в коде go (ОС. Makedirs()) и «unpack1» был создан «cp-R»

3. Папка создается с помощью следующего вызова: os.MkdirAll(путь, 0755)

4. Спасибо. Я думаю, что трудно сказать что-либо полезное, основываясь на имеющейся информации. Я полагаю, что исходный код двоичных файлов недоступен (известен только тот факт, что они написаны на Go), верно? Если это так, я мог думать о двух способах изучения: 1) использовать gdb или lldb запустить двоичный файл и задать его для печати трассировки стека после Binary аварий; 2) Использование truss или DTruss или что пытаться отследить системные вызовы, сделанные двоичные файлы и попытаться сделать из бревна разница в поведении.

5. У меня есть исходный код — это мой проект. Существуют ли какие-то полезные подходы к отладке в этом случае?