Ресурс исполняемого пакета XCode, не работающий с песочницей, не может записать в файл «MODULE»;дросселированном - PullRequest
0 голосов
/ 28 февраля 2019

В моем приложении Какао есть двоичный исполняемый ресурс, который подписан мной и запускается из песочницы.Однако, он не работает успешно, и в его stderr есть материал, которого нет, когда я запускаю этот вызов за пределами моего приложения.Программа, которую я запускаю, называется tbl2asn, предоставлена ​​правительством США, и ее исходный код доступен;эта программа скомпилирована вместе со множеством других как часть библиотеки для биологических данных.

Для полноты, это именно тот вызов, который я использую, tbl2asn -V v -a l1 -t inputfile1 -i inputfile2 -o outputfile

В конечном итоге он генерируеттри файла, один из которых указан -o, и два файла в каталоге, из которого запускается программа, из-за флага -V v.

Я приказываю Xcode записать файл -o в NSTemporaryDirectory(), где другие файлы успешно записываются при включенной песочнице, но он не записывает те, которые я хочу, когда включена песочница.Так как процесс завершается с ошибкой в ​​приложении без -V v (что наверняка вызывает попытки записи файлов туда, где находятся ресурсы), это заставляет меня думать, что предпринимаются некоторые попытки ввода-вывода в запрещенные места.

За пределами приложения, когда запускается tbl2asn, в stderr выводится только пара неважных уведомлений, но в приложении, когда я передаю вперед stderr из вызова tbl2asn, это то, что я вижу,

2019-02-28 05:35:47.793894-0800 tbl2asn[67411:9510814] WARNING: The Gestalt selector gestaltSystemVersion is returning 10.9.0 instead of 10.14.0. This is not a bug in Gestalt -- it is a documented limitation. Use NSProcessInfo's operatingSystemVersion property to get correct system version number.
Call location:
2019-02-28 05:35:47.796781-0800 tbl2asn[67411:9510814] 0   CarbonCore                          0x00007fff3a2a5464 ___Gestalt_SystemVersion_block_invoke + 112
2019-02-28 05:35:47.796797-0800 tbl2asn[67411:9510814] 1   libdispatch.dylib                   0x000000010073a7f3 _dispatch_client_callout + 8
2019-02-28 05:35:47.796808-0800 tbl2asn[67411:9510814] 2   libdispatch.dylib                   0x000000010073c4bb _dispatch_once_callout + 87
2019-02-28 05:35:47.796819-0800 tbl2asn[67411:9510814] 3   CarbonCore                          0x00007fff3a246665 _Gestalt_SystemVersion + 946
2019-02-28 05:35:47.796829-0800 tbl2asn[67411:9510814] 4   CarbonCore                          0x00007fff3a23fae8 Gestalt + 147
2019-02-28 05:35:47.796840-0800 tbl2asn[67411:9510814] 5   tbl2asn                             0x000000010037a806 Nlm_GetOpSysString + 22
2019-02-28 05:35:47.796850-0800 tbl2asn[67411:9510814] 6   tbl2asn                             0x0000000100002a63 Nlm_Main + 6163

УДАЛЕНО: dtruss вывод.


ОБНОВЛЕНИЕ: Я точно определил проблему, но я не понимаю, что происходит.

ОПИСАНИЕ: проверка fs_usageвнутри и снаружи песочницы обнаружилось это различие:

В песочнице открытие не удается, и последующие вызовы записи не происходят с вещью, называемой toasn3.msg.В выводе fs_usage из изолированной программы написано THROTTLED;это отсутствует в вызове без песочницы, где вместо этого есть много строк, подобных этой,

22:52:23.615921  write             F=4    B=0x1000                                                                                                                                                        
                    0.000023   tbl2asn.2073266

, где вызовы записи выполняются для вещи toasn3.msg, здесь идентификатор - tbl2asn.2073266

Вот неудачная попытка запуска в «песочнице» fs_usage,

22:38:36.043193  stat64                 [  2]           toasn3.msg                                                                                                                                                            0.000008   tbl2asn.2070594
22:38:36.043203  open                   [  2] (R_____)  toasn3.msg                                                                                                                                                            0.000007   tbl2asn.2070594
22:38:36.060833    THROTTLED                                                                                                                                                                                                  0.200916   mds_stores.2069534
22:38:36.060834  PAGE_IN_FILE      A=0x0104af5000                                                                                                                                                                             0.201197   mds_stores.2069534
22:38:36.061164    PgIn[AT3P]      D=0x01faa58e  B=0x1000   /dev/disk1s1  /.Spotlight-V100/Store-V2/C6256897-E180-4650-85BD-78E01145E16F/reverseDirectoryStore                                                                0.000279 W mds_stores.2069534
22:38:36.061165    PgIn[AT3P]      D=0x01fab2ed  B=0x1000   /dev/disk1s1  /.Spotlight-V100/Store-V2/C6256897-E180-4650-85BD-78E01145E16F/reverseDirectoryStore                                                                0.000224 W mds_stores.2069534
22:38:36.061169    PgIn[AT3P]      D=0x01fa9eca  B=0x1000   /dev/disk1s1  /.Spotlight-V100/Store-V2/C6256897-E180-4650-85BD-78E01145E16F/reverseDirectoryStore                                                                0.000208 W mds_stores.2069534
22:38:36.061187    PgIn[AT3P]      D=0x0060614d  B=0x1000   /dev/disk1s1  /.Spotlight-V100/Store-V2/C6256897-E180-4650-85BD-78E01145E16F/reverseDirectoryStore                                                                0.000211 W mds_stores.2069534
22:38:36.091770  ioctl             F=2  [ 25] <CMD=0x4004667a>                                                                                                                                                                0.000003   tbl2asn.2070594
22:38:36.091772  ioctl             F=2  [ 25] <CMD=0x40487413>                                                                                                                                                                0.000001   tbl2asn.2070594
22:38:36.091791  write             F=2    B=0x25                                                                                                                                                                              0.000005   tbl2asn.2070594
22:38:36.091794  ioctl             F=0   <CMD=0x4004667a>                                                                                                                                                                     0.000003   tbl2asn.2070594
22:38:36.091798  ioctl             F=2  [ 25] <CMD=0x4004667a>                                                                                                                                                                0.000001   tbl2asn.2070594
22:38:36.091799  ioctl             F=2  [ 25] <CMD=0x40487413>                                                                                                                                                                0.000001   tbl2asn.2070594
22:38:36.091802  write             F=2    B=0x25                                                                                                                                                                              0.000001   tbl2asn.2070594
22:38:36.091804  ioctl             F=0   <CMD=0x4004667a>                                                                                                                                                                     0.000001   tbl2asn.2070594
22:38:36.091859  open                   [  2] (_WC_T_)  private/var/folders/8m/bqlpqcq17x1_mgjkg81s2grw0000gn/T/1D6BF273-0837-427B-BA21-ACDB6A2C514D-4072-00001FC00236C89B>>>>>>                                              0.000049   tbl2asn.2070594
22:38:36.092838  close             F=3                                                                                                                                                                                        0.000010   tbl2asn.2070594
22:38:36.094428  read              F=15   B=0x0                                                                                                                                                                               0.282789   SeqKing.2069951
22:38:36.094450  exit                                                                                                                                                                                                         0.000059   tbl2asn.2070594

Вот определение toasn3.msg.Что это за вещь?

MODULE toasn3
$$ ORGANISM, 1
$^   Empty, 1, SEV_WARNING
$^   NotFound, 2, SEV_WARNING
$^   Diff, 3, SEV_WARNING
$$ SOURCE, 2
$^   MultipleQualifiers, 1, SEV_WARNING
$^   DiffQualifiers, 2, SEV_WARNING
$^   Identical, 3, SEV_WARNING
$^   NotFound, 4, SEV_WARNING
$^   GeneticCode, 5, SEV_WARNING
$^   UnwantedQualifiers, 6, SEV_WARNING
$^   MissingOrganism, 7, SEV_WARNING
$^   NotFoundWHole, 9, SEV_WARNING
$^   Multiple, 10, SEV_WARNING
$^   Diff, 11, SEV_WARNING
$^   QualDiffValues, 12, SEV_WARNING
$^   IllegalQual, 13, SEV_WARNING
$^   QualUnknown, 14, SEV_INFO
$$ TAXONOMY, 4
$^   GeneticCode, 1, SEV_ERROR
$$ FEATURE, 5
$^   CannotMapDnaLocToAALoc, 1, SEV_ERROR
$^   BadLocation, 2, SEV_WARNING
$^   CDSNotFound, 3, SEV_WARNING
...